| /* |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.core; |
| |
| import junit.framework.TestCase; |
| |
| import java.util.HashMap; |
| import java.util.Iterator; |
| import android.test.suitebuilder.annotation.SmallTest; |
| |
| /** |
| * Test cases for Hashmap. |
| */ |
| public class HashMapTest extends TestCase { |
| private static final Integer ONE = new Integer(1); |
| private static final Integer TWO = new Integer(2); |
| private static final Integer THREE = new Integer(3); |
| private static final Integer FOUR = new Integer(4); |
| |
| private void addItems(HashMap map) { |
| map.put("one", ONE); |
| map.put("two", TWO); |
| map.put("three", THREE); |
| map.put("four", FOUR); |
| |
| assertEquals(4, map.size()); |
| |
| assertEquals(ONE, map.get("one")); |
| assertEquals(TWO, map.get("two")); |
| assertEquals(THREE, map.get("three")); |
| assertEquals(FOUR, map.get("four")); |
| } |
| |
| /** |
| * checks if simple adding elements works. |
| */ |
| @SmallTest |
| public void testAdd() throws Exception { |
| HashMap map = new HashMap(); |
| addItems(map); |
| } |
| |
| /** |
| * checks if clearing the map works. |
| */ |
| @SmallTest |
| public void testClear() throws Exception { |
| HashMap map = new HashMap(); |
| |
| addItems(map); |
| map.clear(); |
| assertEquals(0, map.size()); |
| } |
| |
| /** |
| * checks if removing an elemt works. |
| */ |
| @SmallTest |
| public void testRemove() throws Exception { |
| HashMap map = new HashMap(); |
| |
| addItems(map); |
| map.remove("three"); |
| assertNull(map.get("three")); |
| } |
| |
| /** |
| * does some manipulation with a filled HashMap and checks |
| * if they work as intended |
| */ |
| @SmallTest |
| public void testManipulate() throws Exception { |
| HashMap map = new HashMap(); |
| |
| assertTrue(map.isEmpty()); |
| assertEquals(0, map.size()); |
| assertNull(map.get(null)); |
| assertNull(map.get("one")); |
| assertFalse(map.containsKey("one")); |
| assertFalse(map.containsValue(new Integer(1))); |
| assertNull(map.remove(null)); |
| assertNull(map.remove("one")); |
| |
| assertNull(map.put(null, new Integer(-1))); |
| assertNull(map.put("one", new Integer(1))); |
| assertNull(map.put("two", new Integer(2))); |
| assertNull(map.put("three", new Integer(3))); |
| assertEquals(-1, ((Integer) map.put(null, new Integer(0))).intValue()); |
| |
| assertEquals(0, ((Integer) map.get(null)).intValue()); |
| assertEquals(1, ((Integer) map.get("one")).intValue()); |
| assertEquals(2, ((Integer) map.get("two")).intValue()); |
| assertEquals(3, ((Integer) map.get("three")).intValue()); |
| |
| assertTrue(map.containsKey(null)); |
| assertTrue(map.containsKey("one")); |
| assertTrue(map.containsKey("two")); |
| assertTrue(map.containsKey("three")); |
| |
| assertTrue(map.containsValue(new Integer(0))); |
| assertTrue(map.containsValue(new Integer(1))); |
| assertTrue(map.containsValue(new Integer(2))); |
| assertTrue(map.containsValue(new Integer(3))); |
| |
| assertEquals(0, ((Integer) map.remove(null)).intValue()); |
| assertEquals(1, ((Integer) map.remove("one")).intValue()); |
| assertEquals(2, ((Integer) map.remove("two")).intValue()); |
| assertEquals(3, ((Integer) map.remove("three")).intValue()); |
| |
| assertTrue(map.isEmpty()); |
| assertEquals(0, map.size()); |
| assertNull(map.get(null)); |
| assertNull(map.get("one")); |
| assertFalse(map.containsKey("one")); |
| assertFalse(map.containsValue(new Integer(1))); |
| assertNull(map.remove(null)); |
| assertNull(map.remove("one")); |
| } |
| |
| /** |
| * checks if the key iterator of HashMaps work. |
| */ |
| @SmallTest |
| public void testKeyIterator() throws Exception { |
| HashMap map = new HashMap(); |
| |
| boolean[] slots = new boolean[4]; |
| |
| addItems(map); |
| |
| Iterator iter = map.keySet().iterator(); |
| |
| while (iter.hasNext()) { |
| int slot = 0; |
| Object key = iter.next(); |
| |
| if (key.equals("one")) |
| slot = 0; |
| else if (key.equals("two")) |
| slot = 1; |
| else if (key.equals("three")) |
| slot = 2; |
| else if (key.equals("four")) |
| slot = 3; |
| else |
| fail("Unkown key in hashmap"); |
| |
| if (slots[slot]) |
| fail("key returned more than once"); |
| else |
| slots[slot] = true; |
| } |
| |
| assertTrue(slots[0]); |
| assertTrue(slots[1]); |
| assertTrue(slots[2]); |
| assertTrue(slots[3]); |
| } |
| |
| /** |
| * checks if the value iterator works. |
| */ |
| @SmallTest |
| public void testValueIterator() throws Exception { |
| HashMap map = new HashMap(); |
| |
| boolean[] slots = new boolean[4]; |
| |
| addItems(map); |
| |
| Iterator iter = map.values().iterator(); |
| |
| while (iter.hasNext()) { |
| int slot = 0; |
| Object value = iter.next(); |
| |
| if (value.equals(ONE)) |
| slot = 0; |
| else if (value.equals(TWO)) |
| slot = 1; |
| else if (value.equals(THREE)) |
| slot = 2; |
| else if (value.equals(FOUR)) |
| slot = 3; |
| else |
| fail("Unkown value in hashmap"); |
| |
| if (slots[slot]) |
| fail("value returned more than once"); |
| else |
| slots[slot] = true; |
| } |
| |
| assertTrue(slots[0]); |
| assertTrue(slots[1]); |
| assertTrue(slots[2]); |
| assertTrue(slots[3]); |
| } |
| |
| /** |
| * checks if the entry iterator works for HashMaps. |
| */ |
| @SmallTest |
| public void testEntryIterator() throws Exception { |
| HashMap map = new HashMap(); |
| |
| boolean[] slots = new boolean[4]; |
| |
| addItems(map); |
| |
| Iterator iter = map.entrySet().iterator(); |
| |
| while (iter.hasNext()) { |
| int slot = 0; |
| Object entry = iter.next(); |
| |
| if (entry.toString().equals("one=1")) |
| slot = 0; |
| else if (entry.toString().equals("two=2")) |
| slot = 1; |
| else if (entry.toString().equals("three=3")) |
| slot = 2; |
| else if (entry.toString().equals("four=4")) |
| slot = 3; |
| else |
| fail("Unkown entry in hashmap"); |
| |
| if (slots[slot]) |
| fail("entry returned more than once"); |
| else |
| slots[slot] = true; |
| } |
| |
| assertTrue(slots[0]); |
| assertTrue(slots[1]); |
| assertTrue(slots[2]); |
| assertTrue(slots[3]); |
| } |
| |
| /** |
| * checks if the HashMap equals method works. |
| */ |
| @SmallTest |
| public void testEquals() throws Exception { |
| HashMap map1 = new HashMap(); |
| HashMap map2 = new HashMap(); |
| HashMap map3 = new HashMap(); |
| |
| map1.put("one", "1"); |
| map1.put("two", "2"); |
| map1.put("three", "3"); |
| |
| map2.put("one", new String("1")); |
| map2.put(new String("two"), "2"); |
| map2.put(new String("three"), new String("3")); |
| |
| assertTrue(map1.equals(map2)); |
| |
| map3.put("one", "1"); |
| map3.put("two", "1"); |
| map3.put("three", "1"); |
| |
| assertFalse(map1.equals(map3)); |
| assertFalse(map2.equals(map3)); |
| } |
| } |
| |