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 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.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 2434df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller assertFalse(elms.hasMoreElements()); 244ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 2454df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller elms.nextElement(); 246ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 247ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 248ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 249ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2525d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// BEGIN Android-removed 253c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 254c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// /** 255229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom// * java.util.Hashtable#elements() 256c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// */ 257c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// public void test_elements_subtest0() { 258c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // this is the reference implementation behavior 259c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// final Hashtable ht = new Hashtable(7); 260c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("1", "a"); 261c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // these three elements hash to the same bucket in a 7 element Hashtable 262c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("2", "b"); 263c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("9", "c"); 264c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("12", "d"); 265c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // Hashtable looks like: 266c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // 0: "1" 267c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // 1: "12" -> "9" -> "2" 268c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Enumeration en = ht.elements(); 269c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // cache the first entry 270c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// en.hasMoreElements(); 271c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.remove("12"); 272c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.remove("9"); 273c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// boolean exception = false; 274c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// try { 275c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // cached "12" 276c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Object result = en.nextElement(); 277c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertNull("unexpected: " + result, result); 278c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // next is removed "9" 279c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// result = en.nextElement(); 280c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertNull("unexpected: " + result, result); 281c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// result = en.nextElement(); 282c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected: " + result, "b".equals(result)); 283c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } catch (NoSuchElementException e) { 284c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// exception = true; 285c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 286c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected NoSuchElementException", !exception); 287c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 2885d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// END Android-removed 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 291229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#entrySet() 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_entrySet() { 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Set java.util.Hashtable.entrySet() 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set s = ht10.entrySet(); 296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set s2 = new HashSet(); 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator i = s.iterator(); 298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (i.hasNext()) 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project s2.add(((Map.Entry) i.next()).getValue()); 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration e = elmVector.elements(); 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (e.hasMoreElements()) 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect entry set", s2.contains(e 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .nextElement())); 3045d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// BEGIN Android-removed 305c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 306c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertEquals("Not synchronized", 307c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// "java.util.Collections$SynchronizedSet", s.getClass().getName()); 3085d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// END Android-removed 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean exception = false; 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ((Map.Entry) ht10.entrySet().iterator().next()).setValue(null); 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e1) { 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project exception = true; 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue( 317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Should not be able to assign null to a Hashtable entrySet() Map.Entry", 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project exception); 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 322229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#equals(java.lang.Object) 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_equalsLjava_lang_Object() { 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.Hashtable.equals(java.lang.Object) 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = hashtableClone(ht10); 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned false for equal tables", ht10.equals(h)); 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned true for unequal tables", !ht10.equals(htfull)); 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 332229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#get(java.lang.Object) 333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getLjava_lang_Object() { 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Hashtable.get(java.lang.Object) 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = hashtableClone(htfull); 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Could not retrieve element", "FVal 2", ((String) h.get("FKey 2")) 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ); 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 3415d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// BEGIN Android-removed 342c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 343c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // Regression for HARMONY-262 344c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ReusableKey k = new ReusableKey(); 345c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Hashtable h2 = new Hashtable(); 346c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// k.setKey(1); 347c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// h2.put(k, "value1"); 348c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// 349c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// k.setKey(13); 350c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertNull(h2.get(k)); 351c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// 352c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// k.setKey(12); 353c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertNull(h2.get(k)); 354f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes// 355c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// try { 356c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// h2.get(null); 357c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// fail("NullPointerException expected"); 358c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } catch (NullPointerException e) { 359c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// //expected 360c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 3615d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// END Android-removed 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 365229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#hashCode() 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_hashCode() { 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method int java.util.Hashtable.hashCode() 369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set entrySet = ht10.entrySet(); 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator iterator = entrySet.iterator(); 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int expectedHash; 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (expectedHash = 0; iterator.hasNext(); expectedHash += iterator 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .next().hashCode()) 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ; 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Incorrect hashCode returned. Wanted: " + expectedHash 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project + " got: " + ht10.hashCode(), expectedHash == ht10.hashCode()); 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 380229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#isEmpty() 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_isEmpty() { 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.util.Hashtable.isEmpty() 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("isEmpty returned incorrect value", !ht10.isEmpty()); 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("isEmpty returned incorrect value", 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new java.util.Hashtable().isEmpty()); 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final Hashtable ht = new Hashtable(); 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("0", ""); 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Thread t1 = new Thread() { 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void run() { 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (!ht.isEmpty()) 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ; 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("final", ""); 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t1.start(); 399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 1; i < 10000; i++) { 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project synchronized (ht) { 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.remove(String.valueOf(i - 1)); 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put(String.valueOf(i), ""); 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int size; 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((size = ht.size()) != 1) { 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String result = "Size is not 1: " + size + " " + ht; 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // terminate the thread 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.clear(); 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(result); 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // terminate the thread 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.clear(); 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 417229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#keys() 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_keys() { 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Enumeration java.util.Hashtable.keys() 421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration keys = ht10.keys(); 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int i = 0; 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (keys.hasMoreElements()) { 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String s = (String) keys.nextElement(); 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Missing key from enumeration", keyVector.contains(s)); 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ++i; 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("All keys not retrieved", 10, ht10.size()); 431ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 4324df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller assertFalse(keys.hasMoreElements()); 433ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 4344df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller keys.nextElement(); 435ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 436ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 437ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 438ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 442229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#keys() 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_keys_subtest0() { 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // this is the reference implementation behavior 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final Hashtable ht = new Hashtable(3); 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("initial", ""); 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration en = ht.keys(); 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project en.hasMoreElements(); 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.remove("initial"); 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean exception = false; 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object result = en.nextElement(); 454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("unexpected: " + result, "initial".equals(result)); 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchElementException e) { 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project exception = true; 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("unexpected NoSuchElementException", !exception); 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 462229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#keySet() 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_keySet() { 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Set java.util.Hashtable.keySet() 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set s = ht10.keySet(); 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration e = keyVector.elements(); 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (e.hasMoreElements()) 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect key set", s 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .contains(e.nextElement())); 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 4725d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// BEGIN Android-removed 473c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 474c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertEquals("Not synchronized", 475c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// "java.util.Collections$SynchronizedSet", s.getClass().getName()); 4765d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// END Android-removed 477f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Map map = new Hashtable(101); 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map.put(new Integer(1), "1"); 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map.put(new Integer(102), "102"); 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map.put(new Integer(203), "203"); 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator it = map.keySet().iterator(); 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer remove1 = (Integer) it.next(); 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it.remove(); 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer remove2 = (Integer) it.next(); 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it.remove(); 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ArrayList list = new ArrayList(Arrays.asList(new Integer[] { 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Integer(1), new Integer(102), new Integer(203) })); 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.remove(remove1); 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.remove(remove2); 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong result", it.next().equals(list.get(0))); 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong size", 1, map.size()); 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong contents", map.keySet().iterator().next().equals( 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project list.get(0))); 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Map map2 = new Hashtable(101); 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map2.put(new Integer(1), "1"); 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project map2.put(new Integer(4), "4"); 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator it2 = map2.keySet().iterator(); 500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer remove3 = (Integer) it2.next(); 501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer next; 502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (remove3.intValue() == 1) 503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project next = new Integer(4); 504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project else 505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project next = new Integer(1); 506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it2.hasNext(); 507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it2.remove(); 508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong result 2", it2.next().equals(next)); 509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong size 2", 1, map2.size()); 510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong contents 2", map2.keySet().iterator().next().equals( 511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project next)); 512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 515229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#keySet() 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_keySet_subtest0() { 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set s1 = ht10.keySet(); 519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("should contain key", s1.remove("Key 0")); 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("should not contain key", !s1.remove("Key 0")); 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final int iterations = 10000; 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final Hashtable ht = new Hashtable(); 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Thread t1 = new Thread() { 525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void run() { 526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < iterations; i++) { 527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put(String.valueOf(i), ""); 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.remove(String.valueOf(i)); 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t1.start(); 533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Set set = ht.keySet(); 534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < iterations; i++) { 535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Iterator it = set.iterator(); 536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it.next(); 538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project it.remove(); 539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int size; 540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ensure removing with the iterator doesn't corrupt the 541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Hashtable 542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((size = ht.size()) < 0) { 543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("invalid size: " + size); 544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NoSuchElementException e) { 546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (ConcurrentModificationException e) { 547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 5515d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// BEGIN Android-removed 552c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 553c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// /** 554229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom// * java.util.Hashtable#keySet() 555c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// */ 556c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// public void test_keySet_subtest1() { 557c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // this is the reference implementation behavior 558c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// final Hashtable ht = new Hashtable(7); 559c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("1", "a"); 560c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // these three elements hash to the same bucket in a 7 element Hashtable 561c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("2", "b"); 562c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("9", "c"); 563c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// ht.put("12", "d"); 564c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // Hashtable looks like: 565c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // 0: "1" 566c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // 1: "12" -> "9" -> "2" 567c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Enumeration en = ht.elements(); 568c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // cache the first entry 569c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// en.hasMoreElements(); 570c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Iterator it = ht.keySet().iterator(); 571c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // this is mostly a copy of the test in test_elements_subtest0() 572c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // test removing with the iterator does not null the values 573c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// while (it.hasNext()) { 574c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// String key = (String) it.next(); 575c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// if ("12".equals(key) || "9".equals(key)) { 576c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// it.remove(); 577c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 578c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 579c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// it.remove(); 580c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// boolean exception = false; 581c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// try { 582c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // cached "12" 583c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// Object result = en.nextElement(); 584c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected: " + result, "d".equals(result)); 585c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// // next is removed "9" 586c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// result = en.nextElement(); 587c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected: " + result, "c".equals(result)); 588c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// result = en.nextElement(); 589c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected: " + result, "b".equals(result)); 590c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } catch (NoSuchElementException e) { 591c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// exception = true; 592c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 593c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertTrue("unexpected NoSuchElementException", !exception); 594c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// } 5955d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// END Android-removed 596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 598229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#put(java.lang.Object, java.lang.Object) 599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_putLjava_lang_ObjectLjava_lang_Object() { 601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object 602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Hashtable.put(java.lang.Object, java.lang.Object) 603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = hashtableClone(ht100); 604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Integer key = new Integer(100); 605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("Value 100", key); 606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Key/Value not inserted", h.size() == 1 && (h.contains(key))); 607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Put into "full" table 609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h = hashtableClone(htfull); 610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("Value 100", key); 611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Key/Value not inserted into full table", h.size() == 8 612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && (h.contains(key))); 613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put(null, key); 616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("Value 100", null); 623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 630229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#putAll(java.util.Map) 631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_putAllLjava_util_Map() { 633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.util.Hashtable.putAll(java.util.Map) 634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = new Hashtable(); 635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.putAll(ht10); 636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration e = keyVector.elements(); 637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (e.hasMoreElements()) { 638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object x = e.nextElement(); 639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to put all elements", h.get(x).equals( 640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht10.get(x))); 641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.putAll(null); 645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException ee) { 647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 652229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#remove(java.lang.Object) 653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_removeLjava_lang_Object() { 655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object 656adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.Hashtable.remove(java.lang.Object) 657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = hashtableClone(htfull); 658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Object k = h.remove("FKey 0"); 659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Remove failed", !h.containsKey("FKey 0") || k == null); 660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(h.remove("FKey 0")); 661f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.remove(null); 664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("NullPointerException expected"); 665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //expected 667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 670ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_HashTable_remove_scenario1() { 671ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable hashTable = new Hashtable(); 672ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Set keySet = hashTable.keySet(); 673ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(hashTable, keySet); 674ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.remove(hashTable); 675ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 676ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 677ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_HashTable_remove_scenario2() { 678ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable hashTable = new Hashtable(); 679ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Set keySet = hashTable.keySet(); 680ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(hashTable, hashTable); 681ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.remove(hashTable); 682ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 683ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 684ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_HashTable_remove_scenario3() { 685ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable hashTable = new Hashtable(); 686ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable keyHashTable = new Hashtable(); 687ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath keyHashTable.put(hashTable, keyHashTable); 688ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(keyHashTable, hashTable); 689ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.remove(keyHashTable); 690ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 691ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 693229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#size() 694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_size() { 696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method int java.util.Hashtable.size() 697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned invalid size", ht10.size() == 10 698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && (ht100.size() == 0)); 699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project final Hashtable ht = new Hashtable(); 701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("0", ""); 702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Thread t1 = new Thread() { 703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void run() { 704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (ht.size() > 0) 705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ; 706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put("final", ""); 707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }; 709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t1.start(); 710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 1; i < 10000; i++) { 711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project synchronized (ht) { 712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.remove(String.valueOf(i - 1)); 713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.put(String.valueOf(i), ""); 714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int size; 716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if ((size = ht.size()) != 1) { 717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String result = "Size is not 1: " + size + " " + ht; 718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // terminate the thread 719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.clear(); 720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail(result); 721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // terminate the thread 724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht.clear(); 725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 728229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#toString() 729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_toString() { 731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.String java.util.Hashtable.toString() 732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable h = new Hashtable(); 733f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertEquals("Incorrect toString for Empty table", 734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "{}", h.toString()); 735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("one", "1"); 737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put("two", h); 738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put(h, "3"); 739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project h.put(h, h); 740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String result = h.toString(); 741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("should contain self ref", result.indexOf("(this") > -1); 742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 745229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.Hashtable#values() 746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_values() { 748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.util.Collection java.util.Hashtable.values() 749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection c = ht10.values(); 750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration e = elmVector.elements(); 751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (e.hasMoreElements()) 752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect values", c.contains(e.nextElement())); 753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 7545d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// BEGIN Android-removed 755c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent 756c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// assertEquals("Not synchronized", 757c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// "java.util.Collections$SynchronizedCollection", c.getClass().getName()); 7585d175dd4d7b128492ef7e3da6a77d80b8fd0aa22Tobias Thierer// END Android-removed 759f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Hashtable myHashtable = new Hashtable(); 761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 100; i++) 762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project myHashtable.put(new Integer(i), new Integer(i)); 763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Collection values = myHashtable.values(); 764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new Support_UnmodifiableCollectionTest( 765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Test Returned Collection From Hashtable.values()", values) 766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .runTest(); 767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project values.remove(new Integer(0)); 768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue( 769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Removing from the values collection should remove from the original map", 770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project !myHashtable.containsValue(new Integer(0))); 771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 772f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Regression Test for JIRA 2181 775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 776ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_entrySet_remove() { 777ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable<String, String> hashtable = new Hashtable<String, String>(); 778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project hashtable.put("my.nonexistent.prop", "AAA"); 779ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashtable.put("parse.error", "BBB"); 780ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Iterator<Map.Entry<String, String>> iterator = 781ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashtable.entrySet().iterator(); 782ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath while (iterator.hasNext()) { 783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Map.Entry entry = iterator.next(); 784f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes final Object value = entry.getValue(); 785ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath if (value.equals("AAA")) { 786ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(hashtable.containsKey("my.nonexistent.prop")); 790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class Mock_Hashtable extends Hashtable { 793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean flag = false; 794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Mock_Hashtable(int i) { 796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super(i); 797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void rehash() { 801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project flag = true; 802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project super.rehash(); 803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 804f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public boolean isRehashed() { 806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return flag; 807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_rehash() { 811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Mock_Hashtable mht = new Mock_Hashtable(5); 812f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(mht.isRehashed()); 814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for(int i = 0; i < 10; i++) { 815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mht.put(i, "New value"); 816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(mht.isRehashed()); 818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 820ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 821ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.Hashtable#elements() 822ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.Hashtable#keys() 823ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * java.util.Hashtable#keySet() 824ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 825ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_keys_elements_keySet_Exceptions() { 826ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Hashtable hashTable = new Hashtable(); 827ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath String key = "key"; 828ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath String value = "value"; 829ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(key, value); 830ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 8314df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller Enumeration enumeration = hashTable.keys(); 8324df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller assertTrue(enumeration.hasMoreElements()); 8334df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller enumeration.nextElement(); 8344df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller assertFalse(enumeration.hasMoreElements()); 835ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 8364df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller enumeration = hashTable.elements(); 8374df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller assertTrue(enumeration.hasMoreElements()); 8384df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller enumeration.nextElement(); 8394df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller assertFalse(enumeration.hasMoreElements()); 840ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 8414df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller Iterator iterator = hashTable.keySet().iterator(); 842ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(iterator.hasNext()); 843ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 844ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 845ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw IllegalStateException"); 846ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (IllegalStateException e) { 847ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 848ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 849ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 850ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.remove(); 851ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 852ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 853ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.clear(); 854ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 10; i++) { 855ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath hashTable.put(key + i, value + i); 856ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 857ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 8584df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller enumeration = hashTable.keys(); 859ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(enumeration.hasMoreElements()); 860ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 10; i++) { 8614df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller enumeration.nextElement(); 862ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 863ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(enumeration.hasMoreElements()); 864ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 865ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration.nextElement(); 866ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 867ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 868ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 869ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 870ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 871ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration = hashTable.elements(); 872ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(enumeration.hasMoreElements()); 873ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 10; i++) { 8744df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller enumeration.nextElement(); 875ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 876ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(enumeration.hasMoreElements()); 877ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 878ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath enumeration.nextElement(); 879ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 880ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 881ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 882ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 883ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 8844df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller iterator = hashTable.keySet().iterator(); 885ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue(iterator.hasNext()); 886ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath for (int i = 0; i < 10; i++) { 8874df29e1e1cf169ff6c77b8dd247de8c79b81d552Neil Fuller iterator.next(); 888ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 889ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertFalse(iterator.hasNext()); 890ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 891ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath iterator.next(); 892ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("should throw NoSuchElementException"); 893ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NoSuchElementException e) { 894ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // Expected 895ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 896ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 897ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 89860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach() throws Exception { 89960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak Hashtable<String, String> ht = new Hashtable<>(); 90060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.put("1", "one"); 90160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.put("2", "two"); 90260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.put("3", "three"); 90360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak Hashtable<String, String> output = new Hashtable<>(); 90460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 90560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.forEach((k,v) -> output.put(k,v)); 90660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak assertEquals(ht, output); 90760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 90860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 90960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach_NPE() throws Exception { 91060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak Hashtable<String, String> ht = new Hashtable<>(); 91160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak try { 91260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.forEach(null); 91360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak fail(); 91460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } catch(NullPointerException expected) {} 91560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 91660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 91760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void test_forEach_CME() throws Exception { 91860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak Hashtable<String, String> ht = new Hashtable<>(); 91960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.put("one", "1"); 92060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.put("two", "2"); 92160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.put("three", "3"); 92260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 92360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak Hashtable<String, String> outputHt = new Hashtable<>(); 92460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak try { 92560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.forEach(new java.util.function.BiConsumer<String, String>() { 92660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak @Override 92760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak public void accept(String k, String v) { 92860796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak outputHt.put(k, v); 92960796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak ht.put("foo", v); 93060796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 93160796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak }); 93260796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak fail(); 93360796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } catch(ConcurrentModificationException expected) {} 93460796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak // We should get a CME and DO NOT continue forEach evaluation 93560796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak assertEquals(1, outputHt.size()); 93660796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak } 93760796efea3a74e02aea384b8eb56103ea21b880bPrzemyslaw Szczepaniak 938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Hashtable hashtableClone(Hashtable s) { 939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return (Hashtable) s.clone(); 940adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 941f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 942adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 943adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is called before a test is executed. 945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 946adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() { 947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht10 = new Hashtable(10); 949adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht100 = new Hashtable(100); 950adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htfull = new Hashtable(10); 951adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyVector = new Vector(10); 952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project elmVector = new Vector(10); 953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 954adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 10; i++) { 955adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ht10.put("Key " + i, "Val " + i); 956adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyVector.addElement("Key " + i); 957adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project elmVector.addElement("Val " + i); 958adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 959adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 960adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 7; i++) 961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project htfull.put("FKey " + i, "FVal " + i); 962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 964adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 965adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tears down the fixture, for example, close a network connection. This 966adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method is called after a test is executed. 967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 969740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann ht10 = null; 970740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann ht100 = null; 971740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann htfull = null; 972740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann keyVector = null; 973740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann elmVector = null; 974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 975adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 976