HashtableTest.java revision ba45f538a14c08015021e899f5883f07ed2ff237
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.java.util; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport tests.support.Support_MapTest2; 21ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport tests.support.Support_UnmodifiableCollectionTest; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ConcurrentModificationException; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Hashtable; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.NoSuchElementException; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.TreeMap; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector; 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class HashtableTest extends junit.framework.TestCase { 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Hashtable ht10; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Hashtable ht100; 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Hashtable htfull; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Vector keyVector; 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Vector elmVector; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String h10sVal; 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 51229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#Hashtable() 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_Constructor() { 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Hashtable() 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Support_MapTest2(new Hashtable()).runTest(); 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = new Hashtable(); 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Created incorrect hashtable", 0, h.size()); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 63229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#Hashtable(int) 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorI() { 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Hashtable(int) 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = new Hashtable(9); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Created incorrect hashtable", 0, h.size()); 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable empty = new Hashtable(0); 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Empty hashtable access", empty.get("nothing")); 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project empty.put("something", "here"); 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("cannot get element", empty.get("something") == "here"); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 78229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#Hashtable(int, float) 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorIF() { 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Hashtable(int, float) 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = new java.util.Hashtable(10, 0.5f); 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Created incorrect hashtable", 0, h.size()); 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable empty = new Hashtable(0, 0.75f); 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull("Empty hashtable access", empty.get("nothing")); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project empty.put("something", "here"); 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("cannot get element", empty.get("something") == "here"); 89f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Hashtable(-1, 0.75f); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException expected"); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Hashtable(0, -0.75f); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException expected"); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 106229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#Hashtable(java.util.Map) 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_util_Map() { 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Hashtable(java.util.Map) 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Map map = new TreeMap(); 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object firstVal = "Gabba"; 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object secondVal = new Integer(5); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map.put("Gah", firstVal); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map.put("Ooga", secondVal); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable ht = new Hashtable(map); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("a) Incorrect Hashtable constructed", 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.get("Gah") == firstVal); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("b) Incorrect Hashtable constructed", 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.get("Ooga") == secondVal); 120f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Hashtable(null); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 129ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_HashTable_Constructor() { 130ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable hashTable = new Hashtable(); 131ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(hashTable, hashTable.keySet()); 132ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath new Hashtable(hashTable); 133c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch } 134ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 135c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch /** 136229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#clear() 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_clear() { 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.util.Hashtable.clear() 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = hashtableClone(htfull); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.clear(); 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Hashtable was not cleared", 0, h.size()); 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration el = h.elements(); 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration keys = h.keys(); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Hashtable improperly cleared", !el.hasMoreElements() 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && !(keys.hasMoreElements())); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 150229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#clone() 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_clone() { 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object java.util.Hashtable.clone() 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = (Hashtable) htfull.clone(); 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Clone different size than original", h.size() == htfull 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .size()); 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration org = htfull.keys(); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration cpy = h.keys(); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String okey, ckey; 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (org.hasMoreElements()) { 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Key comparison failed", (okey = (String) org 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .nextElement()).equals(ckey = (String) cpy.nextElement())); 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Value comparison failed", ((String) htfull.get(okey)) 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals((String) h.get(ckey))); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Copy has more keys than original", !cpy.hasMoreElements()); 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 173229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#contains(java.lang.Object) 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_containsLjava_lang_Object() { 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Hashtable.contains(java.lang.Object) 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Element not found", ht10.contains("Val 7")); 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Invalid element found", !ht10.contains("ZZZZZZZZZZZZZZZZ")); 180f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht10.contains(null); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 190229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#containsKey(java.lang.Object) 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_containsKeyLjava_lang_Object() { 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Hashtable.containsKey(java.lang.Object) 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to find key", htfull.containsKey("FKey 4")); 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to find key", !htfull.containsKey("FKey 99")); 198f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htfull.containsKey(null); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 208229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#containsValue(java.lang.Object) 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_containsValueLjava_lang_Object() { 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Hashtable.containsValue(java.lang.Object) 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration e = elmVector.elements(); 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (e.hasMoreElements()) 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false for valid value", ht10.containsValue(e 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .nextElement())); 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned true for invalid value", !ht10 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .containsValue(new Object())); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht10.containsValue(null); 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException ee) { 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 229229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#elements() 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_elements() { 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Enumeration java.util.Hashtable.elements() 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration elms = ht10.elements(); 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int i = 0; 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (elms.hasMoreElements()) { 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String s = (String) elms.nextElement(); 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing key from enumeration", elmVector.contains(s)); 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ++i; 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("All keys not retrieved", 10, ht10.size()); 242ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 243ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // cast Enumeration to Iterator 244ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Iterator iterator = (Iterator) elms; 245ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 246ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 247ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 248ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 249ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 250ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 251ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 254c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed 255c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 256c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// /** 257229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom// * java.util.Hashtable#elements() 258c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// */ 259c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// public void test_elements_subtest0() { 260c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // this is the reference implementation behavior 261c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// final Hashtable ht = new Hashtable(7); 262c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("1", "a"); 263c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // these three elements hash to the same bucket in a 7 element Hashtable 264c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("2", "b"); 265c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("9", "c"); 266c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("12", "d"); 267c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // Hashtable looks like: 268c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // 0: "1" 269c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // 1: "12" -> "9" -> "2" 270c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Enumeration en = ht.elements(); 271c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // cache the first entry 272c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// en.hasMoreElements(); 273c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.remove("12"); 274c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.remove("9"); 275c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// boolean exception = false; 276c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// try { 277c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // cached "12" 278c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Object result = en.nextElement(); 279c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertNull("unexpected: " + result, result); 280c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // next is removed "9" 281c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// result = en.nextElement(); 282c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertNull("unexpected: " + result, result); 283c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// result = en.nextElement(); 284c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected: " + result, "b".equals(result)); 285c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } catch (NoSuchElementException e) { 286c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// exception = true; 287c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 288c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected NoSuchElementException", !exception); 289c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 290c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 293229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#entrySet() 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_entrySet() { 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Set java.util.Hashtable.entrySet() 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set s = ht10.entrySet(); 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set s2 = new HashSet(); 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator i = s.iterator(); 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (i.hasNext()) 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project s2.add(((Map.Entry) i.next()).getValue()); 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration e = elmVector.elements(); 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (e.hasMoreElements()) 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect entry set", s2.contains(e 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .nextElement())); 306c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed 307c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 308c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertEquals("Not synchronized", 309c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// "java.util.Collections$SynchronizedSet", s.getClass().getName()); 310c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean exception = false; 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ((Map.Entry) ht10.entrySet().iterator().next()).setValue(null); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e1) { 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project exception = true; 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue( 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Should not be able to assign null to a Hashtable entrySet() Map.Entry", 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project exception); 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 324229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#equals(java.lang.Object) 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_equalsLjava_lang_Object() { 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.Hashtable.equals(java.lang.Object) 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = hashtableClone(ht10); 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false for equal tables", ht10.equals(h)); 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned true for unequal tables", !ht10.equals(htfull)); 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 334229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#get(java.lang.Object) 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getLjava_lang_Object() { 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Hashtable.get(java.lang.Object) 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = hashtableClone(htfull); 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Could not retrieve element", "FVal 2", ((String) h.get("FKey 2")) 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ); 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 343c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed 344c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 345c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // Regression for HARMONY-262 346c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ReusableKey k = new ReusableKey(); 347c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Hashtable h2 = new Hashtable(); 348c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// k.setKey(1); 349c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// h2.put(k, "value1"); 350c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// 351c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// k.setKey(13); 352c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertNull(h2.get(k)); 353c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// 354c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// k.setKey(12); 355c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertNull(h2.get(k)); 356f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes// 357c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// try { 358c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// h2.get(null); 359c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// fail("NullPointerException expected"); 360c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } catch (NullPointerException e) { 361c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// //expected 362c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 363c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 367229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#hashCode() 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_hashCode() { 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method int java.util.Hashtable.hashCode() 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set entrySet = ht10.entrySet(); 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator iterator = entrySet.iterator(); 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int expectedHash; 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (expectedHash = 0; iterator.hasNext(); expectedHash += iterator 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .next().hashCode()) 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ; 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect hashCode returned. Wanted: " + expectedHash 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " got: " + ht10.hashCode(), expectedHash == ht10.hashCode()); 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 382229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#isEmpty() 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_isEmpty() { 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.Hashtable.isEmpty() 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("isEmpty returned incorrect value", !ht10.isEmpty()); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("isEmpty returned incorrect value", 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new java.util.Hashtable().isEmpty()); 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final Hashtable ht = new Hashtable(); 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("0", ""); 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Thread t1 = new Thread() { 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void run() { 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (!ht.isEmpty()) 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ; 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("final", ""); 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t1.start(); 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 1; i < 10000; i++) { 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project synchronized (ht) { 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.remove(String.valueOf(i - 1)); 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put(String.valueOf(i), ""); 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int size; 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((size = ht.size()) != 1) { 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String result = "Size is not 1: " + size + " " + ht; 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // terminate the thread 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.clear(); 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(result); 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // terminate the thread 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.clear(); 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 419229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#keys() 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_keys() { 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Enumeration java.util.Hashtable.keys() 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration keys = ht10.keys(); 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int i = 0; 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (keys.hasMoreElements()) { 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String s = (String) keys.nextElement(); 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing key from enumeration", keyVector.contains(s)); 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ++i; 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("All keys not retrieved", 10, ht10.size()); 433ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 434ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // cast Enumeration to Iterator 435ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Iterator iterator = (Iterator) keys; 436ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 437ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 438ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 439ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 440ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 441ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 442ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 446229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#keys() 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_keys_subtest0() { 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // this is the reference implementation behavior 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final Hashtable ht = new Hashtable(3); 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("initial", ""); 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration en = ht.keys(); 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project en.hasMoreElements(); 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.remove("initial"); 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean exception = false; 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object result = en.nextElement(); 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("unexpected: " + result, "initial".equals(result)); 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchElementException e) { 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project exception = true; 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("unexpected NoSuchElementException", !exception); 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 466229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#keySet() 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_keySet() { 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Set java.util.Hashtable.keySet() 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set s = ht10.keySet(); 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration e = keyVector.elements(); 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (e.hasMoreElements()) 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect key set", s 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(e.nextElement())); 475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 476c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed 477c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 478c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertEquals("Not synchronized", 479c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// "java.util.Collections$SynchronizedSet", s.getClass().getName()); 480c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed 481f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Map map = new Hashtable(101); 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map.put(new Integer(1), "1"); 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map.put(new Integer(102), "102"); 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map.put(new Integer(203), "203"); 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator it = map.keySet().iterator(); 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer remove1 = (Integer) it.next(); 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it.remove(); 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer remove2 = (Integer) it.next(); 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it.remove(); 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList list = new ArrayList(Arrays.asList(new Integer[] { 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Integer(1), new Integer(102), new Integer(203) })); 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.remove(remove1); 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.remove(remove2); 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong result", it.next().equals(list.get(0))); 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong size", 1, map.size()); 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong contents", map.keySet().iterator().next().equals( 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.get(0))); 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Map map2 = new Hashtable(101); 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map2.put(new Integer(1), "1"); 502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map2.put(new Integer(4), "4"); 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator it2 = map2.keySet().iterator(); 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer remove3 = (Integer) it2.next(); 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer next; 506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (remove3.intValue() == 1) 507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project next = new Integer(4); 508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project else 509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project next = new Integer(1); 510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it2.hasNext(); 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it2.remove(); 512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong result 2", it2.next().equals(next)); 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong size 2", 1, map2.size()); 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong contents 2", map2.keySet().iterator().next().equals( 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project next)); 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 519229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#keySet() 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_keySet_subtest0() { 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set s1 = ht10.keySet(); 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("should contain key", s1.remove("Key 0")); 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("should not contain key", !s1.remove("Key 0")); 525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final int iterations = 10000; 527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final Hashtable ht = new Hashtable(); 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Thread t1 = new Thread() { 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void run() { 530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < iterations; i++) { 531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put(String.valueOf(i), ""); 532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.remove(String.valueOf(i)); 533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t1.start(); 537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set set = ht.keySet(); 538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < iterations; i++) { 539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator it = set.iterator(); 540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it.next(); 542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it.remove(); 543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int size; 544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ensure removing with the iterator doesn't corrupt the 545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Hashtable 546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((size = ht.size()) < 0) { 547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("invalid size: " + size); 548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchElementException e) { 550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (ConcurrentModificationException e) { 551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 555c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed 556c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 557c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// /** 558229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom// * java.util.Hashtable#keySet() 559c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// */ 560c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// public void test_keySet_subtest1() { 561c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // this is the reference implementation behavior 562c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// final Hashtable ht = new Hashtable(7); 563c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("1", "a"); 564c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // these three elements hash to the same bucket in a 7 element Hashtable 565c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("2", "b"); 566c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("9", "c"); 567c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("12", "d"); 568c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // Hashtable looks like: 569c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // 0: "1" 570c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // 1: "12" -> "9" -> "2" 571c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Enumeration en = ht.elements(); 572c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // cache the first entry 573c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// en.hasMoreElements(); 574c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Iterator it = ht.keySet().iterator(); 575c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // this is mostly a copy of the test in test_elements_subtest0() 576c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // test removing with the iterator does not null the values 577c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// while (it.hasNext()) { 578c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// String key = (String) it.next(); 579c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// if ("12".equals(key) || "9".equals(key)) { 580c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// it.remove(); 581c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 582c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 583c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// it.remove(); 584c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// boolean exception = false; 585c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// try { 586c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // cached "12" 587c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Object result = en.nextElement(); 588c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected: " + result, "d".equals(result)); 589c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // next is removed "9" 590c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// result = en.nextElement(); 591c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected: " + result, "c".equals(result)); 592c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// result = en.nextElement(); 593c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected: " + result, "b".equals(result)); 594c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } catch (NoSuchElementException e) { 595c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// exception = true; 596c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 597c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected NoSuchElementException", !exception); 598c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 599c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed 600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 602229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#put(java.lang.Object, java.lang.Object) 603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_putLjava_lang_ObjectLjava_lang_Object() { 605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object 606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Hashtable.put(java.lang.Object, java.lang.Object) 607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = hashtableClone(ht100); 608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer key = new Integer(100); 609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("Value 100", key); 610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Key/Value not inserted", h.size() == 1 && (h.contains(key))); 611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Put into "full" table 613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h = hashtableClone(htfull); 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("Value 100", key); 615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Key/Value not inserted into full table", h.size() == 8 616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && (h.contains(key))); 617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put(null, key); 620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("Value 100", null); 627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 634229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#putAll(java.util.Map) 635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_putAllLjava_util_Map() { 637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.util.Hashtable.putAll(java.util.Map) 638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = new Hashtable(); 639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.putAll(ht10); 640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration e = keyVector.elements(); 641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (e.hasMoreElements()) { 642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object x = e.nextElement(); 643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to put all elements", h.get(x).equals( 644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht10.get(x))); 645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.putAll(null); 649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException ee) { 651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 656229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#remove(java.lang.Object) 657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_removeLjava_lang_Object() { 659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object 660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Hashtable.remove(java.lang.Object) 661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = hashtableClone(htfull); 662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object k = h.remove("FKey 0"); 663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Remove failed", !h.containsKey("FKey 0") || k == null); 664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(h.remove("FKey 0")); 665f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.remove(null); 668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 674ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_HashTable_remove_scenario1() { 675ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable hashTable = new Hashtable(); 676ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Set keySet = hashTable.keySet(); 677ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(hashTable, keySet); 678ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.remove(hashTable); 679ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 680ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 681ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_HashTable_remove_scenario2() { 682ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable hashTable = new Hashtable(); 683ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Set keySet = hashTable.keySet(); 684ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(hashTable, hashTable); 685ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.remove(hashTable); 686ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 687ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 688ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_HashTable_remove_scenario3() { 689ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable hashTable = new Hashtable(); 690ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable keyHashTable = new Hashtable(); 691ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath keyHashTable.put(hashTable, keyHashTable); 692ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(keyHashTable, hashTable); 693ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.remove(keyHashTable); 694ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 695ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 697229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#size() 698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_size() { 700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method int java.util.Hashtable.size() 701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned invalid size", ht10.size() == 10 702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && (ht100.size() == 0)); 703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final Hashtable ht = new Hashtable(); 705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("0", ""); 706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Thread t1 = new Thread() { 707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void run() { 708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (ht.size() > 0) 709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ; 710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("final", ""); 711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t1.start(); 714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 1; i < 10000; i++) { 715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project synchronized (ht) { 716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.remove(String.valueOf(i - 1)); 717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put(String.valueOf(i), ""); 718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int size; 720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((size = ht.size()) != 1) { 721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String result = "Size is not 1: " + size + " " + ht; 722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // terminate the thread 723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.clear(); 724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(result); 725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // terminate the thread 728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.clear(); 729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 732229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#toString() 733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toString() { 735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.String java.util.Hashtable.toString() 736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = new Hashtable(); 737f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertEquals("Incorrect toString for Empty table", 738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "{}", h.toString()); 739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("one", "1"); 741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("two", h); 742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put(h, "3"); 743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put(h, h); 744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String result = h.toString(); 745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("should contain self ref", result.indexOf("(this") > -1); 746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 749229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#values() 750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_values() { 752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Collection java.util.Hashtable.values() 753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection c = ht10.values(); 754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration e = elmVector.elements(); 755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (e.hasMoreElements()) 756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect values", c.contains(e.nextElement())); 757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 758c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed 759c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 760c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertEquals("Not synchronized", 761c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// "java.util.Collections$SynchronizedCollection", c.getClass().getName()); 762c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed 763f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable myHashtable = new Hashtable(); 765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 100; i++) 766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project myHashtable.put(new Integer(i), new Integer(i)); 767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection values = myHashtable.values(); 768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Support_UnmodifiableCollectionTest( 769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Test Returned Collection From Hashtable.values()", values) 770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .runTest(); 771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.remove(new Integer(0)); 772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue( 773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Removing from the values collection should remove from the original map", 774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project !myHashtable.containsValue(new Integer(0))); 775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 776f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Regression Test for JIRA 2181 779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 780ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_entrySet_remove() { 781ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable<String, String> hashtable = new Hashtable<String, String>(); 782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hashtable.put("my.nonexistent.prop", "AAA"); 783ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashtable.put("parse.error", "BBB"); 784ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Iterator<Map.Entry<String, String>> iterator = 785ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashtable.entrySet().iterator(); 786ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath while (iterator.hasNext()) { 787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Map.Entry entry = iterator.next(); 788f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes final Object value = entry.getValue(); 789ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath if (value.equals("AAA")) { 790ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(hashtable.containsKey("my.nonexistent.prop")); 794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class Mock_Hashtable extends Hashtable { 797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean flag = false; 798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Mock_Hashtable(int i) { 800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(i); 801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void rehash() { 805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project flag = true; 806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.rehash(); 807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 808f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isRehashed() { 810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return flag; 811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_rehash() { 815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Mock_Hashtable mht = new Mock_Hashtable(5); 816f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(mht.isRehashed()); 818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for(int i = 0; i < 10; i++) { 819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mht.put(i, "New value"); 820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(mht.isRehashed()); 822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 824ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 825ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.Hashtable#elements() 826ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.Hashtable#keys() 827ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.Hashtable#keySet() 828ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 829ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_keys_elements_keySet_Exceptions() { 830ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable hashTable = new Hashtable(); 831ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath String key = "key"; 832ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath String value = "value"; 833ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(key, value); 834ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 835ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Iterator iterator = (Iterator) hashTable.keys(); 836ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(iterator.hasNext()); 837ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 838ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 839ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw UnsupportedOperationException"); 840ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (UnsupportedOperationException e) { 841ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 842ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 843ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 844ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 845ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 846ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw UnsupportedOperationException"); 847ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (UnsupportedOperationException e) { 848ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 849ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 850ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 851ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 852ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator = (Iterator) hashTable.elements(); 853ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(iterator.hasNext()); 854ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 855ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 856ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw UnsupportedOperationException"); 857ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (UnsupportedOperationException e) { 858ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 859ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 860ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 861ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 862ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 863ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw UnsupportedOperationException"); 864ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (UnsupportedOperationException e) { 865ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 866ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 867ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 868ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 869ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator = hashTable.keySet().iterator(); 870ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(iterator.hasNext()); 871ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 872ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 873ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw IllegalStateException"); 874ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IllegalStateException e) { 875ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 876ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 877ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 878ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 879ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 880ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 881ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.clear(); 882ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 10; i++) { 883ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(key + i, value + i); 884ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 885ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 886ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // cast Enumeration to Iterator 887ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Enumeration enumeration = hashTable.keys(); 888ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator = (Iterator) enumeration; 889ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(enumeration.hasMoreElements()); 890ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(iterator.hasNext()); 891ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 10; i++) { 892ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath if (i % 2 == 0) { 893ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration.nextElement(); 894ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } else { 895ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 896ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 897ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 898ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(enumeration.hasMoreElements()); 899ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 900ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 901ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration.nextElement(); 902ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 903ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 904ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 905ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 906ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 907ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 908ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 909ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 910ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 911ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 912ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 913ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // cast Enumeration to Iterator 914ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration = hashTable.elements(); 915ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator = (Iterator) enumeration; 916ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(enumeration.hasMoreElements()); 917ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(iterator.hasNext()); 918ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 10; i++) { 919ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath if (i % 2 == 0) { 920ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration.nextElement(); 921ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } else { 922ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 923ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 924ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 925ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(enumeration.hasMoreElements()); 926ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 927ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 928ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration.nextElement(); 929ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 930ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 931ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 932ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 933ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 934ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 935ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 936ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 937ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 938ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 939ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 940ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // cast Iterator to Enumeration 941ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration = (Enumeration) hashTable.keySet().iterator(); 942ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator = (Iterator) enumeration; 943ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(enumeration.hasMoreElements()); 944ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(iterator.hasNext()); 945ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 10; i++) { 946ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath if (i % 2 == 0) { 947ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration.nextElement(); 948ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } else { 949ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 950ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 951ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 952ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(enumeration.hasMoreElements()); 953ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 954ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 955ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration.nextElement(); 956ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 957ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 958ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 959ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 960ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 961ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 962ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 963ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 964ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 965ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 966ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 967ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Hashtable hashtableClone(Hashtable s) { 969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (Hashtable) s.clone(); 970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 971f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is called before a test is executed. 975adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() { 977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht10 = new Hashtable(10); 979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht100 = new Hashtable(100); 980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htfull = new Hashtable(10); 981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyVector = new Vector(10); 982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project elmVector = new Vector(10); 983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 984adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 10; i++) { 985adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht10.put("Key " + i, "Val " + i); 986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyVector.addElement("Key " + i); 987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project elmVector.addElement("Val " + i); 988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 7; i++) 991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htfull.put("FKey " + i, "FVal " + i); 992adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 993adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tears down the fixture, for example, close a network connection. This 996adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method is called after a test is executed. 997adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 998adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 999740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann ht10 = null; 1000740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann ht100 = null; 1001740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann htfull = null; 1002740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann keyVector = null; 1003740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann elmVector = null; 1004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1005adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 1006