/** * NUnit test method */ public void Test() { /* * Here are some very basic tests */ Hashtable ht = new Hashtable(); WeakHashtable wht = new WeakHashtable(); /* * Check to see if it fails when working as a basic * Hashtable. */ /* * Make sure we can't add a null key */ bool can_add_null = true; try { wht[null] = "oh no"; } catch (ArgumentNullException) { can_add_null = false; } Assert.IsFalse(can_add_null, "Null key test"); /* * Check to see that we can't Add() the same key twice: */ bool can_add_twice = true; object key2 = "test"; try { wht.Add(key2, "first"); wht.Add(key2, "second"); } catch (ArgumentException) { can_add_twice = false; } Assert.IsFalse(can_add_twice, "double Add"); /* * Check to see that we can set twice: */ wht[key2] = "first"; wht[key2] = "second"; Assert.AreEqual("second", wht[key2], "double set"); wht.Clear(); Assert.AreEqual(wht.Count, 0); /* * Put in a bunch of random keys */ Random r = new Random(); for (int i = 0; i < 1000; i++) { //Use a reference type here: object key = r.Next().ToString(); int val = r.Next(); ht[key] = val; wht[key] = val; } IDictionaryEnumerator enm = ht.GetEnumerator(); while (enm.MoveNext()) { Assert.AreEqual(enm.Value, wht[enm.Key], "basic hashtable test"); } /* * Let's remove all the elements we put in earlier: */ enm = ht.GetEnumerator(); while (enm.MoveNext()) { wht.Remove(enm.Key); } Assert.AreEqual(0, wht.Count, "Zero count after removal"); }
/** * NUnit test method */ public void Test() { /* * Here are some very basic tests */ Hashtable ht = new Hashtable(); WeakHashtable wht = new WeakHashtable(); /* * Check to see if it fails when working as a basic * Hashtable. */ /* * Make sure we can't add a null key */ bool can_add_null = true; try { wht[ null ] = "oh no"; } catch(ArgumentNullException) { can_add_null = false; } Assert.IsFalse(can_add_null, "Null key test"); /* * Check to see that we can't Add() the same key twice: */ bool can_add_twice = true; object key2 = "test"; try { wht.Add(key2, "first"); wht.Add(key2, "second"); } catch(ArgumentException) { can_add_twice = false; } Assert.IsFalse(can_add_twice, "double Add"); /* * Check to see that we can set twice: */ wht[key2] = "first"; wht[key2] = "second"; Assert.AreEqual("second", wht[key2], "double set"); wht.Clear(); Assert.AreEqual( wht.Count, 0 ); /* * Put in a bunch of random keys */ Random r = new Random(); for(int i = 0; i < 1000; i++) { //Use a reference type here: object key = r.Next().ToString(); int val = r.Next(); ht[key] = val; wht[key] = val; } IDictionaryEnumerator enm = ht.GetEnumerator(); while( enm.MoveNext() ) { Assert.AreEqual( enm.Value, wht[ enm.Key ], "basic hashtable test" ); } /* * Let's remove all the elements we put in earlier: */ enm = ht.GetEnumerator(); while( enm.MoveNext() ) { wht.Remove( enm.Key ); } Assert.AreEqual( 0, wht.Count, "Zero count after removal"); }