2 // MonoTests.System.ArraySortArgChecks
5 // Juraj Skripsky (js@hotfeet.ch)
7 // Copyright (C) 2009 Juraj Skripsky (js@hotfeet.ch)
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using NUnit.Framework;
31 using System.Collections;
32 using System.Collections.Generic;
35 namespace MonoTests.System {
36 class SomeIncomparable {}
37 class SomeComparable : IComparable {
38 int IComparable.CompareTo (object other) {
44 public class ArraySortArgChecks {
47 public void Check_ArgumentNullException() {
51 } catch (ArgumentNullException) {}
54 Array.Sort (null, (Array)null);
56 } catch (ArgumentNullException) {}
59 Array.Sort (null, (IComparer)null);
61 } catch (ArgumentNullException) {}
64 Array.Sort (null, 0, 0);
66 } catch (ArgumentNullException) {}
69 Array.Sort (null, null, null);
71 } catch (ArgumentNullException) {}
74 Array.Sort (null, null, 0, 0);
76 } catch (ArgumentNullException) {}
79 Array.Sort (null, 0, 0, null);
81 } catch (ArgumentNullException) {}
84 Array.Sort (null, null, 0, 0, null);
86 } catch (ArgumentNullException) {}
89 Array.Sort<object> (null);
91 } catch (ArgumentNullException) {}
94 Array.Sort<object, object> (null, null);
96 } catch (ArgumentNullException) {}
99 Array.Sort<object> (null, (IComparer<object>)null);
101 } catch (ArgumentNullException) {}
104 Array.Sort<object, object> (null, null, null);
106 } catch (ArgumentNullException) {}
109 Array.Sort<object> (null, 0, 0);
111 } catch (ArgumentNullException) {}
114 Array.Sort<object, object> (null, null, 0, 0);
116 } catch (ArgumentNullException) {}
119 Array.Sort<object> (null, 0, 0, null);
121 } catch (ArgumentNullException) {}
124 Array.Sort<object, object> (null, null, 0, 0, null);
126 } catch (ArgumentNullException) {}
129 Array.Sort<object> (null, new Comparison<object>(ObjComparison));
131 } catch (ArgumentNullException) {}
134 public static int ObjComparison (object o1, object o2) {
140 public void Check_ArgumentException() {
141 object[] arr = new object[] {1, 2, 3, 4, 5};
144 Array.Sort (arr, 1, 5);
146 } catch (ArgumentException) {}
149 Array.Sort (arr, null, 1, 5);
151 } catch (ArgumentException) {}
154 Array.Sort (arr, 1, 5, null);
156 } catch (ArgumentException) {}
159 Array.Sort (arr, null, 1, 5, null);
161 } catch (ArgumentException) {}
164 Array.Sort<object> (arr, 1, 5);
166 } catch (ArgumentException) {}
169 Array.Sort<object, object> (arr, null, 1, 5);
171 } catch (ArgumentException) {}
174 Array.Sort<object> (arr, 1, 5, null);
176 } catch (ArgumentException) {}
179 Array.Sort<object, object> (arr, null, 1, 5, null);
181 } catch (ArgumentException) {}
185 public void Check_ArgumentOurOfRangeException() {
186 object[] arr = new object[] {1, 2, 3, 4, 5};
188 Array.Sort (arr, -1, 1);
190 } catch (ArgumentOutOfRangeException) {}
193 Array.Sort (arr, null, -1, 1);
195 } catch (ArgumentOutOfRangeException) {}
198 Array.Sort (arr, -1, 1, null);
200 } catch (ArgumentOutOfRangeException) {}
203 Array.Sort (arr, null, -1, 1, null);
205 } catch (ArgumentOutOfRangeException) {}
208 Array.Sort (arr, 0, -1);
210 } catch (ArgumentOutOfRangeException) {}
213 Array.Sort (arr, null, 0, -1);
215 } catch (ArgumentOutOfRangeException) {}
218 Array.Sort (arr, 0, -1, null);
220 } catch (ArgumentOutOfRangeException) {}
223 Array.Sort (arr, null, 0, -1, null);
225 } catch (ArgumentOutOfRangeException) {}
228 Array.Sort<object> (arr, -1, 1);
230 } catch (ArgumentOutOfRangeException) {}
233 Array.Sort<object, object> (arr, null, -1, 1);
235 } catch (ArgumentOutOfRangeException) {}
238 Array.Sort<object> (arr, -1, 1, null);
240 } catch (ArgumentOutOfRangeException) {}
243 Array.Sort<object, object> (arr, null, -1, 1, null);
245 } catch (ArgumentOutOfRangeException) {}
248 Array.Sort<object> (arr, 0, -1);
250 } catch (ArgumentOutOfRangeException) {}
253 Array.Sort<object, object> (arr, null, 0, -1);
255 } catch (ArgumentOutOfRangeException) {}
258 Array.Sort<object> (arr, 0, -1, null);
260 } catch (ArgumentOutOfRangeException) {}
263 Array.Sort<object, object> (arr, null, 0, -1, null);
265 } catch (ArgumentOutOfRangeException) {}
269 public void Check_RankException() {
270 object[,] arr = new object[2,2];
275 } catch (RankException) {}
278 Array.Sort (arr, (Array)null);
280 } catch (RankException) {}
283 Array.Sort (arr, (IComparer)null);
285 } catch (RankException) {}
288 Array.Sort (arr, 0, 0);
290 } catch (RankException) {}
293 Array.Sort (arr, null, null);
295 } catch (RankException) {}
298 Array.Sort (arr, null, 0, 0);
300 } catch (RankException) {}
303 Array.Sort (arr, 0, 0, null);
305 } catch (RankException) {}
308 Array.Sort (arr, null, 0, 0, null);
310 } catch (RankException) {}
314 public void Check_NoInvalidOperationException ()
316 Array arr = new object[] {new SomeComparable (), new SomeIncomparable (), new SomeComparable ()};
320 Array.Sort (arr, (Array)null);
322 Array.Sort (arr, (IComparer)null);
324 Array.Sort (arr, 0, 3);
326 Array.Sort (arr, null, null);
328 Array.Sort (arr, null, 0, 3);
330 Array.Sort (arr, 0, 3, null);
332 Array.Sort (arr, null, 0, 3, null);
336 public void Check_NoInvalidOperationException_Generic ()
338 object[] arr = new object[] {new SomeComparable (), new SomeIncomparable (), new SomeComparable ()};
340 Array.Sort<object> (arr);
342 Array.Sort<object, object> (arr, null);
344 Array.Sort<object> (arr, (IComparer<object>)null);
346 Array.Sort<object, object> (arr, null, null);
348 Array.Sort<object> (arr, 0, 3);
350 Array.Sort<object, object> (arr, null, 0, 3);
352 Array.Sort<object> (arr, 0, 3, null);
354 Array.Sort<object, object> (arr, null, 0, 3, null);