@@ -64,5 +64,227 @@ 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+ var result = first - second ;
181+ Assert . IsNull ( result , "FirstNull should return null" ) ;
182+ }
183+ }
184+
185+ [ Test ]
186+ public void OperatorSubtract_SecondNull ( )
187+ {
188+ using ( var first = new NSMutableSet ( "1" , "2" ) )
189+ using ( var result = first - null ) {
190+ Assert . IsNotNull ( result , "SecondNull should return copy of first" ) ;
191+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "SecondNull Count" ) ;
192+ Assert . IsTrue ( result . Contains ( "1" ) , "SecondNull Contains 1" ) ;
193+ Assert . IsTrue ( result . Contains ( "2" ) , "SecondNull Contains 2" ) ;
194+ }
195+ }
196+
197+ [ Test ]
198+ public void OperatorSubtract_BothNull ( )
199+ {
200+ NSMutableSet first = null ;
201+ NSMutableSet second = null ;
202+ var result = first - second ;
203+ Assert . IsNull ( result , "BothNull should return null" ) ;
204+ }
205+
206+ [ Test ]
207+ public void OperatorSubtract_FirstEmpty ( )
208+ {
209+ using ( var first = new NSMutableSet ( ) )
210+ using ( var second = new NSMutableSet ( "1" , "2" ) )
211+ using ( var result = first - second ) {
212+ Assert . IsNotNull ( result , "FirstEmpty should return empty set" ) ;
213+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "FirstEmpty Count" ) ;
214+ }
215+ }
216+
217+ [ Test ]
218+ public void OperatorSubtract_SecondEmpty ( )
219+ {
220+ using ( var first = new NSMutableSet ( "1" , "2" ) )
221+ using ( var second = new NSMutableSet ( ) )
222+ using ( var result = first - second ) {
223+ Assert . IsNotNull ( result , "SecondEmpty should return copy of first" ) ;
224+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "SecondEmpty Count" ) ;
225+ Assert . IsTrue ( result . Contains ( "1" ) , "SecondEmpty Contains 1" ) ;
226+ Assert . IsTrue ( result . Contains ( "2" ) , "SecondEmpty Contains 2" ) ;
227+ }
228+ }
229+
230+ [ Test ]
231+ public void OperatorSubtract_BothEmpty ( )
232+ {
233+ using ( var first = new NSMutableSet ( ) )
234+ using ( var second = new NSMutableSet ( ) )
235+ using ( var result = first - second ) {
236+ Assert . IsNotNull ( result , "BothEmpty should return empty set" ) ;
237+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "BothEmpty Count" ) ;
238+ }
239+ }
240+
241+ [ Test ]
242+ public void OperatorSubtract_NoOverlap ( )
243+ {
244+ using ( var first = new NSMutableSet ( "1" , "2" ) )
245+ using ( var second = new NSMutableSet ( "3" , "4" ) )
246+ using ( var result = first - second ) {
247+ Assert . IsNotNull ( result , "NoOverlap should return copy of first" ) ;
248+ Assert . AreEqual ( ( nuint ) 2 , result . Count , "NoOverlap Count" ) ;
249+ Assert . IsTrue ( result . Contains ( "1" ) , "NoOverlap Contains 1" ) ;
250+ Assert . IsTrue ( result . Contains ( "2" ) , "NoOverlap Contains 2" ) ;
251+ }
252+ }
253+
254+ [ Test ]
255+ public void OperatorSubtract_PartialOverlap ( )
256+ {
257+ using ( var first = new NSMutableSet ( "1" , "2" , "3" ) )
258+ using ( var second = new NSMutableSet ( "2" , "3" , "4" ) )
259+ using ( var result = first - second ) {
260+ Assert . IsNotNull ( result , "PartialOverlap should return difference" ) ;
261+ Assert . AreEqual ( ( nuint ) 1 , result . Count , "PartialOverlap Count" ) ;
262+ Assert . IsTrue ( result . Contains ( "1" ) , "PartialOverlap Contains 1" ) ;
263+ Assert . IsFalse ( result . Contains ( "2" ) , "PartialOverlap Not Contains 2" ) ;
264+ Assert . IsFalse ( result . Contains ( "3" ) , "PartialOverlap Not Contains 3" ) ;
265+ }
266+ }
267+
268+ [ Test ]
269+ public void OperatorSubtract_CompleteOverlap ( )
270+ {
271+ using ( var first = new NSMutableSet ( "1" , "2" , "3" ) )
272+ using ( var second = new NSMutableSet ( "1" , "2" , "3" ) )
273+ using ( var result = first - second ) {
274+ Assert . IsNotNull ( result , "CompleteOverlap should return empty set" ) ;
275+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "CompleteOverlap Count" ) ;
276+ }
277+ }
278+
279+ [ Test ]
280+ public void OperatorSubtract_SecondIsSupersetOfFirst ( )
281+ {
282+ using ( var first = new NSMutableSet ( "1" , "2" ) )
283+ using ( var second = new NSMutableSet ( "1" , "2" , "3" , "4" ) )
284+ using ( var result = first - second ) {
285+ Assert . IsNotNull ( result , "Superset should return empty set" ) ;
286+ Assert . AreEqual ( ( nuint ) 0 , result . Count , "Superset Count" ) ;
287+ }
288+ }
67289 }
68290}
0 commit comments