1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Serializable;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.AbstractMap;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayList;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Collection;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.HashMap;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Iterator;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.LinkedHashMap;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.List;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Set;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TreeMap;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_MapTest2;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_UnmodifiableCollectionTest;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.util.LinkedHashMap
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class LinkedHashMapTest extends junit.framework.TestCase {
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
41ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    LinkedHashMap hm;
42ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
43ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    final static int hmSize = 1000;
44ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
45ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    static Object[] objArray;
46ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
47ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    static Object[] objArray2;
48ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    {
49ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        objArray = new Object[hmSize];
50ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        objArray2 = new Object[hmSize];
51ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int i = 0; i < objArray.length; i++) {
52ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            objArray[i] = new Integer(i);
53ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            objArray2[i] = objArray[i].toString();
54ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
55ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
56ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
57ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    static final class CacheMap extends LinkedHashMap {
58ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        protected boolean removeEldestEntry(Map.Entry e) {
59ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            return size() > 5;
60ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
61ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
62ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static class MockMapNull extends AbstractMap {
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        @Override
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Set entrySet() {
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        @Override
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public int size() {
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return 10;
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
75ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
76ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#LinkedHashMap()
77ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
78ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_Constructor() {
79ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.util.LinkedHashMap()
80ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        new Support_MapTest2(new LinkedHashMap()).runTest();
81ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
82ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap hm2 = new LinkedHashMap();
83ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Created incorrect LinkedHashMap", 0, hm2.size());
84ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
85ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
86ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
87ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#LinkedHashMap(int)
88ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
89ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_ConstructorI() {
90ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.util.LinkedHashMap(int)
91ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap hm2 = new LinkedHashMap(5);
92ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Created incorrect LinkedHashMap", 0, hm2.size());
93ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        try {
94ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            new LinkedHashMap(-1);
95ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            fail();
96ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        } catch (IllegalArgumentException expected) {
97ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
98ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
99ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap empty = new LinkedHashMap(0);
100ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertNull("Empty LinkedHashMap access", empty.get("nothing"));
101ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        empty.put("something", "here");
102ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("cannot get element", empty.get("something") == "here");
103ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
104ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
105ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
106ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#LinkedHashMap(int, float)
107ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
108ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_ConstructorIF() {
109ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.util.LinkedHashMap(int, float)
110ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap hm2 = new LinkedHashMap(5, (float) 0.5);
111ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Created incorrect LinkedHashMap", 0, hm2.size());
112ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        try {
113ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            new LinkedHashMap(0, 0);
114ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            fail();
115ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        } catch (IllegalArgumentException expected) {
116ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
117ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
118ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap empty = new LinkedHashMap(0, 0.75f);
119ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertNull("Empty hashtable access", empty.get("nothing"));
120ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        empty.put("something", "here");
121ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("cannot get element", empty.get("something") == "here");
122ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
123ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
124ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
125ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#LinkedHashMap(java.util.Map)
126ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
127ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_ConstructorLjava_util_Map() {
128ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.util.LinkedHashMap(java.util.Map)
129ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Map myMap = new TreeMap();
130ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int counter = 0; counter < hmSize; counter++)
131ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            myMap.put(objArray2[counter], objArray[counter]);
132ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap hm2 = new LinkedHashMap(myMap);
133ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int counter = 0; counter < hmSize; counter++)
134ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Failed to construct correct LinkedHashMap", hm
135ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                    .get(objArray2[counter]) == hm2.get(objArray2[counter]));
136ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
137ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
138ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
139ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#get(java.lang.Object)
140ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
141ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_getLjava_lang_Object() {
142ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.lang.Object
143ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // java.util.LinkedHashMap.get(java.lang.Object)
144ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertNull("Get returned non-null for non existent key",
145ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                hm.get("T"));
146ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        hm.put("T", "HELLO");
147ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Get returned incorecct value for existing key", "HELLO", hm.get("T")
148ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                );
149ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
150ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap m = new LinkedHashMap();
151ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        m.put(null, "test");
152ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Failed with null key", "test", m.get(null));
153ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertNull("Failed with missing key matching null hash", m
154ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                .get(new Integer(0)));
155ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
156ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
157ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
158ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#put(java.lang.Object, java.lang.Object)
159ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
160ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_putLjava_lang_ObjectLjava_lang_Object() {
161ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.lang.Object
162ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // java.util.LinkedHashMap.put(java.lang.Object, java.lang.Object)
163ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        hm.put("KEY", "VALUE");
164ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Failed to install key/value pair",
165ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                "VALUE", hm.get("KEY"));
166ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
167ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap m = new LinkedHashMap();
168ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        m.put(new Short((short) 0), "short");
169ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        m.put(null, "test");
170ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        m.put(new Integer(0), "int");
171ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Failed adding to bucket containing null", "short", m.get(
172ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                new Short((short) 0)));
173ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Failed adding to bucket containing null2", "int", m.get(
174ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                new Integer(0)));
175ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
176ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
177ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
178ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#putAll(java.util.Map)
179ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
180ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_putAllLjava_util_Map() {
181ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method void java.util.LinkedHashMap.putAll(java.util.Map)
182ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap hm2 = new LinkedHashMap();
183ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        hm2.putAll(hm);
184ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int i = 0; i < 1000; i++)
185ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Failed to clear all elements", hm2.get(
186ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                    new Integer(i).toString()).equals((new Integer(i))));
187ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.util.LinkedHashMap#putAll(java.util.Map)
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_putAll_Ljava_util_Map_Null() {
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        LinkedHashMap linkedHashMap = new LinkedHashMap();
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            linkedHashMap.putAll(new MockMapNull());
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NullPointerException");
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected.
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            linkedHashMap = new LinkedHashMap(new MockMapNull());
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NullPointerException");
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected.
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
207ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
208ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
209ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
210ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#entrySet()
211ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
212ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_entrySet() {
213ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.util.Set java.util.LinkedHashMap.entrySet()
214ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set s = hm.entrySet();
215ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator i = s.iterator();
216ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size", hm.size() == s.size());
217ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        while (i.hasNext()) {
218ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Map.Entry m = (Map.Entry) i.next();
219ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set", hm.containsKey(m
220ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                    .getKey())
221ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                    && hm.containsValue(m.getValue()));
222ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
223ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
224ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
225ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
226ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#keySet()
227ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
228ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_keySet() {
229ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.util.Set java.util.LinkedHashMap.keySet()
230ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set s = hm.keySet();
231ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size()", s.size() == hm.size());
232ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int i = 0; i < objArray.length; i++)
233ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned set does not contain all keys", s
234ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                    .contains(objArray[i].toString()));
235ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
236ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap m = new LinkedHashMap();
237ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        m.put(null, "test");
238ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Failed with null key", m.keySet().contains(null));
239ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertNull("Failed with null key", m.keySet().iterator().next());
240ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
241ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Map map = new LinkedHashMap(101);
242ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        map.put(new Integer(1), "1");
243ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        map.put(new Integer(102), "102");
244ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        map.put(new Integer(203), "203");
245ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it = map.keySet().iterator();
246ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Integer remove1 = (Integer) it.next();
247ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        it.hasNext();
248ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        it.remove();
249ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Integer remove2 = (Integer) it.next();
250ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        it.remove();
251ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        ArrayList list = new ArrayList(Arrays.asList(new Integer[] {
252ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                new Integer(1), new Integer(102), new Integer(203) }));
253ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        list.remove(remove1);
254ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        list.remove(remove2);
255ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Wrong result", it.next().equals(list.get(0)));
256ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Wrong size", 1, map.size());
257ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Wrong contents", map.keySet().iterator().next().equals(
258ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                list.get(0)));
259ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
260ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Map map2 = new LinkedHashMap(101);
261ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        map2.put(new Integer(1), "1");
262ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        map2.put(new Integer(4), "4");
263ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it2 = map2.keySet().iterator();
264ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Integer remove3 = (Integer) it2.next();
265ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Integer next;
266ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        if (remove3.intValue() == 1)
267ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            next = new Integer(4);
268ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        else
269ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            next = new Integer(1);
270ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        it2.hasNext();
271ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        it2.remove();
272ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Wrong result 2", it2.next().equals(next));
273ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Wrong size 2", 1, map2.size());
274ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Wrong contents 2", map2.keySet().iterator().next().equals(
275ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                next));
276ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
277ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
278ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
279ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#values()
280ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
281ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_values() {
282ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.util.Collection java.util.LinkedHashMap.values()
283ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Collection c = hm.values();
284ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned collection of incorrect size()", c.size() == hm
285ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                .size());
286ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int i = 0; i < objArray.length; i++)
287ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned collection does not contain all keys", c
288ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                    .contains(objArray[i]));
289ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
290ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap myLinkedHashMap = new LinkedHashMap();
291ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int i = 0; i < 100; i++)
292ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            myLinkedHashMap.put(objArray2[i], objArray[i]);
293ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Collection values = myLinkedHashMap.values();
294ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        new Support_UnmodifiableCollectionTest(
295ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                "Test Returned Collection From LinkedHashMap.values()", values)
296ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                .runTest();
297ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        values.remove(new Integer(0));
298ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue(
299ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                "Removing from the values collection should remove from the original map",
300ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                !myLinkedHashMap.containsValue(new Integer(0)));
301ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
302ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
303ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
304ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
305ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#remove(java.lang.Object)
306ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
307ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_removeLjava_lang_Object() {
308ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.lang.Object
309ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // java.util.LinkedHashMap.remove(java.lang.Object)
310ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int size = hm.size();
311ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Integer y = new Integer(9);
312ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Integer x = ((Integer) hm.remove(y.toString()));
313ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Remove returned incorrect value", x.equals(new Integer(9)));
314ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertNull("Failed to remove given key", hm.get(new Integer(9)));
315ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Failed to decrement size", hm.size() == (size - 1));
316ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertNull("Remove of non-existent key returned non-null", hm
317ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                .remove("LCLCLC"));
318ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
319ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap m = new LinkedHashMap();
320ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        m.put(null, "test");
321ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertNull("Failed with same hash as null",
322ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                m.remove(new Integer(0)));
323ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Failed with null key", "test", m.remove(null));
324ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
325ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
326ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
327ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#clear()
328ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
329ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_clear() {
330ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method void java.util.LinkedHashMap.clear()
331ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        hm.clear();
332ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("Clear failed to reset size", 0, hm.size());
333ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int i = 0; i < hmSize; i++)
334ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertNull("Failed to clear all elements",
335ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                    hm.get(objArray2[i]));
336ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
337ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
338ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
339ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
340ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#clone()
341ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
342ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_clone() {
343ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method java.lang.Object java.util.LinkedHashMap.clone()
344ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap hm2 = (LinkedHashMap) hm.clone();
345ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Clone answered equivalent LinkedHashMap", hm2 != hm);
346ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int counter = 0; counter < hmSize; counter++)
347ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Clone answered unequal LinkedHashMap", hm
348ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                    .get(objArray2[counter]) == hm2.get(objArray2[counter]));
349ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
350ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap map = new LinkedHashMap();
351ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        map.put("key", "value");
352ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // get the keySet() and values() on the original Map
353ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set keys = map.keySet();
354ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Collection values = map.values();
355ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("values() does not work",
356ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                "value", values.iterator().next());
357ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("keySet() does not work",
358ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                "key", keys.iterator().next());
359ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        AbstractMap map2 = (AbstractMap) map.clone();
360ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        map2.put("key", "value2");
361ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Collection values2 = map2.values();
362ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("values() is identical", values2 != values);
363ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
364ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // values() and keySet() on the cloned() map should be different
365ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("values() was not cloned",
366ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                "value2", values2.iterator().next());
367ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        map2.clear();
368ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        map2.put("key2", "value3");
369ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set key2 = map2.keySet();
370ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("keySet() is identical", key2 != keys);
371ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("keySet() was not cloned",
372ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                "key2", key2.iterator().next());
373ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
374ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // regresion test for HARMONY-4603
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_clone_Mock() {
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        LinkedHashMap hashMap = new MockMap();
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String value = "value a";
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hashMap.put("key", value);
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MockMap cloneMap = (MockMap) hashMap.clone();
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(value, cloneMap.get("key"));
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(hashMap, cloneMap);
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, cloneMap.num);
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        hashMap.put("key", "value b");
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(hashMap.equals(cloneMap));
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    class MockMap extends LinkedHashMap {
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int num;
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Object put(Object k, Object v) {
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            num++;
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return super.put(k, v);
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        protected boolean removeEldestEntry(Map.Entry e) {
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return num > 1;
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
400ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
401ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
402ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
403ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#containsKey(java.lang.Object)
404ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
405ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_containsKeyLjava_lang_Object() {
406ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method boolean
407ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // java.util.LinkedHashMap.containsKey(java.lang.Object)
408ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned false for valid key", hm.containsKey(new Integer(
409ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                876).toString()));
410ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned true for invalid key", !hm.containsKey("KKDKDKD"));
411ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
412ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap m = new LinkedHashMap();
413ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        m.put(null, "test");
414ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Failed with null key", m.containsKey(null));
415ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Failed with missing key matching null hash", !m
416ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                .containsKey(new Integer(0)));
417ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
418ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
419ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
420ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#containsValue(java.lang.Object)
421ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
422ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_containsValueLjava_lang_Object() {
423ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method boolean
424ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // java.util.LinkedHashMap.containsValue(java.lang.Object)
425ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned false for valid value", hm
426ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                .containsValue(new Integer(875)));
427ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned true for invalid valie", !hm
428ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                .containsValue(new Integer(-9)));
429ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
430ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
431ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
432ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#isEmpty()
433ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
434ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_isEmpty() {
435ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method boolean java.util.LinkedHashMap.isEmpty()
436ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned false for new map", new LinkedHashMap().isEmpty());
437ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned true for non-empty", !hm.isEmpty());
438ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
439ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
440ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
441ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#size()
442ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
443ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_size() {
444ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // Test for method int java.util.LinkedHashMap.size()
445ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned incorrect size",
446ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                hm.size() == (objArray.length + 2));
447ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
448ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
449ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
450ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#entrySet()
451ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
452ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_ordered_entrySet() {
453ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int i;
454ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int sz = 100;
455ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap lhm = new LinkedHashMap();
456ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i++) {
457ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer ii = new Integer(i);
458ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            lhm.put(ii, ii.toString());
459ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
460ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
461ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set s1 = lhm.entrySet();
462ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it1 = s1.iterator();
463ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size 1", lhm.size() == s1.size());
464ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; it1.hasNext(); i++) {
465ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Map.Entry m = (Map.Entry) it1.next();
466ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) m.getKey();
467ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set 1", jj.intValue() == i);
468ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
469ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
470ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap lruhm = new LinkedHashMap(200, .75f, true);
471ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i++) {
472ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer ii = new Integer(i);
473ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            lruhm.put(ii, ii.toString());
474ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
475ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
476ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set s3 = lruhm.entrySet();
477ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it3 = s3.iterator();
478ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size 2", lruhm.size() == s3
479ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                .size());
480ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz && it3.hasNext(); i++) {
481ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Map.Entry m = (Map.Entry) it3.next();
482ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) m.getKey();
483ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set 2", jj.intValue() == i);
484ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
485ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
486ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        /* fetch the even numbered entries to affect traversal order */
487ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int p = 0;
488ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i += 2) {
489ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            String ii = (String) lruhm.get(new Integer(i));
490ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            p = p + Integer.parseInt(ii);
491ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
492ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("invalid sum of even numbers", 2450, p);
493ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
494ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set s2 = lruhm.entrySet();
495ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it2 = s2.iterator();
496ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size 3", lruhm.size() == s2
497ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson                .size());
498ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 1; i < sz && it2.hasNext(); i += 2) {
499ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Map.Entry m = (Map.Entry) it2.next();
500ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) m.getKey();
501ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set 3", jj.intValue() == i);
502ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
503ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz && it2.hasNext(); i += 2) {
504ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Map.Entry m = (Map.Entry) it2.next();
505ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) m.getKey();
506ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set 4", jj.intValue() == i);
507ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
508ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Entries left to iterate on", !it2.hasNext());
509ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
510ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
511ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
512ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#keySet()
513ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
514ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_ordered_keySet() {
515ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int i;
516ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int sz = 100;
517ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap lhm = new LinkedHashMap();
518ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i++) {
519ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer ii = new Integer(i);
520ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            lhm.put(ii, ii.toString());
521ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
522ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
523ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set s1 = lhm.keySet();
524ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it1 = s1.iterator();
525ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size", lhm.size() == s1.size());
526ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; it1.hasNext(); i++) {
527ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) it1.next();
528ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set", jj.intValue() == i);
529ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
530ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
531ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap lruhm = new LinkedHashMap(200, .75f, true);
532ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i++) {
533ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer ii = new Integer(i);
534ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            lruhm.put(ii, ii.toString());
535ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
536ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
537ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set s3 = lruhm.keySet();
538ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it3 = s3.iterator();
539ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size", lruhm.size() == s3.size());
540ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz && it3.hasNext(); i++) {
541ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) it3.next();
542ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set", jj.intValue() == i);
543ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
544ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
545ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        /* fetch the even numbered entries to affect traversal order */
546ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int p = 0;
547ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i += 2) {
548ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            String ii = (String) lruhm.get(new Integer(i));
549ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            p = p + Integer.parseInt(ii);
550ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
551ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertEquals("invalid sum of even numbers", 2450, p);
552ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
553ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Set s2 = lruhm.keySet();
554ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it2 = s2.iterator();
555ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size", lruhm.size() == s2.size());
556ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 1; i < sz && it2.hasNext(); i += 2) {
557ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) it2.next();
558ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set", jj.intValue() == i);
559ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
560ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz && it2.hasNext(); i += 2) {
561ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) it2.next();
562ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set", jj.intValue() == i);
563ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
564ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Entries left to iterate on", !it2.hasNext());
565ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
566ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
567ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
568ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#values()
569ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
570ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_ordered_values() {
571ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int i;
572ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int sz = 100;
573ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap lhm = new LinkedHashMap();
574ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i++) {
575ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer ii = new Integer(i);
576ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            lhm.put(ii, new Integer(i * 2));
577ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
578ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
579ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Collection s1 = lhm.values();
580ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it1 = s1.iterator();
581ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size 1", lhm.size() == s1.size());
582ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; it1.hasNext(); i++) {
583ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) it1.next();
584ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set 1", jj.intValue() == i * 2);
585ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
586ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
587ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        LinkedHashMap lruhm = new LinkedHashMap(200, .75f, true);
588ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i++) {
589ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer ii = new Integer(i);
590ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            lruhm.put(ii, new Integer(i * 2));
591ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
592ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
593ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Collection s3 = lruhm.values();
594ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it3 = s3.iterator();
595ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size", lruhm.size() == s3.size());
596ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz && it3.hasNext(); i++) {
597ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) it3.next();
598ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set", jj.intValue() == i * 2);
599ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
600ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
601ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        // fetch the even numbered entries to affect traversal order
602ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int p = 0;
603ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i += 2) {
604ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer ii = (Integer) lruhm.get(new Integer(i));
605ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            p = p + ii.intValue();
606ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
607ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("invalid sum of even numbers", p == 2450 * 2);
608ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
609ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Collection s2 = lruhm.values();
610ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it2 = s2.iterator();
611ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size", lruhm.size() == s2.size());
612ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 1; i < sz && it2.hasNext(); i += 2) {
613ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) it2.next();
614ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set", jj.intValue() == i * 2);
615ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
616ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz && it2.hasNext(); i += 2) {
617ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) it2.next();
618ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set", jj.intValue() == i * 2);
619ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
620ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Entries left to iterate on", !it2.hasNext());
621ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
622ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
623ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
624ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * @tests java.util.LinkedHashMap#removeEldestEntry(java.util.Map$Entry)
625ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
626ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_remove_eldest() {
627ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int i;
628ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        int sz = 10;
629ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        CacheMap lhm = new CacheMap();
630ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 0; i < sz; i++) {
631ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer ii = new Integer(i);
632ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            lhm.put(ii, new Integer(i * 2));
633ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
634ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
635ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Collection s1 = lhm.values();
636ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        Iterator it1 = s1.iterator();
637ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Returned set of incorrect size 1", lhm.size() == s1.size());
638ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (i = 5; it1.hasNext(); i++) {
639ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            Integer jj = (Integer) it1.next();
640ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            assertTrue("Returned incorrect entry set 1", jj.intValue() == i * 2);
641ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        }
642ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        assertTrue("Entries left in map", !it1.hasNext());
643ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
644ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
645ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    public void test_getInterfaces() {
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Class<?>[] interfaces = HashMap.class.getInterfaces();
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(3, interfaces.length);
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        List<Class<?>> interfaceList = Arrays.asList(interfaces);
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(interfaceList.contains(Map.class));
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(interfaceList.contains(Cloneable.class));
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(interfaceList.contains(Serializable.class));
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        interfaces = LinkedHashMap.class.getInterfaces();
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, interfaces.length);
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        interfaceList = Arrays.asList(interfaces);
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(interfaceList.contains(Map.class));
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
661ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
662ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * Sets up the fixture, for example, open a network connection. This method
663ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * is called before a test is executed.
664ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
665ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    protected void setUp() {
666ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        hm = new LinkedHashMap();
667ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        for (int i = 0; i < objArray.length; i++)
668ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson            hm.put(objArray2[i], objArray[i]);
669ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        hm.put("test", null);
670ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson        hm.put(null, "test");
671ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
672ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson
673ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    /**
674ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * Tears down the fixture, for example, close a network connection. This
675ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     * method is called after a test is executed.
676ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson     */
677ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    protected void tearDown() {
678ea551a82e41d6b0318af79de5db12416dfa7479cJesse Wilson    }
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
680