@@ -64,5 +64,228 @@ public void OperatorPlusReferenceTest ()
6464 Assert . AreNotEqual ( IntPtr . Zero , one . Handle , "Handle must be != IntPtr.Zero" ) ;
6565 Assert . AreNotEqual ( IntPtr . Zero , two . Handle , "Handle must be != IntPtr.Zero" ) ;
6666 }
67+
68+ [ Test ]
69+ public void OperatorAdd_BothNull ( )
70+ {
71+ NSMutableSet first = null ;
72+ NSMutableSet second = null ;
73+ var result = first + second ;
74+ Assert . IsNull ( result , "BothNull should return null" ) ;
75+ }
76+
77+ [ Test ]
78+ public void OperatorAdd_FirstNull_SecondNonEmpty ( )
79+ {
80+ NSMutableSet first = null ;
81+ using ( var second = new NSMutableSet ( "1" , "2" ) )
82+ using ( var result = first + second ) {
83+ Assert . IsNotNull ( result , "FirstNull should return new set" ) ;
84+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "FirstNull Count" ) ;
85+ Assert . IsTrue ( result . Contains ( "1" ) , "FirstNull Contains 1" ) ;
86+ Assert . IsTrue ( result . Contains ( "2" ) , "FirstNull Contains 2" ) ;
87+ }
88+ }
89+
90+ [ Test ]
91+ public void OperatorAdd_FirstNull_SecondEmpty ( )
92+ {
93+ NSMutableSet first = null ;
94+ using ( var second = new NSMutableSet ( ) )
95+ using ( var result = first + second ) {
96+ Assert . IsNotNull ( result , "FirstNull SecondEmpty should return new set" ) ;
97+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "FirstNull SecondEmpty Count" ) ;
98+ }
99+ }
100+
101+ [ Test ]
102+ public void OperatorAdd_FirstNonEmpty_SecondNull ( )
103+ {
104+ using ( var first = new NSMutableSet ( "1" , "2" ) )
105+ using ( var result = first + null ) {
106+ Assert . IsNotNull ( result , "SecondNull should return new set" ) ;
107+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "SecondNull Count" ) ;
108+ Assert . IsTrue ( result . Contains ( "1" ) , "SecondNull Contains 1" ) ;
109+ Assert . IsTrue ( result . Contains ( "2" ) , "SecondNull Contains 2" ) ;
110+ }
111+ }
112+
113+ [ Test ]
114+ public void OperatorAdd_FirstEmpty_SecondNull ( )
115+ {
116+ using ( var first = new NSMutableSet ( ) )
117+ using ( var result = first + null ) {
118+ Assert . IsNotNull ( result , "FirstEmpty SecondNull should return new set" ) ;
119+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "FirstEmpty SecondNull Count" ) ;
120+ }
121+ }
122+
123+ [ Test ]
124+ public void OperatorAdd_FirstEmpty_SecondNonEmpty ( )
125+ {
126+ using ( var first = new NSMutableSet ( ) )
127+ using ( var second = new NSMutableSet ( "1" , "2" ) )
128+ using ( var result = first + second ) {
129+ Assert . IsNotNull ( result , "FirstEmpty should return copy of second" ) ;
130+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "FirstEmpty Count" ) ;
131+ Assert . IsTrue ( result . Contains ( "1" ) , "FirstEmpty Contains 1" ) ;
132+ Assert . IsTrue ( result . Contains ( "2" ) , "FirstEmpty Contains 2" ) ;
133+ }
134+ }
135+
136+ [ Test ]
137+ public void OperatorAdd_FirstNonEmpty_SecondEmpty ( )
138+ {
139+ using ( var first = new NSMutableSet ( "1" , "2" ) )
140+ using ( var second = new NSMutableSet ( ) )
141+ using ( var result = first + second ) {
142+ Assert . IsNotNull ( result , "SecondEmpty should return copy of first" ) ;
143+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "SecondEmpty Count" ) ;
144+ Assert . IsTrue ( result . Contains ( "1" ) , "SecondEmpty Contains 1" ) ;
145+ Assert . IsTrue ( result . Contains ( "2" ) , "SecondEmpty Contains 2" ) ;
146+ }
147+ }
148+
149+ [ Test ]
150+ public void OperatorAdd_BothEmpty ( )
151+ {
152+ using ( var first = new NSMutableSet ( ) )
153+ using ( var second = new NSMutableSet ( ) )
154+ using ( var result = first + second ) {
155+ Assert . IsNotNull ( result , "BothEmpty should return new empty set" ) ;
156+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "BothEmpty Count" ) ;
157+ }
158+ }
159+
160+ [ Test ]
161+ public void OperatorAdd_WithOverlappingElements ( )
162+ {
163+ using ( var first = new NSMutableSet ( "1" , "2" , "3" ) )
164+ using ( var second = new NSMutableSet ( "2" , "3" , "4" ) )
165+ using ( var result = first + second ) {
166+ Assert . IsNotNull ( result , "Overlapping should return new set" ) ;
167+ Assert . AreEqual ( ( nuint ) 4 , result . Count , "Overlapping Count" ) ;
168+ Assert . IsTrue ( result . Contains ( "1" ) , "Overlapping Contains 1" ) ;
169+ Assert . IsTrue ( result . Contains ( "2" ) , "Overlapping Contains 2" ) ;
170+ Assert . IsTrue ( result . Contains ( "3" ) , "Overlapping Contains 3" ) ;
171+ Assert . IsTrue ( result . Contains ( "4" ) , "Overlapping Contains 4" ) ;
172+ }
173+ }
174+
175+ [ Test ]
176+ public void OperatorSubtract_FirstNull ( )
177+ {
178+ NSMutableSet first = null ;
179+ using ( var second = new NSMutableSet ( "1" , "2" ) )
180+ {
181+ var result = first - second ;
182+ Assert . IsNull ( result , "FirstNull should return null" ) ;
183+ }
184+ }
185+
186+ [ Test ]
187+ public void OperatorSubtract_SecondNull ( )
188+ {
189+ using ( var first = new NSMutableSet ( "1" , "2" ) )
190+ using ( var result = first - null ) {
191+ Assert . IsNotNull ( result , "SecondNull should return copy of first" ) ;
192+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "SecondNull Count" ) ;
193+ Assert . IsTrue ( result . Contains ( "1" ) , "SecondNull Contains 1" ) ;
194+ Assert . IsTrue ( result . Contains ( "2" ) , "SecondNull Contains 2" ) ;
195+ }
196+ }
197+
198+ [ Test ]
199+ public void OperatorSubtract_BothNull ( )
200+ {
201+ NSMutableSet first = null ;
202+ NSMutableSet second = null ;
203+ var result = first - second ;
204+ Assert . IsNull ( result , "BothNull should return null" ) ;
205+ }
206+
207+ [ Test ]
208+ public void OperatorSubtract_FirstEmpty ( )
209+ {
210+ using ( var first = new NSMutableSet ( ) )
211+ using ( var second = new NSMutableSet ( "1" , "2" ) )
212+ using ( var result = first - second ) {
213+ Assert . IsNotNull ( result , "FirstEmpty should return empty set" ) ;
214+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "FirstEmpty Count" ) ;
215+ }
216+ }
217+
218+ [ Test ]
219+ public void OperatorSubtract_SecondEmpty ( )
220+ {
221+ using ( var first = new NSMutableSet ( "1" , "2" ) )
222+ using ( var second = new NSMutableSet ( ) )
223+ using ( var result = first - second ) {
224+ Assert . IsNotNull ( result , "SecondEmpty should return copy of first" ) ;
225+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "SecondEmpty Count" ) ;
226+ Assert . IsTrue ( result . Contains ( "1" ) , "SecondEmpty Contains 1" ) ;
227+ Assert . IsTrue ( result . Contains ( "2" ) , "SecondEmpty Contains 2" ) ;
228+ }
229+ }
230+
231+ [ Test ]
232+ public void OperatorSubtract_BothEmpty ( )
233+ {
234+ using ( var first = new NSMutableSet ( ) )
235+ using ( var second = new NSMutableSet ( ) )
236+ using ( var result = first - second ) {
237+ Assert . IsNotNull ( result , "BothEmpty should return empty set" ) ;
238+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "BothEmpty Count" ) ;
239+ }
240+ }
241+
242+ [ Test ]
243+ public void OperatorSubtract_NoOverlap ( )
244+ {
245+ using ( var first = new NSMutableSet ( "1" , "2" ) )
246+ using ( var second = new NSMutableSet ( "3" , "4" ) )
247+ using ( var result = first - second ) {
248+ Assert . IsNotNull ( result , "NoOverlap should return copy of first" ) ;
249+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "NoOverlap Count" ) ;
250+ Assert . IsTrue ( result . Contains ( "1" ) , "NoOverlap Contains 1" ) ;
251+ Assert . IsTrue ( result . Contains ( "2" ) , "NoOverlap Contains 2" ) ;
252+ }
253+ }
254+
255+ [ Test ]
256+ public void OperatorSubtract_PartialOverlap ( )
257+ {
258+ using ( var first = new NSMutableSet ( "1" , "2" , "3" ) )
259+ using ( var second = new NSMutableSet ( "2" , "3" , "4" ) )
260+ using ( var result = first - second ) {
261+ Assert . IsNotNull ( result , "PartialOverlap should return difference" ) ;
262+ Assert . AreEqual ( ( nuint ) 1 , result . Count , "PartialOverlap Count" ) ;
263+ Assert . IsTrue ( result . Contains ( "1" ) , "PartialOverlap Contains 1" ) ;
264+ Assert . IsFalse ( result . Contains ( "2" ) , "PartialOverlap Not Contains 2" ) ;
265+ Assert . IsFalse ( result . Contains ( "3" ) , "PartialOverlap Not Contains 3" ) ;
266+ }
267+ }
268+
269+ [ Test ]
270+ public void OperatorSubtract_CompleteOverlap ( )
271+ {
272+ using ( var first = new NSMutableSet ( "1" , "2" , "3" ) )
273+ using ( var second = new NSMutableSet ( "1" , "2" , "3" ) )
274+ using ( var result = first - second ) {
275+ Assert . IsNotNull ( result , "CompleteOverlap should return empty set" ) ;
276+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "CompleteOverlap Count" ) ;
277+ }
278+ }
279+
280+ [ Test ]
281+ public void OperatorSubtract_SecondIsSupersetOfFirst ( )
282+ {
283+ using ( var first = new NSMutableSet ( "1" , "2" ) )
284+ using ( var second = new NSMutableSet ( "1" , "2" , "3" , "4" ) )
285+ using ( var result = first - second ) {
286+ Assert . IsNotNull ( result , "Superset should return empty set" ) ;
287+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "Superset Count" ) ;
288+ }
289+ }
67290 }
68291}
0 commit comments