예제 #1
0
        /**
         * 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");
        }
예제 #2
0
  /**
   * 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");

  }