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