Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mcs / class / System / Test / System.Collections.Specialized / HybridDictionaryTest.cs
1 //
2 // HybridDictionaryTest.cs - NUnit Test Cases for System.Net.HybridDictionary
3 //
4 // Authors:
5 //   Lawrence Pit (loz@cable.a2000.nl)
6 //   Martin Willemoes Hansen (mwh@sysrq.dk)
7 //   Sebastien Pouliot  <sebastien@ximian.com>
8 //
9 // (C) 2003 Martin Willemoes Hansen
10 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
11 //
12
13 using NUnit.Framework;
14 using System;
15 using System.Collections;
16 using System.Collections.Specialized;
17
18 namespace MonoTests.System.Collections.Specialized
19 {
20         [TestFixture]
21         public class HybridDictionaryTest {
22
23                 [Test]
24                 public void DefaultValues ()
25                 {
26                         HybridDictionary hd = new HybridDictionary (100);
27                         Assert.AreEqual (0, hd.Count, "Count");
28                         Assert.IsFalse (hd.IsFixedSize, "IsFixedSize");
29                         Assert.IsFalse (hd.IsReadOnly, "IsReadOnly");
30                         Assert.IsFalse (hd.IsSynchronized, "IsSynchronized");
31                         Assert.AreEqual (0, hd.Keys.Count, "Keys");
32                         Assert.AreEqual (0, hd.Values.Count, "Values");
33                         Assert.AreSame (hd, hd.SyncRoot, "SyncRoot");
34                         Assert.IsNotNull (hd.GetEnumerator (), "GetEnumerator");
35                         Assert.IsNotNull ((hd as IEnumerable).GetEnumerator (), "IEnumerable.GetEnumerator");
36                 }
37
38                 [Test]
39                 public void All ()
40                 {
41                         HybridDictionary dict = new HybridDictionary (true);
42                         dict.Add ("CCC", "ccc");
43                         dict.Add ("BBB", "bbb");
44                         dict.Add ("fff", "fff");
45                         dict ["EEE"] = "eee";
46                         dict ["ddd"] = "ddd";
47                         
48                         Assert.AreEqual (5, dict.Count, "#1");
49                         Assert.AreEqual ("eee", dict["eee"], "#2");
50                         
51                         dict.Add ("CCC2", "ccc");
52                         dict.Add ("BBB2", "bbb");
53                         dict.Add ("fff2", "fff");
54                         dict ["EEE2"] = "eee";
55                         dict ["ddd2"] = "ddd";
56                         dict ["xxx"] = "xxx";
57                         dict ["yyy"] = "yyy";
58
59                         Assert.AreEqual (12, dict.Count, "#3");
60                         Assert.AreEqual ("eee", dict["eee"], "#4");
61
62                         dict.Remove ("eee");
63                         Assert.AreEqual (11, dict.Count, "Removed/Count");
64                         Assert.IsFalse (dict.Contains ("eee"), "Removed/Contains(xxx)");
65                         DictionaryEntry[] entries = new DictionaryEntry [11];
66                         dict.CopyTo (entries, 0);
67
68                         Assert.IsTrue (dict.Contains ("xxx"), "Contains(xxx)");
69                         dict.Clear ();
70                         Assert.AreEqual (0, dict.Count, "Cleared/Count");
71                         Assert.IsFalse (dict.Contains ("xxx"), "Cleared/Contains(xxx)");
72                 }
73
74                 [Test]
75                 [ExpectedException (typeof (ArgumentNullException))]
76                 public void Empty () 
77                 {
78                         HybridDictionary hd = new HybridDictionary ();
79                         Assert.AreEqual (0, hd.Count, "Count");
80                         Assert.IsFalse (hd.Contains ("unexisting"), "unexisting");
81                         // under 1.x no exception, under 2.0 ArgumentNullException
82                         Assert.IsFalse (hd.Contains (null), "Contains(null)");
83                 }
84
85                 [Test]
86                 [ExpectedException (typeof (ArgumentNullException))]
87                 public void NotEmpty () 
88                 {
89                         HybridDictionary hd = new HybridDictionary (1, false);
90                         hd.Add ("CCC", "ccc");
91                         Assert.AreEqual (1, hd.Count, "Count");
92                         // ArgumentNullException under all fx versions
93                         Assert.IsFalse (hd.Contains (null), "Contains(null)");
94                 }
95         }
96 }