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