1 // created on 7/21/2001 at 2:36 PM
\r
4 // Martin Willemoes Hansen (mwh@sysrq.dk)
\r
5 // Sebastien Pouliot <sebastien@ximian.com>
\r
7 // (C) 2003 Martin Willemoes Hansen
\r
8 // Copyright (C) 2004 Novell (http://www.novell.com)
\r
12 using System.Collections;
\r
13 using System.Collections.Specialized;
\r
16 using NUnit.Framework;
\r
18 namespace MonoTests.System.Collections.Specialized {
\r
21 public class NameValueCollectionTest : Assertion {
\r
24 public void GetValues ()
\r
26 NameValueCollection col = new NameValueCollection ();
\r
27 col.Add ("foo1", "bar1");
\r
28 Assertion.AssertEquals ("#1", null, col.GetValues (null));
\r
29 Assertion.AssertEquals ("#2", null, col.GetValues (""));
\r
30 Assertion.AssertEquals ("#3", null, col.GetValues ("NotExistent"));
\r
36 NameValueCollection c = new NameValueCollection ();
\r
37 c.Add ("mono", "mono");
\r
38 c.Add ("!mono", null);
\r
39 c.Add (null, "mono!");
\r
40 AssertEquals ("Count", 3, c.Count);
\r
41 AssertEquals ("mono", "mono", c ["mono"]);
\r
42 AssertNull ("!mono", c ["!mono"]);
\r
43 AssertEquals ("mono!", "mono!", c [null]);
\r
47 public void Add_Multiples ()
\r
49 NameValueCollection c = new NameValueCollection ();
\r
50 c.Add ("mono", "mono");
\r
51 c.Add ("mono", "mono");
\r
52 c.Add ("mono", "mono");
\r
53 AssertEquals ("Count", 1, c.Count);
\r
54 AssertEquals ("mono", "mono,mono,mono", c ["mono"]);
\r
58 public void Add_Multiples_Null ()
\r
60 NameValueCollection c = new NameValueCollection ();
\r
61 c.Add ("mono", "mono");
\r
62 c.Add ("mono", null);
\r
63 c.Add ("mono", "mono");
\r
64 AssertEquals ("Count", 1, c.Count);
\r
65 AssertEquals ("mono", "mono,mono", c ["mono"]);
\r
69 public void Add_NVC ()
\r
71 NameValueCollection c1 = new NameValueCollection ();
\r
72 NameValueCollection c2 = new NameValueCollection ();
\r
75 AssertEquals ("c1.Count", 0, c1.Count);
\r
76 AssertEquals ("c2.Count", 0, c2.Count);
\r
78 c1.Add ("foo", "bar");
\r
79 c2.Add ("bar", "foo");
\r
81 AssertEquals ("c1.Count", 1, c1.Count);
\r
82 AssertEquals ("c2.Count", 1, c2.Count);
\r
85 AssertEquals ("c1.Count", 1, c1.Count);
\r
86 AssertEquals ("c2.Count", 2, c2.Count);
\r
90 // [ExpectedException (typeof (ArgumentNullException))]
\r
91 [ExpectedException (typeof (NullReferenceException))]
\r
92 public void Add_NVC_Null ()
\r
94 new NameValueCollection ().Add (null);
\r
98 public void Add_NVC_Null2 ()
\r
100 NameValueCollection a = new NameValueCollection ();
\r
101 NameValueCollection b = new NameValueCollection ();
\r
103 b.Add ("Test", null);
\r
105 AssertEquals ("Count", 1, a.Count);
\r
109 public void Set_New ()
\r
111 NameValueCollection c = new NameValueCollection ();
\r
112 c.Set ("mono", "mono");
\r
113 c.Set ("!mono", null);
\r
114 c.Set (null, "mono!");
\r
115 AssertEquals ("Count", 3, c.Count);
\r
116 AssertEquals ("mono", "mono", c ["mono"]);
\r
117 AssertNull ("!mono", c ["!mono"]);
\r
118 AssertEquals ("mono!", "mono!", c [null]);
\r
122 public void Set_Replace ()
\r
124 NameValueCollection c = new NameValueCollection ();
\r
125 c.Add ("mono", "mono");
\r
126 c.Add ("!mono", "!mono");
\r
127 c.Add ("mono!", "mono!");
\r
128 AssertEquals ("Count", 3, c.Count);
\r
129 AssertEquals ("mono", "mono", c ["mono"]);
\r
130 AssertEquals ("!mono", "!mono", c ["!mono"]);
\r
131 AssertEquals ("mono!", "mono!", c ["mono!"]);
\r
133 c.Set ("mono", "nomo");
\r
134 c.Set ("!mono", null);
\r
135 c.Set (null, "mono!");
\r
136 AssertEquals ("Count", 4, c.Count); // mono! isn't removed
\r
137 AssertEquals ("mono", "nomo", c ["mono"]);
\r
138 AssertNull ("!mono", c ["!mono"]);
\r
139 AssertEquals ("mono!1", "mono!", c ["mono!"]);
\r
140 AssertEquals ("mono!2", "mono!", c [null]);
\r
144 public void CaseInsensitive ()
\r
146 // default constructor is case insensitive
\r
147 NameValueCollection c = new NameValueCollection ();
\r
148 c.Add ("mono", "mono");
\r
149 c.Add ("MoNo", "MoNo");
\r
150 c.Add ("mOnO", "mOnO");
\r
151 c.Add ("MONO", "MONO");
\r
152 AssertEquals ("Count", 1, c.Count);
\r
156 public void CopyTo ()
\r
158 string [] array = new string [4];
\r
159 NameValueCollection c = new NameValueCollection ();
\r
160 c.Add ("1", "mono");
\r
161 c.Add ("2", "MoNo");
\r
162 c.Add ("3", "mOnO");
\r
163 c.Add ("4", "MONO");
\r
164 c.CopyTo (array, 0);
\r
168 [ExpectedException (typeof (ArgumentNullException))]
\r
169 public void CopyTo_Null ()
\r
171 NameValueCollection c = new NameValueCollection ();
\r
172 c.CopyTo (null, 0);
\r
176 [ExpectedException (typeof (ArgumentOutOfRangeException))]
\r
177 public void CopyTo_NegativeIndex ()
\r
179 string [] array = new string [4];
\r
180 NameValueCollection c = new NameValueCollection ();
\r
181 c.Add ("1", "mono");
\r
182 c.Add ("2", "MoNo");
\r
183 c.Add ("3", "mOnO");
\r
184 c.Add ("4", "MONO");
\r
185 c.CopyTo (array, -1);
\r
189 [ExpectedException (typeof (ArgumentException))]
\r
190 public void CopyTo_NotEnoughSpace ()
\r
192 string [] array = new string [4];
\r
193 NameValueCollection c = new NameValueCollection ();
\r
194 c.Add ("1", "mono");
\r
195 c.Add ("2", "MoNo");
\r
196 c.Add ("3", "mOnO");
\r
197 c.Add ("4", "MONO");
\r
198 c.CopyTo (array, 2);
\r
202 // Note: not a RankException
\r
203 [ExpectedException (typeof (ArgumentException))]
\r
204 public void CopyTo_MultipleDimensionStringArray ()
\r
206 string [,,] matrix = new string [2,3,4];
\r
207 NameValueCollection c = new NameValueCollection ();
\r
208 c.Add ("1", "mono");
\r
209 c.Add ("2", "MoNo");
\r
210 c.Add ("3", "mOnO");
\r
211 c.Add ("4", "MONO");
\r
212 c.CopyTo (matrix, 0);
\r
216 // Note: not a RankException
\r
217 [ExpectedException (typeof (ArgumentException))]
\r
218 public void CopyTo_MultipleDimensionArray ()
\r
220 Array a = Array.CreateInstance (typeof (string), 1, 2, 3);
\r
221 NameValueCollection c = new NameValueCollection ();
\r
226 public void Remove ()
\r
228 string[] items = { "mono", "MoNo", "mOnO", "MONO" };
\r
229 // default constructor is case insensitive
\r
230 NameValueCollection c = new NameValueCollection ();
\r
231 for (int i=0; i < items.Length; i++) {
\r
232 string add = "Add-" + i.ToString () + "-Count";
\r
234 c.Add (items [i], add);
\r
235 AssertEquals (add, 1, c.Count);
\r
236 c.Remove (items [0]);
\r
237 AssertEquals ("Remove-0-Count", 0, c.Count);
\r
239 c.Add (items [i], add);
\r
240 AssertEquals (add, 1, c.Count);
\r
241 c.Remove (items [1]);
\r
242 AssertEquals ("Remove-1-Count", 0, c.Count);
\r
244 c.Add (items [i], add);
\r
245 AssertEquals (add, 1, c.Count);
\r
246 c.Remove (items [2]);
\r
247 AssertEquals ("Remove-2-Count", 0, c.Count);
\r
249 c.Add (items [i], add);
\r
250 AssertEquals (add , 1, c.Count);
\r
251 c.Remove (items [3]);
\r
252 AssertEquals ("Remove-3-Count", 0, c.Count);
\r