1
1
using System ;
2
+ using System . Diagnostics . CodeAnalysis ;
2
3
using System . Linq ;
3
4
4
5
using CodeJam . Strings ;
@@ -32,6 +33,7 @@ public string Prepend(string[] input, string[] prepend)
32
33
=> input . Prepend ( prepend ) . Join ( ", " ) ;
33
34
34
35
[ Test ]
36
+ [ SuppressMessage ( "ReSharper" , "PossibleMultipleEnumeration" ) ]
35
37
public void IsFirst ( )
36
38
{
37
39
var src = new [ ] { "a" , "b" , "c" } ;
@@ -46,17 +48,37 @@ public void IsFirst()
46
48
47
49
// Slow path
48
50
var enSrc = src . Select ( i => i ) ;
49
- // ReSharper disable PossibleMultipleEnumeration
50
51
Assert . IsTrue ( enSrc . IsFirst ( "a" ) , "#A06" ) ;
51
52
Assert . IsFalse ( enSrc . IsFirst ( "b" ) , "#A07" ) ;
52
53
53
54
Assert . IsTrue ( enSrc . IsFirst ( "a" , null ) , "#A08" ) ;
54
55
Assert . IsFalse ( enSrc . IsFirst ( "A" , null ) , "#A09" ) ;
55
56
Assert . IsTrue ( enSrc . IsFirst ( "A" , StringComparer . OrdinalIgnoreCase ) , "#A10" ) ;
56
- // ReSharper restore PossibleMultipleEnumeration
57
57
}
58
58
59
59
[ Test ]
60
+ [ SuppressMessage ( "ReSharper" , "PossibleMultipleEnumeration" ) ]
61
+ public void IsFirstForEmptyCollections ( )
62
+ {
63
+ var src = new string [ 0 ] ;
64
+
65
+ // Fast path
66
+ Assert . IsFalse ( src . IsFirst ( "a" ) , "#A01" ) ;
67
+ Assert . IsFalse ( src . IsFirst ( "b" ) , "#A02" ) ;
68
+ Assert . IsFalse ( src . IsFirst ( "A" , null ) , "#A03" ) ;
69
+ Assert . IsFalse ( src . IsFirst ( "A" , StringComparer . OrdinalIgnoreCase ) , "#A04" ) ;
70
+
71
+ // Slow path
72
+ var enSrc = src . Select ( i => i ) ;
73
+ Assert . IsFalse ( enSrc . IsFirst ( "a" ) , "#A05" ) ;
74
+ Assert . IsFalse ( enSrc . IsFirst ( "b" ) , "#A06" ) ;
75
+
76
+ Assert . IsFalse ( enSrc . IsFirst ( "a" , null ) , "#A07" ) ;
77
+ Assert . IsFalse ( enSrc . IsFirst ( "A" , StringComparer . OrdinalIgnoreCase ) , "#A08" ) ;
78
+ }
79
+
80
+ [ Test ]
81
+ [ SuppressMessage ( "ReSharper" , "PossibleMultipleEnumeration" ) ]
60
82
public void IsLast ( )
61
83
{
62
84
var src = new [ ] { "a" , "b" , "c" } ;
@@ -71,14 +93,32 @@ public void IsLast()
71
93
72
94
// Slow path
73
95
var enSrc = src . Select ( i => i ) ;
74
- // ReSharper disable PossibleMultipleEnumeration
75
96
Assert . IsTrue ( enSrc . IsLast ( "c" ) , "#A06" ) ;
76
97
Assert . IsFalse ( enSrc . IsLast ( "b" ) , "#A07" ) ;
77
98
78
99
Assert . IsTrue ( enSrc . IsLast ( "c" , null ) , "#A08" ) ;
79
100
Assert . IsFalse ( enSrc . IsLast ( "C" , null ) , "#A09" ) ;
80
101
Assert . IsTrue ( enSrc . IsLast ( "C" , StringComparer . OrdinalIgnoreCase ) , "#A10" ) ;
81
- // ReSharper restore PossibleMultipleEnumeration
102
+ }
103
+
104
+ [ Test ]
105
+ [ SuppressMessage ( "ReSharper" , "PossibleMultipleEnumeration" ) ]
106
+ public void IsLastForEmptyCollections ( )
107
+ {
108
+ var src = new string [ 0 ] ;
109
+
110
+ // Fast path
111
+ Assert . IsFalse ( src . IsLast ( "c" ) , "#A01" ) ;
112
+ Assert . IsFalse ( src . IsLast ( "b" ) , "#A02" ) ;
113
+ Assert . IsFalse ( src . IsLast ( "c" , null ) , "#A03" ) ;
114
+ Assert . IsFalse ( src . IsLast ( "C" , StringComparer . OrdinalIgnoreCase ) , "#A04" ) ;
115
+
116
+ // Slow path
117
+ var enSrc = src . Select ( i => i ) ;
118
+ Assert . IsFalse ( enSrc . IsLast ( "c" ) , "#A05" ) ;
119
+ Assert . IsFalse ( enSrc . IsLast ( "b" ) , "#A06" ) ;
120
+ Assert . IsFalse ( enSrc . IsLast ( "C" , null ) , "#A07" ) ;
121
+ Assert . IsFalse ( enSrc . IsLast ( "C" , StringComparer . OrdinalIgnoreCase ) , "#A08" ) ;
82
122
}
83
123
}
84
124
}
0 commit comments