blob: abe419ab34b47c5bf72828b5dd39efccf5a8b1f6 [file] [log] [blame]
/*
* Copyright (C) 2010 Google Inc.
*
* 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 libcore.java.util;
import java.util.HashMap;
import junit.framework.TestCase;
public final class OldAndroidHashMapTest extends TestCase {
private static final Integer ONE = 1;
private static final Integer TWO = 2;
private static final Integer THREE = 3;
private static final Integer FOUR = 4;
private void addItems(HashMap<String, Integer> 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"));
}
public void testAdd() throws Exception {
HashMap<String, Integer> map = new HashMap<String, Integer>();
addItems(map);
}
public void testClear() throws Exception {
HashMap<String, Integer> map = new HashMap<String, Integer>();
addItems(map);
map.clear();
assertEquals(0, map.size());
}
public void testRemove() throws Exception {
HashMap<String, Integer> map = new HashMap<String, Integer>();
addItems(map);
map.remove("three");
assertNull(map.get("three"));
}
public void testManipulate() throws Exception {
HashMap<String, Integer> map = new HashMap<String, Integer>();
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, -1));
assertNull(map.put("one", 1));
assertNull(map.put("two", 2));
assertNull(map.put("three", 3));
assertEquals(-1, map.put(null, 0).intValue());
assertEquals(0, map.get(null).intValue());
assertEquals(1, map.get("one").intValue());
assertEquals(2, map.get("two").intValue());
assertEquals(3, 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, map.remove(null).intValue());
assertEquals(1, map.remove("one").intValue());
assertEquals(2, map.remove("two").intValue());
assertEquals(3, 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"));
}
public void testKeyIterator() throws Exception {
HashMap<String, Integer> map = new HashMap<String, Integer>();
boolean[] slots = new boolean[4];
addItems(map);
for (String s : map.keySet()) {
int slot = 0;
if (s.equals("one")) {
slot = 0;
} else if (s.equals("two")) {
slot = 1;
} else if (s.equals("three")) {
slot = 2;
} else if (s.equals("four")) {
slot = 3;
} else {
fail("Unknown 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]);
}
public void testValueIterator() throws Exception {
HashMap<String, Integer> map = new HashMap<String, Integer>();
boolean[] slots = new boolean[4];
addItems(map);
for (Object o : map.values()) {
int slot = 0;
if (o.equals(ONE)) {
slot = 0;
} else if (o.equals(TWO)) {
slot = 1;
} else if (o.equals(THREE)) {
slot = 2;
} else if (o.equals(FOUR)) {
slot = 3;
} else {
fail("Unknown 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]);
}
public void testEntryIterator() throws Exception {
HashMap<String, Integer> map = new HashMap<String, Integer>();
boolean[] slots = new boolean[4];
addItems(map);
for (Object o : map.entrySet()) {
int slot = 0;
if (o.toString().equals("one=1")) {
slot = 0;
} else if (o.toString().equals("two=2")) {
slot = 1;
} else if (o.toString().equals("three=3")) {
slot = 2;
} else if (o.toString().equals("four=4")) {
slot = 3;
} else {
fail("Unknown 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]);
}
public void testEquals() throws Exception {
HashMap<String, String> map1 = new HashMap<String, String>();
HashMap<String, String> map2 = new HashMap<String, String>();
HashMap<String, String> map3 = new HashMap<String, String>();
map1.put("one", "1");
map1.put("two", "2");
map1.put("three", "3");
map2.put("one", "1");
map2.put("two", "2");
map2.put("three", "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));
}
}