// TODO: add tests for Comparer and HashCodeProvider using System; using System.Collections; using NUnit.Framework; namespace MonoTests.System.Collections { /// Hashtable test. public class HashtableTest : TestCase { public static ITest Suite { get { TestSuite suite = new TestSuite(); suite.AddTest(new TestSuite(typeof(HashtableTest))); suite.AddTest(new TestSuite(typeof(HashtableTest2))); return suite; } } protected Hashtable ht; private static Random rnd; public HashtableTest(String name) : base(name) {} protected override void SetUp() { ht=new Hashtable(); rnd=new Random(); } private void SetDefaultData() { ht.Clear(); ht.Add("k1","another"); ht.Add("k2","yet"); ht.Add("k3","hashtable"); } public void TestAddRemoveClear() { ht.Clear(); Assert(ht.Count==0); SetDefaultData(); Assert(ht.Count==3); bool thrown=false; try { ht.Add("k2","cool"); } catch (ArgumentException) {thrown=true;} Assert("Must throw ArgumentException!",thrown); ht["k2"]="cool"; Assert(ht.Count==3); Assert(ht["k2"].Equals("cool")); } public void TestCopyTo() { SetDefaultData(); Object[] entries=new Object[ht.Count]; ht.CopyTo(entries,0); Assert("Not an entry.",entries[0] is DictionaryEntry); } public void TestUnderHeavyLoad() { ht.Clear(); int max=100000; String[] cache=new String[max*2]; int n=0; for (int i=0;i=r1 && i=r1 && i /// Test hashtable with CaseInsensitiveHashCodeProvider /// and CaseInsensitive comparer. /// public void TestCaseInsensitive () { // Not very meaningfull test, just to make // sure that hcp is set properly set. Hashtable ciHashtable = new Hashtable(11,1.0f,CaseInsensitiveHashCodeProvider.Default,CaseInsensitiveComparer.Default); ciHashtable ["key1"] = "value"; ciHashtable ["key2"] = "VALUE"; Assert(ciHashtable ["key1"].Equals ("value")); Assert(ciHashtable ["key2"].Equals ("VALUE")); ciHashtable ["KEY1"] = "new_value"; Assert(ciHashtable ["key1"].Equals ("new_value")); } public void TestCopyConstructor () { SetDefaultData (); Hashtable htCopy = new Hashtable (ht); Assert(ht.Count == htCopy.Count); } public void TestEnumerator () { SetDefaultData (); IEnumerator e = ht.GetEnumerator (); while (e.MoveNext ()) {} Assert (!e.MoveNext ()); } } } }