1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayList; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Collection; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ConcurrentModificationException; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Enumeration; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.HashSet; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Hashtable; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Iterator; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.NoSuchElementException; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Set; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TreeMap; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Vector; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_MapTest2; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_UnmodifiableCollectionTest; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class HashtableTest extends junit.framework.TestCase { 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Hashtable ht10; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Hashtable ht100; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Hashtable htfull; 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Vector keyVector; 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Vector elmVector; 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private String h10sVal; 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#Hashtable() 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_Constructor() { 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Hashtable() 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Support_MapTest2(new Hashtable()).runTest(); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = new Hashtable(); 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Created incorrect hashtable", 0, h.size()); 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#Hashtable(int) 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorI() { 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Hashtable(int) 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = new Hashtable(9); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Created incorrect hashtable", 0, h.size()); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable empty = new Hashtable(0); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Empty hashtable access", empty.get("nothing")); 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes empty.put("something", "here"); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("cannot get element", empty.get("something") == "here"); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#Hashtable(int, float) 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorIF() { 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Hashtable(int, float) 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = new java.util.Hashtable(10, 0.5f); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Created incorrect hashtable", 0, h.size()); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable empty = new Hashtable(0, 0.75f); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("Empty hashtable access", empty.get("nothing")); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes empty.put("something", "here"); 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("cannot get element", empty.get("something") == "here"); 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#Hashtable(java.util.Map) 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_ConstructorLjava_util_Map() { 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Hashtable(java.util.Map) 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map map = new TreeMap(); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object firstVal = "Gabba"; 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object secondVal = new Integer(5); 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put("Gah", firstVal); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put("Ooga", secondVal); 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable ht = new Hashtable(map); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("a) Incorrect Hashtable constructed", 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.get("Gah") == firstVal); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("b) Incorrect Hashtable constructed", 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.get("Ooga") == secondVal); 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_HashTable_Constructor() { 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable hashTable = new Hashtable(); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.put(hashTable, hashTable.keySet()); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Hashtable(hashTable); 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#clear() 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_clear() { 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void java.util.Hashtable.clear() 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = hashtableClone(htfull); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.clear(); 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Hashtable was not cleared", 0, h.size()); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration el = h.elements(); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration keys = h.keys(); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Hashtable improperly cleared", !el.hasMoreElements() 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && !(keys.hasMoreElements())); 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#clone() 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_clone() { 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.Object java.util.Hashtable.clone() 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = (Hashtable) htfull.clone(); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Clone different size than original", h.size() == htfull 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .size()); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration org = htfull.keys(); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration cpy = h.keys(); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String okey, ckey; 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (org.hasMoreElements()) { 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Key comparison failed", (okey = (String) org 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement()).equals(ckey = (String) cpy.nextElement())); 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Value comparison failed", ((String) htfull.get(okey)) 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals((String) h.get(ckey))); 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Copy has more keys than original", !cpy.hasMoreElements()); 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#contains(java.lang.Object) 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_containsLjava_lang_Object() { 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.util.Hashtable.contains(java.lang.Object) 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Element not found", ht10.contains("Val 7")); 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Invalid element found", !ht10.contains("ZZZZZZZZZZZZZZZZ")); 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#containsKey(java.lang.Object) 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_containsKeyLjava_lang_Object() { 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.util.Hashtable.containsKey(java.lang.Object) 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Failed to find key", htfull.containsKey("FKey 4")); 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Failed to find key", !htfull.containsKey("FKey 99")); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#containsValue(java.lang.Object) 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_containsValueLjava_lang_Object() { 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.util.Hashtable.containsValue(java.lang.Object) 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration e = elmVector.elements(); 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (e.hasMoreElements()) 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned false for valid value", ht10.containsValue(e 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement())); 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned true for invalid value", !ht10 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .containsValue(new Object())); 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#elements() 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_elements() { 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Enumeration java.util.Hashtable.elements() 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration elms = ht10.elements(); 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int i = 0; 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (elms.hasMoreElements()) { 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String s = (String) elms.nextElement(); 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Missing key from enumeration", elmVector.contains(s)); 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ++i; 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("All keys not retrieved", 10, ht10.size()); 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cast Enumeration to Iterator 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator iterator = (Iterator) elms; 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(iterator.hasNext()); 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#elements() 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_elements_subtest0() { 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // this is the reference implementation behavior 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Hashtable ht = new Hashtable(7); 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("1", "a"); 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // these three elements hash to the same bucket in a 7 element Hashtable 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("2", "b"); 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("9", "c"); 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("12", "d"); 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Hashtable looks like: 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 0: "1" 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1: "12" -> "9" -> "2" 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration en = ht.elements(); 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cache the first entry 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes en.hasMoreElements(); 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.remove("12"); 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.remove("9"); 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean exception = false; 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cached "12" 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object result = en.nextElement(); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("unexpected: " + result, result); 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // next is removed "9" 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = en.nextElement(); 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("unexpected: " + result, result); 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = en.nextElement(); 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("unexpected: " + result, "b".equals(result)); 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes exception = true; 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("unexpected NoSuchElementException", !exception); 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#entrySet() 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_entrySet() { 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Set java.util.Hashtable.entrySet() 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set s = ht10.entrySet(); 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set s2 = new HashSet(); 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator i = s.iterator(); 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (i.hasNext()) 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes s2.add(((Map.Entry) i.next()).getValue()); 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration e = elmVector.elements(); 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (e.hasMoreElements()) 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned incorrect entry set", s2.contains(e 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .nextElement())); 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Not synchronized", 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.util.Collections$SynchronizedSet", s.getClass().getName()); 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean exception = false; 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((Map.Entry) ht10.entrySet().iterator().next()).setValue(null); 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e1) { 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes exception = true; 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Should not be able to assign null to a Hashtable entrySet() Map.Entry", 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes exception); 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#equals(java.lang.Object) 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_equalsLjava_lang_Object() { 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean java.util.Hashtable.equals(java.lang.Object) 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = hashtableClone(ht10); 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned false for equal tables", ht10.equals(h)); 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned true for unequal tables", !ht10.equals(htfull)); 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#get(java.lang.Object) 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getLjava_lang_Object() { 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.Object 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.util.Hashtable.get(java.lang.Object) 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = hashtableClone(htfull); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Could not retrieve element", "FVal 2", ((String) h.get("FKey 2")) 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ); 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-262 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ReusableKey k = new ReusableKey(); 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h2 = new Hashtable(); 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes k.setKey(1); 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h2.put(k, "value1"); 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes k.setKey(13); 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(h2.get(k)); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes k.setKey(12); 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(h2.get(k)); 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#hashCode() 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_hashCode() { 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method int java.util.Hashtable.hashCode() 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set entrySet = ht10.entrySet(); 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator iterator = entrySet.iterator(); 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int expectedHash; 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (expectedHash = 0; iterator.hasNext(); expectedHash += iterator 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .next().hashCode()) 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Incorrect hashCode returned. Wanted: " + expectedHash 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + " got: " + ht10.hashCode(), expectedHash == ht10.hashCode()); 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#isEmpty() 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_isEmpty() { 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method boolean java.util.Hashtable.isEmpty() 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("isEmpty returned incorrect value", !ht10.isEmpty()); 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("isEmpty returned incorrect value", 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new java.util.Hashtable().isEmpty()); 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Hashtable ht = new Hashtable(); 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("0", ""); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread t1 = new Thread() { 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (!ht.isEmpty()) 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("final", ""); 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes t1.start(); 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 1; i < 10000; i++) { 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes synchronized (ht) { 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.remove(String.valueOf(i - 1)); 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put(String.valueOf(i), ""); 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int size; 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ((size = ht.size()) != 1) { 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = "Size is not 1: " + size + " " + ht; 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // terminate the thread 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.clear(); 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(result); 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // terminate the thread 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.clear(); 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#keys() 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_keys() { 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Enumeration java.util.Hashtable.keys() 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration keys = ht10.keys(); 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int i = 0; 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (keys.hasMoreElements()) { 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String s = (String) keys.nextElement(); 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Missing key from enumeration", keyVector.contains(s)); 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ++i; 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("All keys not retrieved", 10, ht10.size()); 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cast Enumeration to Iterator 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator iterator = (Iterator) keys; 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(iterator.hasNext()); 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#keys() 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_keys_subtest0() { 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // this is the reference implementation behavior 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Hashtable ht = new Hashtable(3); 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("initial", ""); 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration en = ht.keys(); 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes en.hasMoreElements(); 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.remove("initial"); 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean exception = false; 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object result = en.nextElement(); 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("unexpected: " + result, "initial".equals(result)); 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes exception = true; 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("unexpected NoSuchElementException", !exception); 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#keySet() 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_keySet() { 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Set java.util.Hashtable.keySet() 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set s = ht10.keySet(); 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration e = keyVector.elements(); 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (e.hasMoreElements()) 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned incorrect key set", s 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .contains(e.nextElement())); 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Not synchronized", 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.util.Collections$SynchronizedSet", s.getClass().getName()); 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map map = new Hashtable(101); 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put(new Integer(1), "1"); 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put(new Integer(102), "102"); 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put(new Integer(203), "203"); 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator it = map.keySet().iterator(); 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer remove1 = (Integer) it.next(); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it.remove(); 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer remove2 = (Integer) it.next(); 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it.remove(); 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ArrayList list = new ArrayList(Arrays.asList(new Integer[] { 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Integer(1), new Integer(102), new Integer(203) })); 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes list.remove(remove1); 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes list.remove(remove2); 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong result", it.next().equals(list.get(0))); 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong size", 1, map.size()); 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong contents", map.keySet().iterator().next().equals( 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes list.get(0))); 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map map2 = new Hashtable(101); 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map2.put(new Integer(1), "1"); 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map2.put(new Integer(4), "4"); 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator it2 = map2.keySet().iterator(); 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer remove3 = (Integer) it2.next(); 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer next; 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (remove3.intValue() == 1) 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes next = new Integer(4); 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes else 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes next = new Integer(1); 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it2.hasNext(); 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it2.remove(); 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong result 2", it2.next().equals(next)); 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Wrong size 2", 1, map2.size()); 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Wrong contents 2", map2.keySet().iterator().next().equals( 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes next)); 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cast Iterator to Enumeration 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration enumeration = (Enumeration) s.iterator(); 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(enumeration.hasMoreElements()); 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#keySet() 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_keySet_subtest0() { 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set s1 = ht10.keySet(); 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("should contain key", s1.remove("Key 0")); 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("should not contain key", !s1.remove("Key 0")); 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final int iterations = 10000; 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Hashtable ht = new Hashtable(); 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread t1 = new Thread() { 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < iterations; i++) { 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put(String.valueOf(i), ""); 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.remove(String.valueOf(i)); 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes t1.start(); 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set set = ht.keySet(); 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < iterations; i++) { 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator it = set.iterator(); 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it.next(); 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it.remove(); 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int size; 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ensure removing with the iterator doesn't corrupt the 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Hashtable 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ((size = ht.size()) < 0) { 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("invalid size: " + size); 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ConcurrentModificationException e) { 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#keySet() 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_keySet_subtest1() { 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // this is the reference implementation behavior 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Hashtable ht = new Hashtable(7); 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("1", "a"); 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // these three elements hash to the same bucket in a 7 element Hashtable 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("2", "b"); 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("9", "c"); 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("12", "d"); 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Hashtable looks like: 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 0: "1" 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1: "12" -> "9" -> "2" 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration en = ht.elements(); 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cache the first entry 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes en.hasMoreElements(); 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator it = ht.keySet().iterator(); 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // this is mostly a copy of the test in test_elements_subtest0() 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // test removing with the iterator does not null the values 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (it.hasNext()) { 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String key = (String) it.next(); 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ("12".equals(key) || "9".equals(key)) { 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it.remove(); 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes it.remove(); 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean exception = false; 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cached "12" 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object result = en.nextElement(); 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("unexpected: " + result, "d".equals(result)); 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // next is removed "9" 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = en.nextElement(); 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("unexpected: " + result, "c".equals(result)); 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes result = en.nextElement(); 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("unexpected: " + result, "b".equals(result)); 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes exception = true; 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("unexpected NoSuchElementException", !exception); 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#put(java.lang.Object, java.lang.Object) 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_putLjava_lang_ObjectLjava_lang_Object() { 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.Object 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.util.Hashtable.put(java.lang.Object, java.lang.Object) 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = hashtableClone(ht100); 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Integer key = new Integer(100); 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.put("Value 100", key); 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Key/Value not inserted", h.size() == 1 && (h.contains(key))); 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Put into "full" table 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h = hashtableClone(htfull); 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.put("Value 100", key); 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Key/Value not inserted into full table", h.size() == 8 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && (h.contains(key))); 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#putAll(java.util.Map) 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_putAllLjava_util_Map() { 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void java.util.Hashtable.putAll(java.util.Map) 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = new Hashtable(); 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.putAll(ht10); 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration e = keyVector.elements(); 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (e.hasMoreElements()) { 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object x = e.nextElement(); 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Failed to put all elements", h.get(x).equals( 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht10.get(x))); 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#remove(java.lang.Object) 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_removeLjava_lang_Object() { 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.Object 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.util.Hashtable.remove(java.lang.Object) 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = hashtableClone(htfull); 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object k = h.remove("FKey 0"); 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Remove failed", !h.containsKey("FKey 0") || k == null); 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_HashTable_remove_scenario1() { 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable hashTable = new Hashtable(); 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set keySet = hashTable.keySet(); 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.put(hashTable, keySet); 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.remove(hashTable); 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_HashTable_remove_scenario2() { 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable hashTable = new Hashtable(); 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Set keySet = hashTable.keySet(); 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.put(hashTable, hashTable); 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.remove(hashTable); 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_HashTable_remove_scenario3() { 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable hashTable = new Hashtable(); 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable keyHashTable = new Hashtable(); 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyHashTable.put(hashTable, keyHashTable); 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.put(keyHashTable, hashTable); 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.remove(keyHashTable); 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#size() 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_size() { 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method int java.util.Hashtable.size() 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned invalid size", ht10.size() == 10 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && (ht100.size() == 0)); 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Hashtable ht = new Hashtable(); 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("0", ""); 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Thread t1 = new Thread() { 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (ht.size() > 0) 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put("final", ""); 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes t1.start(); 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 1; i < 10000; i++) { 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes synchronized (ht) { 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.remove(String.valueOf(i - 1)); 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.put(String.valueOf(i), ""); 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int size; 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if ((size = ht.size()) != 1) { 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = "Size is not 1: " + size + " " + ht; 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // terminate the thread 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.clear(); 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(result); 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // terminate the thread 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht.clear(); 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#toString() 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toString() { 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.lang.String java.util.Hashtable.toString() 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable h = new Hashtable(); 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Incorrect toString for Empty table", 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "{}", h.toString()); 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.put("one", "1"); 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.put("two", h); 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.put(h, "3"); 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes h.put(h, h); 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String result = h.toString(); 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("should contain self ref", result.indexOf("(this") > -1); 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#values() 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_values() { 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.util.Collection java.util.Hashtable.values() 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Collection c = ht10.values(); 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration e = elmVector.elements(); 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while (e.hasMoreElements()) 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Returned incorrect values", c.contains(e.nextElement())); 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Not synchronized", 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "java.util.Collections$SynchronizedCollection", c.getClass().getName()); 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable myHashtable = new Hashtable(); 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 100; i++) 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes myHashtable.put(new Integer(i), new Integer(i)); 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Collection values = myHashtable.values(); 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new Support_UnmodifiableCollectionTest( 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Test Returned Collection From Hashtable.values()", values) 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .runTest(); 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes values.remove(new Integer(0)); 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Removing from the values collection should remove from the original map", 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes !myHashtable.containsValue(new Integer(0))); 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Regression Test for JIRA 2181 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_entrySet_remove() 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable<String,String> hashtable = new Hashtable<String,String>(); 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashtable.put("my.nonexistent.prop", "AAA"); 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashtable.put( "parse.error", "BBB" ); 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator<Map.Entry<String,String>> iterator = 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashtable.entrySet().iterator(); 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes while(iterator.hasNext()) 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map.Entry entry = iterator.next(); 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes final Object value = entry.getValue(); 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if(value.equals("AAA")) 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.remove(); 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(hashtable.containsKey("my.nonexistent.prop")); 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#elements() 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#keys() 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.Hashtable#keySet() 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_keys_elements_keySet_Exceptions() { 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable hashTable = new Hashtable(); 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String key = "key"; 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String value = "value"; 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.put(key, value); 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Iterator iterator = (Iterator) hashTable.keys(); 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(iterator.hasNext()); 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.remove(); 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw UnsupportedOperationException"); 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.remove(); 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw UnsupportedOperationException"); 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(iterator.hasNext()); 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator = (Iterator) hashTable.elements(); 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(iterator.hasNext()); 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.remove(); 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw UnsupportedOperationException"); 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.remove(); 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw UnsupportedOperationException"); 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e) { 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(iterator.hasNext()); 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator = hashTable.keySet().iterator(); 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(iterator.hasNext()); 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.remove(); 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw IllegalStateException"); 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.remove(); 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(iterator.hasNext()); 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.clear(); 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 10; i++) { 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.put(key + i, value + i); 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cast Enumeration to Iterator 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Enumeration enumeration = hashTable.keys(); 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator = (Iterator) enumeration; 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(enumeration.hasMoreElements()); 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(iterator.hasNext()); 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 10; i++) { 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (i % 2 == 0) { 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumeration.nextElement(); 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(enumeration.hasMoreElements()); 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(iterator.hasNext()); 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumeration.nextElement(); 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cast Enumeration to Iterator 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumeration = hashTable.elements(); 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator = (Iterator) enumeration; 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(enumeration.hasMoreElements()); 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(iterator.hasNext()); 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 10; i++) { 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (i % 2 == 0) { 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumeration.nextElement(); 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(enumeration.hasMoreElements()); 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(iterator.hasNext()); 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumeration.nextElement(); 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // cast Iterator to Enumeration 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumeration = (Enumeration) hashTable.keySet().iterator(); 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator = (Iterator) enumeration; 829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(enumeration.hasMoreElements()); 830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(iterator.hasNext()); 831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 10; i++) { 832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (i % 2 == 0) { 833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumeration.nextElement(); 834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(enumeration.hasMoreElements()); 839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse(iterator.hasNext()); 840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumeration.nextElement(); 842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes iterator.next(); 848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw NoSuchElementException"); 849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchElementException e) { 850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Expected 851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected Hashtable hashtableClone(Hashtable s) { 855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return (Hashtable) s.clone(); 856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Sets up the fixture, for example, open a network connection. This method 860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * is called before a test is executed. 861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() { 863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht10 = new Hashtable(10); 865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht100 = new Hashtable(100); 866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes htfull = new Hashtable(10); 867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyVector = new Vector(10); 868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes elmVector = new Vector(10); 869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 10; i++) { 871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ht10.put("Key " + i, "Val " + i); 872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes keyVector.addElement("Key " + i); 873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes elmVector.addElement("Val " + i); 874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < 7; i++) 877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes htfull.put("FKey " + i, "FVal " + i); 878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class ReusableKey { 881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private int key = 0; 882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void setKey(int key) { 884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.key = key; 885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int hashCode() { 888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return key; 889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean equals(Object o) { 892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (o == this) { 893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return true; 894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!(o instanceof ReusableKey)) { 896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return false; 897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return key == ((ReusableKey) o).key; 899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 902