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 Set_New ()
\r
100 NameValueCollection c = new NameValueCollection ();
\r
101 c.Set ("mono", "mono");
\r
102 c.Set ("!mono", null);
\r
103 c.Set (null, "mono!");
\r
104 AssertEquals ("Count", 3, c.Count);
\r
105 AssertEquals ("mono", "mono", c ["mono"]);
\r
106 AssertNull ("!mono", c ["!mono"]);
\r
107 AssertEquals ("mono!", "mono!", c [null]);
\r
111 public void Set_Replace ()
\r
113 NameValueCollection c = new NameValueCollection ();
\r
114 c.Add ("mono", "mono");
\r
115 c.Add ("!mono", "!mono");
\r
116 c.Add ("mono!", "mono!");
\r
117 AssertEquals ("Count", 3, c.Count);
\r
118 AssertEquals ("mono", "mono", c ["mono"]);
\r
119 AssertEquals ("!mono", "!mono", c ["!mono"]);
\r
120 AssertEquals ("mono!", "mono!", c ["mono!"]);
\r
122 c.Set ("mono", "nomo");
\r
123 c.Set ("!mono", null);
\r
124 c.Set (null, "mono!");
\r
125 AssertEquals ("Count", 4, c.Count); // mono! isn't removed
\r
126 AssertEquals ("mono", "nomo", c ["mono"]);
\r
127 AssertNull ("!mono", c ["!mono"]);
\r
128 AssertEquals ("mono!1", "mono!", c ["mono!"]);
\r
129 AssertEquals ("mono!2", "mono!", c [null]);
\r
133 public void CaseInsensitive ()
\r
135 // default constructor is case insensitive
\r
136 NameValueCollection c = new NameValueCollection ();
\r
137 c.Add ("mono", "mono");
\r
138 c.Add ("MoNo", "MoNo");
\r
139 c.Add ("mOnO", "mOnO");
\r
140 c.Add ("MONO", "MONO");
\r
141 AssertEquals ("Count", 1, c.Count);
\r
145 public void CopyTo ()
\r
147 string [] array = new string [4];
\r
148 NameValueCollection c = new NameValueCollection ();
\r
149 c.Add ("1", "mono");
\r
150 c.Add ("2", "MoNo");
\r
151 c.Add ("3", "mOnO");
\r
152 c.Add ("4", "MONO");
\r
153 c.CopyTo (array, 0);
\r
157 [ExpectedException (typeof (ArgumentNullException))]
\r
158 public void CopyTo_Null ()
\r
160 NameValueCollection c = new NameValueCollection ();
\r
161 c.CopyTo (null, 0);
\r
165 [ExpectedException (typeof (ArgumentOutOfRangeException))]
\r
166 public void CopyTo_NegativeIndex ()
\r
168 string [] array = new string [4];
\r
169 NameValueCollection c = new NameValueCollection ();
\r
170 c.Add ("1", "mono");
\r
171 c.Add ("2", "MoNo");
\r
172 c.Add ("3", "mOnO");
\r
173 c.Add ("4", "MONO");
\r
174 c.CopyTo (array, -1);
\r
178 [ExpectedException (typeof (ArgumentException))]
\r
179 public void CopyTo_NotEnoughSpace ()
\r
181 string [] array = new string [4];
\r
182 NameValueCollection c = new NameValueCollection ();
\r
183 c.Add ("1", "mono");
\r
184 c.Add ("2", "MoNo");
\r
185 c.Add ("3", "mOnO");
\r
186 c.Add ("4", "MONO");
\r
187 c.CopyTo (array, 2);
\r
191 // Note: not a RankException
\r
192 [ExpectedException (typeof (ArgumentException))]
\r
193 public void CopyTo_MultipleDimensionStringArray ()
\r
195 string [,,] matrix = new string [2,3,4];
\r
196 NameValueCollection c = new NameValueCollection ();
\r
197 c.Add ("1", "mono");
\r
198 c.Add ("2", "MoNo");
\r
199 c.Add ("3", "mOnO");
\r
200 c.Add ("4", "MONO");
\r
201 c.CopyTo (matrix, 0);
\r
205 // Note: not a RankException
\r
206 [ExpectedException (typeof (ArgumentException))]
\r
207 public void CopyTo_MultipleDimensionArray ()
\r
209 Array a = Array.CreateInstance (typeof (string), 1, 2, 3);
\r
210 NameValueCollection c = new NameValueCollection ();
\r