@@ -83,7 +83,7 @@ public void FilterLines_RemovesSingleLine()
8383 {
8484 var builder = new StringBuilder ( "line1\n line2\n line3" ) ;
8585
86- builder . FilterLines ( line => line == "line2" ) ;
86+ builder . FilterLines ( line => line is "line2" ) ;
8787
8888 Assert . Equal ( "line1\n line3" , builder . ToString ( ) ) ;
8989 }
@@ -154,7 +154,7 @@ public void FilterLines_PreservesTrailingNewline()
154154 {
155155 var builder = new StringBuilder ( "line1\n line2\n " ) ;
156156
157- builder . FilterLines ( line => line == "line2" ) ;
157+ builder . FilterLines ( line => line is "line2" ) ;
158158
159159 Assert . Equal ( "line1\n " , builder . ToString ( ) ) ;
160160 }
@@ -164,7 +164,7 @@ public void FilterLines_DoesNotAddTrailingNewlineWhenOriginalLacked()
164164 {
165165 var builder = new StringBuilder ( "line1\n line2" ) ;
166166
167- builder . FilterLines ( line => line == "line1" ) ;
167+ builder . FilterLines ( line => line is "line1" ) ;
168168
169169 Assert . Equal ( "line2" , builder . ToString ( ) ) ;
170170 }
@@ -174,7 +174,7 @@ public void FilterLines_HandlesEmptyLines()
174174 {
175175 var builder = new StringBuilder ( "line1\n \n line3" ) ;
176176
177- builder . FilterLines ( string . IsNullOrEmpty ) ;
177+ builder . FilterLines ( line => line . Length == 0 ) ;
178178
179179 Assert . Equal ( "line1\n line3" , builder . ToString ( ) ) ;
180180 }
@@ -184,7 +184,7 @@ public void FilterLines_KeepsEmptyLines()
184184 {
185185 var builder = new StringBuilder ( "line1\n \n line3" ) ;
186186
187- builder . FilterLines ( line => line == "line1" ) ;
187+ builder . FilterLines ( line => line is "line1" ) ;
188188
189189 Assert . Equal ( "\n line3" , builder . ToString ( ) ) ;
190190 }
@@ -204,7 +204,7 @@ public void FilterLines_RemovesFirstLine()
204204 {
205205 var builder = new StringBuilder ( "remove\n keep1\n keep2" ) ;
206206
207- builder . FilterLines ( line => line == "remove" ) ;
207+ builder . FilterLines ( line => line is "remove" ) ;
208208
209209 Assert . Equal ( "keep1\n keep2" , builder . ToString ( ) ) ;
210210 }
@@ -214,7 +214,7 @@ public void FilterLines_RemovesLastLine()
214214 {
215215 var builder = new StringBuilder ( "keep1\n keep2\n remove" ) ;
216216
217- builder . FilterLines ( line => line == "remove" ) ;
217+ builder . FilterLines ( line => line is "remove" ) ;
218218
219219 Assert . Equal ( "keep1\n keep2" , builder . ToString ( ) ) ;
220220 }
@@ -224,7 +224,7 @@ public void FilterLines_RemovesLastLineWithTrailingNewline()
224224 {
225225 var builder = new StringBuilder ( "keep1\n keep2\n remove\n " ) ;
226226
227- builder . FilterLines ( line => line == "remove" ) ;
227+ builder . FilterLines ( line => line is "remove" ) ;
228228
229229 Assert . Equal ( "keep1\n keep2\n " , builder . ToString ( ) ) ;
230230 }
@@ -234,7 +234,19 @@ public void FilterLines_ComplexPredicate()
234234 {
235235 var builder = new StringBuilder ( "abc123\n def456\n ghi789\n jkl012" ) ;
236236
237- builder . FilterLines ( line => line . Any ( char . IsDigit ) && line . Contains ( '4' ) ) ;
237+ builder . FilterLines ( line =>
238+ {
239+ var hasDigit = false ;
240+ foreach ( var c in line )
241+ {
242+ if ( char . IsDigit ( c ) )
243+ {
244+ hasDigit = true ;
245+ break ;
246+ }
247+ }
248+ return hasDigit && line . Contains ( '4' ) ;
249+ } ) ;
238250
239251 Assert . Equal ( "abc123\n ghi789\n jkl012" , builder . ToString ( ) ) ;
240252 }
@@ -244,7 +256,7 @@ public void FilterLines_WindowsLineEndings()
244256 {
245257 var builder = new StringBuilder ( "line1\r \n line2\r \n line3" ) ;
246258
247- builder . FilterLines ( line => line == "line2" ) ;
259+ builder . FilterLines ( line => line is "line2" ) ;
248260
249261 // Note: StringReader normalizes \r\n to \n
250262 Assert . Equal ( "line1\n line3" , builder . ToString ( ) ) ;
@@ -255,7 +267,7 @@ public void FilterLines_MixedLineEndings()
255267 {
256268 var builder = new StringBuilder ( "line1\n line2\r \n line3" ) ;
257269
258- builder . FilterLines ( line => line == "line2" ) ;
270+ builder . FilterLines ( line => line is "line2" ) ;
259271
260272 Assert . Equal ( "line1\n line3" , builder . ToString ( ) ) ;
261273 }
@@ -266,7 +278,7 @@ public void FilterLines_LargeContent()
266278 var lines = Enumerable . Range ( 1 , 1000 ) . Select ( i => $ "line{ i } ") ;
267279 var builder = new StringBuilder ( string . Join ( '\n ' , lines ) ) ;
268280
269- builder . FilterLines ( line => int . Parse ( line [ 4 .. ] ) % 2 == 0 ) ;
281+ builder . FilterLines ( line => int . Parse ( line . Slice ( 4 ) ) % 2 == 0 ) ;
270282
271283 var remaining = builder . ToString ( ) . Split ( '\n ' ) ;
272284 Assert . Equal ( 500 , remaining . Length ) ;
@@ -278,7 +290,7 @@ public void FilterLines_PreservesWhitespace()
278290 {
279291 var builder = new StringBuilder ( " line1 \n \t line2\t \n line3 " ) ;
280292
281- builder . FilterLines ( line => line . Trim ( ) == "line2" ) ;
293+ builder . FilterLines ( line => line . Trim ( ) is "line2" ) ;
282294
283295 Assert . Equal ( " line1 \n line3 " , builder . ToString ( ) ) ;
284296 }
0 commit comments