1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/*
2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Licensed to the Apache Software Foundation (ASF) under one or more
3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  contributor license agreements.  See the NOTICE file distributed with
4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  this work for additional information regarding copyright ownership.
5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  The ASF licenses this file to You under the Apache License, Version 2.0
6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  (the "License"); you may not use this file except in compliance with
7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  the License.  You may obtain a copy of the License at
8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Unless required by applicable law or agreed to in writing, software
12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  distributed under the License is distributed on an "AS IS" BASIS,
13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  See the License for the specific language governing permissions and
15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  limitations under the License.
16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */
17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util;
19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
20665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamathimport org.apache.harmony.testframework.serialization.SerializationTest;
21665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamathimport tests.support.Support_MapTest2;
22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Serializable;
23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.AbstractMap;
24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ArrayList;
25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Arrays;
26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Collection;
27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.HashMap;
28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.IdentityHashMap;
29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Iterator;
30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Map;
31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Set;
32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.TreeMap;
33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class IdentityHashMap2Test extends junit.framework.TestCase {
35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private static final String ID = "hello";
36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    class MockMap extends AbstractMap {
38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public Set entrySet() {
39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return null;
40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public int size() {
43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return 0;
44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
46665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath    private IdentityHashMap hm;
47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
48665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath    private final static int hmSize = 20;
49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
50665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath    private Object[] objArray;
51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
52665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath    private Object[] objArray2;
53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#IdentityHashMap()
56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_Constructor() {
58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.IdentityHashMap()
59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        new Support_MapTest2(new IdentityHashMap()).runTest();
60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap hm2 = new IdentityHashMap();
62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Created incorrect IdentityHashMap", 0, hm2.size());
63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#IdentityHashMap(int)
67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorI() {
69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.IdentityHashMap(int)
70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap hm2 = new IdentityHashMap(5);
71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Created incorrect IdentityHashMap", 0, hm2.size());
72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new IdentityHashMap(-1);
74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return;
76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fail(
78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "Failed to throw IllegalArgumentException for initial capacity < 0");
79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap empty = new IdentityHashMap(0);
81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Empty IdentityHashMap access", empty.get("nothing"));
82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        empty.put("something", "here");
83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("cannot get element", empty.get("something") == "here");
84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#IdentityHashMap(java.util.Map)
88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_util_Map() {
90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.IdentityHashMap(java.util.Map)
91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Map myMap = new TreeMap();
92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int counter = 0; counter < hmSize; counter++)
93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            myMap.put(objArray2[counter], objArray[counter]);
94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap hm2 = new IdentityHashMap(myMap);
95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int counter = 0; counter < hmSize; counter++)
96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Failed to construct correct IdentityHashMap", hm
97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .get(objArray2[counter]) == hm2.get(objArray2[counter]));
98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Map mockMap = new MockMap();
100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hm2 = new IdentityHashMap(mockMap);
101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Size should be 0", 0, hm2.size());
102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_IdentityHashMap_Constructor_BigSize() {
105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new IdentityHashMap(Integer.MAX_VALUE);
107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw OutOfMemoryError");
108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (OutOfMemoryError e) {
109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#clear()
115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_clear() {
117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method void java.util.IdentityHashMap.clear()
118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hm.clear();
119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Clear failed to reset size", 0, hm.size());
120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < hmSize; i++)
121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull("Failed to clear all elements",
122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    hm.get(objArray2[i]));
123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#clone()
128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_clone() {
130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.Object java.util.IdentityHashMap.clone()
131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap hm2 = (IdentityHashMap) hm.clone();
132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Clone answered equivalent IdentityHashMap", hm2 != hm);
133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int counter = 0; counter < hmSize; counter++)
134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Clone answered unequal IdentityHashMap", hm
135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .get(objArray2[counter]) == hm2.get(objArray2[counter]));
136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap map = new IdentityHashMap();
138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map.put("key", "value");
139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // get the keySet() and values() on the original Map
140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set keys = map.keySet();
141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Collection values = map.values();
142665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        assertSame("values() does not work",
143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "value", values.iterator().next());
144665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        assertSame("keySet() does not work",
145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "key", keys.iterator().next());
146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        AbstractMap map2 = (AbstractMap) map.clone();
147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map2.put("key", "value2");
148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Collection values2 = map2.values();
149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("values() is identical", values2 != values);
150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // values() and keySet() on the cloned() map should be different
151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("values() was not cloned",
152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "value2", values2.iterator().next());
153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map2.clear();
154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map2.put("key2", "value3");
155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set key2 = map2.keySet();
156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("keySet() is identical", key2 != keys);
157665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        assertSame("keySet() was not cloned",
158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "key2", key2.iterator().next());
159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#containsKey(java.lang.Object)
163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_containsKeyLjava_lang_Object() {
165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap m = new IdentityHashMap();
166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        m.put(null, "test");
167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed with null key", m.containsKey(null));
168665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        assertFalse("Failed with missing key matching null hash", m.containsKey(new Integer(0)));
169665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath    }
170665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath
171665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath    public static class TestKey implements Cloneable {
172665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        private final String foo;
173665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath
174665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        TestKey(String foo) {
175665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath            this.foo = foo;
176665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        }
177665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath
178665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        @Override
179665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        public boolean equals(Object o) {
180665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath            return o instanceof TestKey && foo.equals(((TestKey) o).foo);
181665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        }
182665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath
183665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        public Object clone() throws CloneNotSupportedException {
184665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath            return super.clone();
185665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        }
186665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath    }
187665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath
188665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath    public void test_containsKey_copies() throws Exception {
189665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        TestKey a = new TestKey("a");
190665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        hm.put(a, new Object());
191665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        assertTrue(hm.containsKey(a));
192665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        assertFalse(hm.containsKey(a.clone()));
193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#containsValue(java.lang.Object)
197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_containsValueLjava_lang_Object() {
199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method boolean
200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.IdentityHashMap.containsValue(java.lang.Object)
201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned false for valid value", hm
202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .containsValue(objArray[19]));
203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned true for invalid valie", !hm
204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .containsValue(new Integer(-9)));
205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#entrySet()
209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_entrySet() {
211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.Set java.util.IdentityHashMap.entrySet()
212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set s = hm.entrySet();
213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator i = s.iterator();
214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned set of incorrect size", hm.size() == s.size());
215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (i.hasNext()) {
216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            Map.Entry m = (Map.Entry) i.next();
217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Returned incorrect entry set", hm.containsKey(m
218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .getKey())
219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    && hm.containsValue(m.getValue()));
220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#get(java.lang.Object)
225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getLjava_lang_Object() {
227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.Object
228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.IdentityHashMap.get(java.lang.Object)
229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Get returned non-null for non existent key",
230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                hm.get("T"));
231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hm.put("T", "HELLO");
232665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        assertEquals("Get returned incorecct value for existing key", "HELLO", hm.get("T"));
233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap m = new IdentityHashMap();
235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        m.put(null, "test");
236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Failed with null key", "test", m.get(null));
237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Failed with missing key matching null hash", m
238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .get(new Integer(0)));
239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#isEmpty()
243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_isEmpty() {
245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method boolean java.util.IdentityHashMap.isEmpty()
246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned false for new map", new IdentityHashMap()
247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .isEmpty());
248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned true for non-empty", !hm.isEmpty());
249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#keySet()
253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_keySet() {
255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.Set java.util.IdentityHashMap.keySet()
256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Set s = hm.keySet();
257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned set of incorrect size()", s.size() == hm.size());
258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < objArray.length; i++) {
259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Returned set does not contain all keys", s
260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .contains(objArray2[i]));
261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap m = new IdentityHashMap();
264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        m.put(null, "test");
265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed with null key", m.keySet().contains(null));
266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Failed with null key", m.keySet().iterator().next());
267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Map map = new IdentityHashMap(101);
269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map.put(new Integer(1), "1");
270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map.put(new Integer(102), "102");
271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map.put(new Integer(203), "203");
272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator it = map.keySet().iterator();
273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer remove1 = (Integer) it.next();
274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        it.hasNext();
275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        it.remove();
276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer remove2 = (Integer) it.next();
277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        it.remove();
278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ArrayList list = new ArrayList(Arrays.asList(new Integer[] {
279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new Integer(1), new Integer(102), new Integer(203) }));
280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        list.remove(remove1);
281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        list.remove(remove2);
282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong result", it.next().equals(list.get(0)));
283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong size", 1, map.size());
284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong contents", map.keySet().iterator().next().equals(
285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                list.get(0)));
286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Map map2 = new IdentityHashMap(101);
288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map2.put(new Integer(1), "1");
289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        map2.put(new Integer(4), "4");
290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Iterator it2 = map2.keySet().iterator();
291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer remove3 = (Integer) it2.next();
292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer next;
293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (remove3.intValue() == 1)
294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            next = new Integer(4);
295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        else
296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            next = new Integer(1);
297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        it2.hasNext();
298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        it2.remove();
299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong result 2", it2.next().equals(next));
300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong size 2", 1, map2.size());
301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Wrong contents 2", map2.keySet().iterator().next().equals(
302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                next));
303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#put(java.lang.Object, java.lang.Object)
307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_putLjava_lang_ObjectLjava_lang_Object() {
309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.Object
310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.IdentityHashMap.put(java.lang.Object, java.lang.Object)
311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hm.put("KEY", "VALUE");
312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Failed to install key/value pair",
313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "VALUE", hm.get("KEY"));
314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap m = new IdentityHashMap();
316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Short s0 = new Short((short) 0);
317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        m.put(s0, "short");
318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        m.put(null, "test");
319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer i0 = new Integer(0);
320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        m.put(i0, "int");
321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Failed adding to bucket containing null",
322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "short", m.get(s0));
323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Failed adding to bucket containing null2", "int", m.get(i0)
324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        );
325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#putAll(java.util.Map)
329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_putAllLjava_util_Map() {
331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method void java.util.IdentityHashMap.putAll(java.util.Map)
332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap hm2 = new IdentityHashMap();
333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hm2.putAll(hm);
334665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        for (int i = 0; i < hmSize; i++) {
335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Failed to clear all elements", hm2.get(objArray2[i])
336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .equals((new Integer(i))));
337665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        }
338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hm2 = new IdentityHashMap();
340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Map mockMap = new MockMap();
341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hm2.putAll(mockMap);
342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Size should be 0", 0, hm2.size());
343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#remove(java.lang.Object)
347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_removeLjava_lang_Object() {
349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.lang.Object
350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.IdentityHashMap.remove(java.lang.Object)
351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int size = hm.size();
352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Integer x = ((Integer) hm.remove(objArray2[9]));
353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Remove returned incorrect value", x.equals(new Integer(9)));
354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Failed to remove given key", hm.get(objArray2[9]));
355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed to decrement size", hm.size() == (size - 1));
356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Remove of non-existent key returned non-null", hm
357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .remove("LCLCLC"));
358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap m = new IdentityHashMap();
360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        m.put(null, "test");
361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Failed with same hash as null",
362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                m.remove(objArray[0]));
363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Failed with null key", "test", m.remove(null));
364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#size()
368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_size() {
370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method int java.util.IdentityHashMap.size()
371665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        assertEquals("Returned incorrect size, ", (objArray.length), hm.size());
372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#equals(java.lang.Object)
376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_equalsLjava_lang_Object() {
378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap mapOne = new IdentityHashMap();
379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap mapTwo = new IdentityHashMap();
380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap mapThree = new IdentityHashMap();
381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap mapFour = new IdentityHashMap();
382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String one = "one";
384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String alsoOne = new String(one); // use the new operator to ensure a
385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // new reference is constructed
386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String two = "two";
387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String alsoTwo = new String(two); // use the new operator to ensure a
388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // new reference is constructed
389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        mapOne.put(one, two);
391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        mapFour.put(one, two);
392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // these two are not equal to the above two
394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        mapTwo.put(alsoOne, two);
395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        mapThree.put(one, alsoTwo);
396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("failure of equality of IdentityHashMaps", mapOne, mapFour);
398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("failure of non-equality of IdentityHashMaps one and two",
399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                !mapOne.equals(mapTwo));
400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("failure of non-equality of IdentityHashMaps one and three",
401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                !mapOne.equals(mapThree));
402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("failure of non-equality of IdentityHashMaps two and three",
403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                !mapTwo.equals(mapThree));
404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        HashMap hashMapTwo = new HashMap();
406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        HashMap hashMapThree = new HashMap();
407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hashMapTwo.put(alsoOne, two);
408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hashMapThree.put(one, alsoTwo);
409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(
411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "failure of non-equality of IdentityHashMaps one and Hashmap two",
412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                !mapOne.equals(hashMapTwo));
413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(
414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "failure of non-equality of IdentityHashMaps one and Hashmap three",
415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                !mapOne.equals(hashMapThree));
416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.util.IdentityHashMap#values()
420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_values() {
422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for method java.util.Collection
423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // java.util.IdentityHashMap.values()
424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Collection c = hm.values();
425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Returned collection of incorrect size()", c.size() == hm
426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .size());
427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < objArray.length; i++)
428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Returned collection does not contain all keys", c
429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .contains(objArray[i]));
430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        IdentityHashMap myIdentityHashMap = new IdentityHashMap();
432665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        for (int i = 0; i < hmSize; i++)
433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            myIdentityHashMap.put(objArray2[i], objArray[i]);
434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        Collection values = myIdentityHashMap.values();
435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        values.remove(objArray[0]);
436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(
437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "Removing from the values collection should remove from the original map",
438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                !myIdentityHashMap.containsValue(objArray2[0]));
439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    protected void setUp() {
443665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        objArray = new Object[hmSize];
444665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        objArray2 = new Object[hmSize];
445665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        for (int i = 0; i < objArray.length; i++) {
446665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath            objArray[i] = new Integer(i);
447665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath            objArray2[i] = objArray[i].toString();
448665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        }
449665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath
450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        hm = new IdentityHashMap();
451665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        for (int i = 0; i < objArray.length; i++) {
452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            hm.put(objArray2[i], objArray[i]);
453665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath        }
454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private static final SerializationTest.SerializableAssert comparator = new
458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            SerializationTest.SerializableAssert() {
459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                public void assertDeserialized(Serializable initial, Serializable deserialized) {
461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    IdentityHashMap<String, String> initialMap = (IdentityHashMap<String, String>) initial;
462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    IdentityHashMap<String, String> deseriaMap = (IdentityHashMap<String, String>) deserialized;
463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals("should be equal", initialMap.size(), deseriaMap.size());
464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            };
467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath}
468