@@ -77,6 +77,96 @@ public void RandomOperationsTest()
7777 }
7878 }
7979
80+ [ Fact ]
81+ public void SetEqualsMismatchedComparersOriginInsensitiveOtherSensitiveReturnsTrue ( )
82+ {
83+ var ignoreCaseSet = ImmutableSortedSet . Create ( StringComparer . OrdinalIgnoreCase , "a" ) ;
84+ var sensitiveSet = ImmutableSortedSet . Create ( StringComparer . Ordinal , "a" , "A" ) ;
85+
86+ Assert . True ( ignoreCaseSet . SetEquals ( sensitiveSet ) ) ;
87+ }
88+
89+ [ Fact ]
90+ public void SetEqualsMismatchedComparersOriginSensitiveOtherInsensitiveReturnsFalse ( )
91+ {
92+ var sensitiveSetMain = ImmutableSortedSet . Create ( StringComparer . Ordinal , "a" ) ;
93+ var insensitiveMutable = new SortedSet < string > ( StringComparer . OrdinalIgnoreCase ) { "a" , "A" } ;
94+
95+ Assert . False ( sensitiveSetMain . SetEquals ( insensitiveMutable ) ) ;
96+ }
97+
98+ [ Fact ]
99+ public void SetEqualsICollectionWithDuplicatesValidatesCorrectness ( )
100+ {
101+ var ignoreCaseSet = ImmutableSortedSet . Create ( StringComparer . OrdinalIgnoreCase , "a" ) ;
102+ var listWithDupes = new List < string > { "a" , "a" , "a" , "a" } ;
103+
104+ Assert . True ( ignoreCaseSet . SetEquals ( listWithDupes ) ) ;
105+ }
106+
107+ [ Fact ]
108+ public void SetEqualsDifferentContentReturnsFalse ( )
109+ {
110+ var ignoreCaseSet = ImmutableSortedSet . Create ( StringComparer . OrdinalIgnoreCase , "a" ) ;
111+ var setB = ImmutableSortedSet . Create ( StringComparer . Ordinal , "b" ) ;
112+
113+ Assert . False ( ignoreCaseSet . SetEquals ( setB ) ) ;
114+ }
115+
116+ [ Fact ]
117+ public void SetEqualsMismatchedComparersOtherCountSmallerReturnsFalse ( )
118+ {
119+ var originTwoElements = ImmutableSortedSet . Create ( StringComparer . OrdinalIgnoreCase , "a" , "b" ) ;
120+ var otherOneElement = ImmutableSortedSet . Create ( StringComparer . Ordinal , "a" ) ;
121+
122+ Assert . False ( originTwoElements . SetEquals ( otherOneElement ) ) ;
123+ }
124+
125+ [ Fact ]
126+ public void SetEqualsMatchedComparersDifferentCountsReturnsFalse ( )
127+ {
128+ var matchedSet1 = ImmutableSortedSet . Create ( StringComparer . Ordinal , "1" , "2" ) ;
129+ var matchedSet2 = ImmutableSortedSet . Create ( StringComparer . Ordinal , "1" ) ;
130+
131+ Assert . False ( matchedSet1 . SetEquals ( matchedSet2 ) ) ;
132+ }
133+
134+ [ Fact ]
135+ public void SetEqualsMatchedComparersSameContentReturnsTrue ( )
136+ {
137+ var matchedSet1 = ImmutableSortedSet . Create ( StringComparer . Ordinal , "x" , "y" ) ;
138+ var matchedSet2 = ImmutableSortedSet . Create ( StringComparer . Ordinal , "y" , "x" ) ;
139+
140+ Assert . True ( matchedSet1 . SetEquals ( matchedSet2 ) ) ;
141+ }
142+
143+ [ Fact ]
144+ public void SetEqualsEmptySetsDifferentComparersReturnsTrue ( )
145+ {
146+ var empty1 = ImmutableSortedSet < string > . Empty . WithComparer ( StringComparer . Ordinal ) ;
147+ var empty2 = ImmutableSortedSet < string > . Empty . WithComparer ( StringComparer . OrdinalIgnoreCase ) ;
148+
149+ Assert . True ( empty1 . SetEquals ( empty2 ) ) ;
150+ }
151+
152+ [ Fact ]
153+ public void SetEqualsMismatchedComparersOriginSensitiveOtherInsensitiveSameCountReturnsFalse ( )
154+ {
155+ var sensitiveSet = ImmutableSortedSet . Create ( StringComparer . Ordinal , "a" , "A" ) ;
156+ var insensitiveSet = ImmutableSortedSet . Create ( StringComparer . OrdinalIgnoreCase , "a" , "b" ) ;
157+
158+ Assert . False ( sensitiveSet . SetEquals ( insensitiveSet ) ) ;
159+ }
160+
161+ [ Fact ]
162+ public void SetEqualsMismatchedComparersOtherIsLargerReturnsFalse ( )
163+ {
164+ var origin = ImmutableSortedSet . Create ( StringComparer . OrdinalIgnoreCase , "a" ) ;
165+ var other = ImmutableSortedSet . Create ( StringComparer . Ordinal , "a" , "b" ) ;
166+
167+ Assert . False ( origin . SetEquals ( other ) ) ;
168+ }
169+
80170 [ Fact ]
81171 public void CustomSort ( )
82172 {
0 commit comments