1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License.  You may obtain a copy of the License at
8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.support;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.HashSet;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class Support_UnmodifiableMapTest extends TestCase {
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    Map<String, Integer> map;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // must be a map containing the string keys "0"-"99" paired with the Integer
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // values Integer(0) to Integer(99)
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Support_UnmodifiableMapTest(String p1) {
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(p1);
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Support_UnmodifiableMapTest(String p1, Map<String, Integer> m) {
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super(p1);
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        map = m;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @Override
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void runTest() {
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // containsKey
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - Should contain the key \"0\"", map
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .containsKey("0"));
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - Should contain the key \"50\"", map
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .containsKey("50"));
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - Should not contain the key \"100\"",
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                !map.containsKey("100"));
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // containsValue
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - Should contain the value 0", map
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .containsValue(new Integer(0)));
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - Should contain the value 50", map
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .containsValue(new Integer(50)));
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - Should not contain value 100", !map
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .containsValue(new Integer(100)));
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // entrySet
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set<?> entrySet = map.entrySet();
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator<?> entrySetIterator = entrySet.iterator();
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int myCounter = 0;
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (entrySetIterator.hasNext()) {
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Map.Entry<?, ?> me = (Map.Entry<?, ?>) entrySetIterator.next();
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("UnmodifiableMapTest - Incorrect Map.Entry returned",
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    map.get(me.getKey()).equals(me.getValue()));
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            myCounter++;
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("UnmodifiableMapTest - Incorrect number of map entries returned",
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                100, myCounter);
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // get
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - getting \"0\" didn't return 0",
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                map.get("0").intValue() == 0);
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - getting \"50\" didn't return 0",
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                map.get("0").intValue() == 0);
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("UnmodifiableMapTest - getting \"100\" didn't return null",
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                map.get("100"));
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // isEmpty
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "UnmodifiableMapTest - should have returned false to isEmpty",
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                !map.isEmpty());
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // keySet
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Set<?> keySet = map.keySet();
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        t_KeySet(keySet);
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // size
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Size should return 100, returned: " + map.size(), map
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .size() == 100);
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // values
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        new Support_UnmodifiableCollectionTest("Unmod--from map test", map
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .values());
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    void t_KeySet(Set<?> keySet) {
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // keySet should be a set of the strings "0" to "99"
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // contains
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - keySetTest - should contain \"0\"",
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                keySet.contains("0"));
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - keySetTest - should contain \"50\"",
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                keySet.contains("50"));
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "UnmodifiableMapTest - keySetTest - should not contain \"100\"",
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                !keySet.contains("100"));
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // containsAll
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        HashSet<String> hs = new HashSet<String>();
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        hs.add("0");
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        hs.add("25");
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        hs.add("99");
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "UnmodifiableMapTest - keySetTest - should contain set of \"0\", \"25\", and \"99\"",
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                keySet.containsAll(hs));
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        hs.add("100");
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "UnmodifiableMapTest - keySetTest - should not contain set of \"0\", \"25\", \"99\" and \"100\"",
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                !keySet.containsAll(hs));
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // isEmpty
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("UnmodifiableMapTest - keySetTest - should not be empty",
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                !keySet.isEmpty());
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // iterator
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Iterator<?> it = keySet.iterator();
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        while (it.hasNext()) {
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "UnmodifiableMapTest - keySetTest - Iterator returned wrong values",
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    keySet.contains(it.next()));
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // size
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "UnmodifiableMapTest - keySetTest - returned wrong size.  Wanted 100, got: "
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        + keySet.size(), keySet.size() == 100);
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // toArray
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Object[] objArray;
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        objArray = keySet.toArray();
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; it.hasNext(); counter++) {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "UnmodifiableMapTest - keySetTest - toArray returned incorrect array",
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    objArray[counter] == it.next());
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // toArray (Object[])
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        objArray = new Object[100];
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        keySet.toArray(objArray);
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int counter = 0; it.hasNext(); counter++) {
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "UnmodifiableMapTest - keySetTest - toArray(Object) filled array incorrectly",
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    objArray[counter] == it.next());
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
162