2 // System.Collections.SortedListTest.cs
5 // Zoltan Varga (vargaz@gmail.com)
9 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 using System.Collections;
35 using System.Collections.Generic;
38 using System.Runtime.Serialization;
39 using System.Runtime.Serialization.Formatters.Binary;
40 using NUnit.Framework;
42 namespace MonoTests.System.Collections.Generic
45 public class SortedListTest
47 SortedList<int, string> list;
48 SortedList<string, int> list2;
51 public void SetUp () {
52 list = new SortedList <int, string> ();
58 list2 = new SortedList<string, int> ();
63 Assert.AreEqual ("A", list [0]);
64 Assert.AreEqual ("B", list [2]);
65 Assert.AreEqual ("C", list [5]);
69 Assert.AreEqual ("D", list [2]);
73 [ExpectedException (typeof (ArgumentNullException))]
74 public void ItemNullKey () {
79 [ExpectedException (typeof (KeyNotFoundException))]
80 public void ItemMissingKey () {
86 IList<int> keys = list.Keys;
88 Assert.AreEqual (3, keys.Count);
89 Assert.AreEqual (0, keys [0]);
90 Assert.AreEqual (2, keys [1]);
91 Assert.AreEqual (5, keys [2]);
93 int[] arr = new int [4];
95 Assert.AreEqual (0, arr [1]);
96 Assert.AreEqual (2, arr [2]);
97 Assert.AreEqual (5, arr [3]);
99 Assert.AreEqual (true, keys.Contains (2));
100 Assert.AreEqual (false, keys.Contains (100));
102 Assert.AreEqual (2, keys.IndexOf (5));
103 Assert.AreEqual (-1, keys.IndexOf (100));
109 foreach (int i in keys)
111 Assert.AreEqual (0, arr [0]);
112 Assert.AreEqual (2, arr [1]);
113 Assert.AreEqual (5, arr [2]);
117 public void KeysNonGeneric () {
118 ICollection keys = ((IDictionary)list).Keys;
120 Assert.AreEqual (3, keys.Count);
122 int[] arr = new int [4];
123 keys.CopyTo (arr, 1);
124 Assert.AreEqual (0, arr [1]);
125 Assert.AreEqual (2, arr [2]);
126 Assert.AreEqual (5, arr [3]);
132 foreach (int i in keys)
134 Assert.AreEqual (0, arr [0]);
135 Assert.AreEqual (2, arr [1]);
136 Assert.AreEqual (5, arr [2]);
140 public void Values () {
141 IList<string> values = list.Values;
143 Assert.AreEqual (3, values.Count);
144 Assert.AreEqual ("A", values [0]);
145 Assert.AreEqual ("B", values [1]);
146 Assert.AreEqual ("C", values [2]);
148 string[] arr = new string [4];
149 values.CopyTo (arr, 1);
150 Assert.AreEqual ("A", arr [1]);
151 Assert.AreEqual ("B", arr [2]);
152 Assert.AreEqual ("C", arr [3]);
154 Assert.AreEqual (true, values.Contains ("B"));
155 Assert.AreEqual (false, values.Contains ("X"));
157 Assert.AreEqual (2, values.IndexOf ("C"));
158 Assert.AreEqual (-1, values.IndexOf ("X"));
164 foreach (string s in values)
166 Assert.AreEqual ("A", arr [0]);
167 Assert.AreEqual ("B", arr [1]);
168 Assert.AreEqual ("C", arr [2]);
172 public void ValuesNonGeneric () {
173 ICollection values = ((IDictionary)list).Values;
175 Assert.AreEqual (3, values.Count);
177 string[] arr = new string [4];
178 values.CopyTo (arr, 1);
179 Assert.AreEqual ("A", arr [1]);
180 Assert.AreEqual ("B", arr [2]);
181 Assert.AreEqual ("C", arr [3]);
187 foreach (string s in values)
189 Assert.AreEqual ("A", arr [0]);
190 Assert.AreEqual ("B", arr [1]);
191 Assert.AreEqual ("C", arr [2]);
195 public void KeysIDictionaryGeneric () {
196 ICollection<int> keys = ((IDictionary<int,string>)list).Keys;
198 Assert.AreEqual (3, keys.Count);
202 public void ValuesIDictionaryGeneric () {
203 ICollection<string> values = ((IDictionary<int,string>)list).Values;
205 Assert.AreEqual (3, values.Count);
211 Assert.AreEqual ("D", list [10]);
215 [ExpectedException (typeof (ArgumentNullException))]
216 public void AddNullKey () {
217 list2.Add (null, 10);
221 [ExpectedException (typeof (ArgumentException))]
222 public void AddKeyAlreadyExists () {
228 public void ContainsKey () {
229 Assert.AreEqual (true, list.ContainsKey (5));
230 Assert.AreEqual (false, list.ContainsKey (10));
234 public void Remove () {
235 Assert.AreEqual (true, list.Remove (5));
236 Assert.AreEqual (false, list.Remove (5));
237 Assert.AreEqual (false, list.Remove (10));
241 [ExpectedException (typeof (ArgumentNullException))]
242 public void RemoveNullKey () {
247 public void GetEnumerator () {
248 int[] keys = new int [3];
249 string[] values = new string [3];
251 foreach (KeyValuePair <int, string> kvp in list) {
253 values [i] = kvp.Value;
257 Assert.AreEqual (0, keys [0]);
258 Assert.AreEqual (2, keys [1]);
259 Assert.AreEqual (5, keys [2]);
260 Assert.AreEqual ("A", values [0]);
261 Assert.AreEqual ("B", values [1]);
262 Assert.AreEqual ("C", values [2]);