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
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ArrayList;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ConcurrentModificationException;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Hashtable;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.NoSuchElementException;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.TreeMap;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector;
33c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Blochimport java.util.Collections;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.api.java.util.HashMapTest.ReusableKey;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_MapTest2;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_UnmodifiableCollectionTest;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class HashtableTest extends junit.framework.TestCase {
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Hashtable ht10;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Hashtable ht100;
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Hashtable htfull;
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Vector keyVector;
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Vector elmVector;
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private String h10sVal;
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
54229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#Hashtable()
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_Constructor() {
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Hashtable()
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_MapTest2(new Hashtable()).runTest();
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable h = new Hashtable();
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Created incorrect hashtable", 0, h.size());
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
66229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#Hashtable(int)
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorI() {
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Hashtable(int)
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable h = new Hashtable(9);
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Created incorrect hashtable", 0, h.size());
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable empty = new Hashtable(0);
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("Empty hashtable access", empty.get("nothing"));
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        empty.put("something", "here");
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("cannot get element", empty.get("something") == "here");
78f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new Hashtable(-1);
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
88229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#Hashtable(int, float)
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorIF() {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Hashtable(int, float)
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable h = new java.util.Hashtable(10, 0.5f);
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Created incorrect hashtable", 0, h.size());
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable empty = new Hashtable(0, 0.75f);
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("Empty hashtable access", empty.get("nothing"));
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        empty.put("something", "here");
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("cannot get element", empty.get("something") == "here");
99f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new Hashtable(-1, 0.75f);
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
106f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new Hashtable(0, -0.75f);
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
116229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#Hashtable(java.util.Map)
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_ConstructorLjava_util_Map() {
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Hashtable(java.util.Map)
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Map map = new TreeMap();
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object firstVal = "Gabba";
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object secondVal = new Integer(5);
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        map.put("Gah", firstVal);
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        map.put("Ooga", secondVal);
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable ht = new Hashtable(map);
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("a) Incorrect Hashtable constructed",
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.get("Gah") == firstVal);
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("b) Incorrect Hashtable constructed",
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.get("Ooga") == secondVal);
130f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new Hashtable(null);
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
140229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#Hashtable(java.util.Map)
141c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch     */
142c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch    public void test_ConversionConstructorNullValue() {
143c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch        Map<String, Void> map = Collections.singletonMap("Dog", null);
144c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch        try {
145c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch            new Hashtable<String, Void>(map);
146c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch            fail("NullPointerException expected");
147c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch        } catch (NullPointerException e) {
148c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch            //expected
149c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch        }
150c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch    }
151c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch    /**
152229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#clear()
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_clear() {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method void java.util.Hashtable.clear()
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable h = hashtableClone(htfull);
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        h.clear();
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Hashtable was not cleared", 0, h.size());
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration el = h.elements();
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration keys = h.keys();
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Hashtable improperly cleared", !el.hasMoreElements()
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                && !(keys.hasMoreElements()));
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
166229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#clone()
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_clone() {
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object java.util.Hashtable.clone()
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable h = (Hashtable) htfull.clone();
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Clone different size than original", h.size() == htfull
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .size());
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration org = htfull.keys();
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration cpy = h.keys();
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String okey, ckey;
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (org.hasMoreElements()) {
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Key comparison failed", (okey = (String) org
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .nextElement()).equals(ckey = (String) cpy.nextElement()));
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Value comparison failed", ((String) htfull.get(okey))
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .equals((String) h.get(ckey)));
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Copy has more keys than original", !cpy.hasMoreElements());
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
189229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#contains(java.lang.Object)
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_containsLjava_lang_Object() {
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method boolean
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Hashtable.contains(java.lang.Object)
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Element not found", ht10.contains("Val 7"));
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Invalid element found", !ht10.contains("ZZZZZZZZZZZZZZZZ"));
196f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ht10.contains(null);
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
206229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#containsKey(java.lang.Object)
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_containsKeyLjava_lang_Object() {
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method boolean
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Hashtable.containsKey(java.lang.Object)
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Failed to find key", htfull.containsKey("FKey 4"));
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Failed to find key", !htfull.containsKey("FKey 99"));
214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            htfull.containsKey(null);
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
224229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#containsValue(java.lang.Object)
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_containsValueLjava_lang_Object() {
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method boolean
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Hashtable.containsValue(java.lang.Object)
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration e = elmVector.elements();
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (e.hasMoreElements())
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned false for valid value", ht10.containsValue(e
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .nextElement()));
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned true for invalid value", !ht10
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .containsValue(new Object()));
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ht10.containsValue(null);
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
245229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#elements()
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_elements() {
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Enumeration java.util.Hashtable.elements()
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration elms = ht10.elements();
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i = 0;
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (elms.hasMoreElements()) {
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String s = (String) elms.nextElement();
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Missing key from enumeration", elmVector.contains(s));
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ++i;
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("All keys not retrieved", 10, ht10.size());
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
260c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed
261c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent
262c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//    /**
263229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom//     * java.util.Hashtable#elements()
264c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//     */
265c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//    public void test_elements_subtest0() {
266c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        // this is the reference implementation behavior
267c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        final Hashtable ht = new Hashtable(7);
268c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        ht.put("1", "a");
269c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        // these three elements hash to the same bucket in a 7 element Hashtable
270c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        ht.put("2", "b");
271c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        ht.put("9", "c");
272c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        ht.put("12", "d");
273c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        // Hashtable looks like:
274c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        // 0: "1"
275c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        // 1: "12" -> "9" -> "2"
276c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        Enumeration en = ht.elements();
277c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        // cache the first entry
278c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        en.hasMoreElements();
279c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        ht.remove("12");
280c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        ht.remove("9");
281c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        boolean exception = false;
282c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        try {
283c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            // cached "12"
284c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            Object result = en.nextElement();
285c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            assertNull("unexpected: " + result, result);
286c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            // next is removed "9"
287c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            result = en.nextElement();
288c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            assertNull("unexpected: " + result, result);
289c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            result = en.nextElement();
290c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            assertTrue("unexpected: " + result, "b".equals(result));
291c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        } catch (NoSuchElementException e) {
292c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            exception = true;
293c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        }
294c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        assertTrue("unexpected NoSuchElementException", !exception);
295c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//    }
296c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
299229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#entrySet()
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_entrySet() {
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Set java.util.Hashtable.entrySet()
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set s = ht10.entrySet();
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set s2 = new HashSet();
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator i = s.iterator();
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (i.hasNext())
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s2.add(((Map.Entry) i.next()).getValue());
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration e = elmVector.elements();
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (e.hasMoreElements())
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned incorrect entry set", s2.contains(e
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .nextElement()));
312c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed
313c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent
314c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        assertEquals("Not synchronized",
315c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//                "java.util.Collections$SynchronizedSet", s.getClass().getName());
316c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean exception = false;
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ((Map.Entry) ht10.entrySet().iterator().next()).setValue(null);
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e1) {
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            exception = true;
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Should not be able to assign null to a Hashtable entrySet() Map.Entry",
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                exception);
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
330229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#equals(java.lang.Object)
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_equalsLjava_lang_Object() {
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method boolean java.util.Hashtable.equals(java.lang.Object)
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable h = hashtableClone(ht10);
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned false for equal tables", ht10.equals(h));
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned true for unequal tables", !ht10.equals(htfull));
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
340229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#get(java.lang.Object)
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getLjava_lang_Object() {
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.Object
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // java.util.Hashtable.get(java.lang.Object)
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable h = hashtableClone(htfull);
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Could not retrieve element", "FVal 2", ((String) h.get("FKey 2"))
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
349c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed
350c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent
351c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        // Regression for HARMONY-262
352c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        ReusableKey k = new ReusableKey();
353c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        Hashtable h2 = new Hashtable();
354c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        k.setKey(1);
355c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        h2.put(k, "value1");
356c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//
357c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        k.setKey(13);
358c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        assertNull(h2.get(k));
359c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//
360c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        k.setKey(12);
361c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        assertNull(h2.get(k));
362f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes//
363c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        try {
364c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            h2.get(null);
365c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            fail("NullPointerException expected");
366c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        } catch (NullPointerException e) {
367c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//            //expected
368c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        }
369c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
373229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#hashCode()
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_hashCode() {
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method int java.util.Hashtable.hashCode()
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set entrySet = ht10.entrySet();
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator iterator = entrySet.iterator();
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int expectedHash;
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (expectedHash = 0; iterator.hasNext(); expectedHash += iterator
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .next().hashCode())
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ;
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Incorrect hashCode returned.  Wanted: " + expectedHash
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + " got: " + ht10.hashCode(), expectedHash == ht10.hashCode());
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
388229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#isEmpty()
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_isEmpty() {
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method boolean java.util.Hashtable.isEmpty()
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("isEmpty returned incorrect value", !ht10.isEmpty());
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("isEmpty returned incorrect value",
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new java.util.Hashtable().isEmpty());
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final Hashtable ht = new Hashtable();
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ht.put("0", "");
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread t1 = new Thread() {
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public void run() {
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                while (!ht.isEmpty())
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ;
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.put("final", "");
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        t1.start();
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 1; i < 10000; i++) {
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            synchronized (ht) {
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.remove(String.valueOf(i - 1));
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.put(String.valueOf(i), "");
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int size;
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if ((size = ht.size()) != 1) {
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                String result = "Size is not 1: " + size + " " + ht;
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                // terminate the thread
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.clear();
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail(result);
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // terminate the thread
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ht.clear();
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
425229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#keys()
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_keys() {
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Enumeration java.util.Hashtable.keys()
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration keys = ht10.keys();
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i = 0;
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (keys.hasMoreElements()) {
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            String s = (String) keys.nextElement();
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Missing key from enumeration", keyVector.contains(s));
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ++i;
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("All keys not retrieved", 10, ht10.size());
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
472c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed
473c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent
474c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        assertEquals("Not synchronized",
475c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//                "java.util.Collections$SynchronizedSet", s.getClass().getName());
476c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// 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
551c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// 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//    }
595c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// 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
670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
671229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#size()
672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_size() {
674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method int java.util.Hashtable.size()
675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Returned invalid size", ht10.size() == 10
676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                && (ht100.size() == 0));
677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        final Hashtable ht = new Hashtable();
679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ht.put("0", "");
680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Thread t1 = new Thread() {
681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public void run() {
682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                while (ht.size() > 0)
683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    ;
684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.put("final", "");
685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        t1.start();
688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 1; i < 10000; i++) {
689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            synchronized (ht) {
690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.remove(String.valueOf(i - 1));
691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.put(String.valueOf(i), "");
692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            int size;
694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if ((size = ht.size()) != 1) {
695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                String result = "Size is not 1: " + size + " " + ht;
696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                // terminate the thread
697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ht.clear();
698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                fail(result);
699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // terminate the thread
702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ht.clear();
703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
706229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#toString()
707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_toString() {
709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.lang.String java.util.Hashtable.toString()
710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable h = new Hashtable();
711f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        assertEquals("Incorrect toString for Empty table",
712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "{}", h.toString());
713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        h.put("one", "1");
715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        h.put("two", h);
716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        h.put(h, "3");
717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        h.put(h, h);
718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String result = h.toString();
719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("should contain self ref", result.indexOf("(this") > -1);
720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
723229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.util.Hashtable#values()
724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_values() {
726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test for method java.util.Collection java.util.Hashtable.values()
727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection c = ht10.values();
728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Enumeration e = elmVector.elements();
729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (e.hasMoreElements())
730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Returned incorrect values", c.contains(e.nextElement()));
731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
732c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// BEGIN android-removed
733c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// implementation dependent
734c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//        assertEquals("Not synchronized",
735c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch//                "java.util.Collections$SynchronizedCollection", c.getClass().getName());
736c0a4d9b35cbdd33dcc8e6a78a829573f0ed9bf6dJoshua Bloch// END android-removed
737f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable myHashtable = new Hashtable();
739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 100; i++)
740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            myHashtable.put(new Integer(i), new Integer(i));
741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Collection values = myHashtable.values();
742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_UnmodifiableCollectionTest(
743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Test Returned Collection From Hashtable.values()", values)
744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .runTest();
745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        values.remove(new Integer(0));
746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "Removing from the values collection should remove from the original map",
748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                !myHashtable.containsValue(new Integer(0)));
749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
750f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Regression Test for JIRA 2181
753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_entrySet_remove()
755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    {
756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Hashtable<String,String> hashtable = new Hashtable<String,String>();
757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        hashtable.put("my.nonexistent.prop", "AAA");
758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        hashtable.put( "parse.error", "BBB" );
759f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        Iterator<Map.Entry<String,String>> iterator =
760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            hashtable.entrySet().iterator();
761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while(iterator.hasNext())
762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        {
763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Map.Entry entry = iterator.next();
764f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes            final Object value = entry.getValue();
765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if(value.equals("AAA"))
766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            {
767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project               iterator.remove();
768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
770adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(hashtable.containsKey("my.nonexistent.prop"));
771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class Mock_Hashtable extends Hashtable {
774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean flag = false;
775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Mock_Hashtable(int i) {
777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super(i);
778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void rehash() {
782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            flag = true;
783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super.rehash();
784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
785f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean isRehashed() {
787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return flag;
788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_rehash() {
792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Mock_Hashtable mht = new Mock_Hashtable(5);
793f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(mht.isRehashed());
795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(int i = 0; i < 10; i++) {
796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mht.put(i, "New value");
797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(mht.isRehashed());
799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected Hashtable hashtableClone(Hashtable s) {
802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return (Hashtable) s.clone();
803adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
804f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Sets up the fixture, for example, open a network connection. This method
807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * is called before a test is executed.
808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() {
810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ht10 = new Hashtable(10);
812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ht100 = new Hashtable(100);
813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        htfull = new Hashtable(10);
814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        keyVector = new Vector(10);
815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        elmVector = new Vector(10);
816adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 10; i++) {
818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ht10.put("Key " + i, "Val " + i);
819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            keyVector.addElement("Key " + i);
820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            elmVector.addElement("Val " + i);
821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < 7; i++)
824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            htfull.put("FKey " + i, "FVal " + i);
825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Tears down the fixture, for example, close a network connection. This
829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * method is called after a test is executed.
830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void tearDown() {
832740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        ht10 = null;
833740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        ht100 = null;
834740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        htfull = null;
835740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        keyVector = null;
836740cbf1565815f08d9fb3a0a8d4a581cdc0d2a9dJorg Pleumann        elmVector = null;
837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
839