NameValueCollectionTest.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. // created on 7/21/2001 at 2:36 PM
  2. //
  3. // Authors:
  4. // Martin Willemoes Hansen ([email protected])
  5. // Sebastien Pouliot <[email protected]>
  6. //
  7. // (C) 2003 Martin Willemoes Hansen
  8. // Copyright (C) 2004 Novell (http://www.novell.com)
  9. //
  10. using System;
  11. using System.Collections;
  12. using System.Collections.Specialized;
  13. using System.Text;
  14. using NUnit.Framework;
  15. namespace MonoTests.System.Collections.Specialized {
  16. [TestFixture]
  17. public class NameValueCollectionTest : Assertion {
  18. [Test]
  19. public void GetValues ()
  20. {
  21. NameValueCollection col = new NameValueCollection ();
  22. col.Add ("foo1", "bar1");
  23. Assertion.AssertEquals ("#1", null, col.GetValues (null));
  24. Assertion.AssertEquals ("#2", null, col.GetValues (""));
  25. Assertion.AssertEquals ("#3", null, col.GetValues ("NotExistent"));
  26. }
  27. [Test]
  28. public void Add ()
  29. {
  30. NameValueCollection c = new NameValueCollection ();
  31. c.Add ("mono", "mono");
  32. c.Add ("!mono", null);
  33. c.Add (null, "mono!");
  34. AssertEquals ("Count", 3, c.Count);
  35. AssertEquals ("mono", "mono", c ["mono"]);
  36. AssertNull ("!mono", c ["!mono"]);
  37. AssertEquals ("mono!", "mono!", c [null]);
  38. }
  39. [Test]
  40. public void Add_Multiples ()
  41. {
  42. NameValueCollection c = new NameValueCollection ();
  43. c.Add ("mono", "mono");
  44. c.Add ("mono", "mono");
  45. c.Add ("mono", "mono");
  46. AssertEquals ("Count", 1, c.Count);
  47. AssertEquals ("mono", "mono,mono,mono", c ["mono"]);
  48. }
  49. [Test]
  50. public void Add_Multiples_Null ()
  51. {
  52. NameValueCollection c = new NameValueCollection ();
  53. c.Add ("mono", "mono");
  54. c.Add ("mono", null);
  55. c.Add ("mono", "mono");
  56. AssertEquals ("Count", 1, c.Count);
  57. AssertEquals ("mono", "mono,mono", c ["mono"]);
  58. }
  59. [Test]
  60. public void Add_NVC ()
  61. {
  62. NameValueCollection c1 = new NameValueCollection ();
  63. NameValueCollection c2 = new NameValueCollection ();
  64. c2.Add (c1);
  65. AssertEquals ("c1.Count", 0, c1.Count);
  66. AssertEquals ("c2.Count", 0, c2.Count);
  67. c1.Add ("foo", "bar");
  68. c2.Add ("bar", "foo");
  69. AssertEquals ("c1.Count", 1, c1.Count);
  70. AssertEquals ("c2.Count", 1, c2.Count);
  71. c2.Add (c1);
  72. AssertEquals ("c1.Count", 1, c1.Count);
  73. AssertEquals ("c2.Count", 2, c2.Count);
  74. }
  75. [Test]
  76. // [ExpectedException (typeof (ArgumentNullException))]
  77. [ExpectedException (typeof (NullReferenceException))]
  78. public void Add_NVC_Null ()
  79. {
  80. new NameValueCollection ().Add (null);
  81. }
  82. [Test]
  83. public void Set_New ()
  84. {
  85. NameValueCollection c = new NameValueCollection ();
  86. c.Set ("mono", "mono");
  87. c.Set ("!mono", null);
  88. c.Set (null, "mono!");
  89. AssertEquals ("Count", 3, c.Count);
  90. AssertEquals ("mono", "mono", c ["mono"]);
  91. AssertNull ("!mono", c ["!mono"]);
  92. AssertEquals ("mono!", "mono!", c [null]);
  93. }
  94. [Test]
  95. public void Set_Replace ()
  96. {
  97. NameValueCollection c = new NameValueCollection ();
  98. c.Add ("mono", "mono");
  99. c.Add ("!mono", "!mono");
  100. c.Add ("mono!", "mono!");
  101. AssertEquals ("Count", 3, c.Count);
  102. AssertEquals ("mono", "mono", c ["mono"]);
  103. AssertEquals ("!mono", "!mono", c ["!mono"]);
  104. AssertEquals ("mono!", "mono!", c ["mono!"]);
  105. c.Set ("mono", "nomo");
  106. c.Set ("!mono", null);
  107. c.Set (null, "mono!");
  108. AssertEquals ("Count", 4, c.Count); // mono! isn't removed
  109. AssertEquals ("mono", "nomo", c ["mono"]);
  110. AssertNull ("!mono", c ["!mono"]);
  111. AssertEquals ("mono!1", "mono!", c ["mono!"]);
  112. AssertEquals ("mono!2", "mono!", c [null]);
  113. }
  114. [Test]
  115. public void CaseInsensitive ()
  116. {
  117. // default constructor is case insensitive
  118. NameValueCollection c = new NameValueCollection ();
  119. c.Add ("mono", "mono");
  120. c.Add ("MoNo", "MoNo");
  121. c.Add ("mOnO", "mOnO");
  122. c.Add ("MONO", "MONO");
  123. AssertEquals ("Count", 1, c.Count);
  124. }
  125. [Test]
  126. public void CopyTo ()
  127. {
  128. string [] array = new string [4];
  129. NameValueCollection c = new NameValueCollection ();
  130. c.Add ("1", "mono");
  131. c.Add ("2", "MoNo");
  132. c.Add ("3", "mOnO");
  133. c.Add ("4", "MONO");
  134. c.CopyTo (array, 0);
  135. }
  136. [Test]
  137. [ExpectedException (typeof (ArgumentNullException))]
  138. public void CopyTo_Null ()
  139. {
  140. NameValueCollection c = new NameValueCollection ();
  141. c.CopyTo (null, 0);
  142. }
  143. [Test]
  144. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  145. public void CopyTo_NegativeIndex ()
  146. {
  147. string [] array = new string [4];
  148. NameValueCollection c = new NameValueCollection ();
  149. c.Add ("1", "mono");
  150. c.Add ("2", "MoNo");
  151. c.Add ("3", "mOnO");
  152. c.Add ("4", "MONO");
  153. c.CopyTo (array, -1);
  154. }
  155. [Test]
  156. [ExpectedException (typeof (ArgumentException))]
  157. public void CopyTo_NotEnoughSpace ()
  158. {
  159. string [] array = new string [4];
  160. NameValueCollection c = new NameValueCollection ();
  161. c.Add ("1", "mono");
  162. c.Add ("2", "MoNo");
  163. c.Add ("3", "mOnO");
  164. c.Add ("4", "MONO");
  165. c.CopyTo (array, 2);
  166. }
  167. [Test]
  168. // Note: not a RankException
  169. [ExpectedException (typeof (ArgumentException))]
  170. public void CopyTo_MultipleDimensionArray ()
  171. {
  172. string [,,] matrix = new string [2,3,4];
  173. NameValueCollection c = new NameValueCollection ();
  174. c.Add ("1", "mono");
  175. c.Add ("2", "MoNo");
  176. c.Add ("3", "mOnO");
  177. c.Add ("4", "MONO");
  178. c.CopyTo (matrix, 0);
  179. }
  180. }
  181. }