/* * Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org * Use is subject to license terms. See license.txt. */ package org.beanfabrics.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import junit.framework.JUnit4TestAdapter; import org.junit.Before; import org.junit.Test; /** * @author Max Gensthaler */ // TODO (mg) implement all tests public class OrderPreservingMapTest { public static junit.framework.Test suite() { return new JUnit4TestAdapter(OrderPreservingMapTest.class); } private OrderPreservingMap<String, String> map; private String[] keys; private String[] values; private int mapInitialSize; public OrderPreservingMapTest() { } @Before public void setUp() throws Exception { map = new OrderPreservingMap<String, String>(); // non alphanumeric sorted keys and values keys = new String[] { "key 1", "key 0" }; values = new String[] { "value 1", "value 0" }; map.put(keys[0], values[0]); map.put(keys[1], values[1]); mapInitialSize = map.size(); } @Test public void testPutAll() { HashMap<String, String> mapToPut = new HashMap<String, String>(); for (int i = 5; i < 10; i++) { mapToPut.put("key " + i, "value " + i); } map.putAll(mapToPut); assertEquals("map.size()", mapInitialSize + mapToPut.size(), map.size()); Object[] keys = map.keyArray(); assertEquals("map.keyArray().length", mapInitialSize + mapToPut.size(), keys.length); for (int i = 5; i < 10; i++) { assertEquals("map.get()", "value " + i, map.get("key " + i)); } } @Test public void testPutKV() { map.put("key 2", "value 2"); assertEquals("map.size()", mapInitialSize + 1, map.size()); assertEquals("map.get()", "value 2", map.get("key 2")); } @Test public void testPutKVInt() { map.put("key 2", "value 2", 0); assertEquals("map.size()", mapInitialSize + 1, map.size()); assertEquals("map.get()", "value 2", map.get("key 2")); } @Test public void testKeySet() { Set<String> keySet = map.keySet(); for (Iterator<String> it = keySet.iterator(); it.hasNext();) { String key = it.next(); assertFalse("key: ==", key == keys[0] && key == keys[1]); assertTrue("key: String.equals()", key.equals(keys[0]) || key.equals(keys[1])); } } @Test public void testKeySetReference() { Set<String> keySet = map.keySet(); for (Iterator<String> it = keySet.iterator(); it.hasNext();) { String key = it.next(); assertTrue("key: ==", key == keys[0] || key == keys[1]); assertTrue("key: String.equals()", key.equals(keys[0]) || key.equals(keys[1])); } } @Test public void testKeyArray() { Object[] keyArray = map.keyArray(); for (int i = 0; i < keys.length; i++) { assertEquals("map.keyArray()[" + i + "]", keys[i], keyArray[i]); } } @Test public void testOrderedKeys() { int i = map.size() - 1; for (String key : map.orderedKeys()) { assertFalse("map.orderedKeys()[" + i + "] ==", key == keys[0] && key == keys[1]); assertEquals("map.ordereredKeys()[" + i + "]", "key " + i, key); i--; } } @Test public void testOrderedKeysReference() { int i = map.size() - 1; for (String key : map.orderedKeysReference()) { assertTrue("map.orderedKeysReference()[" + i + "] ==", key == keys[0] || key == keys[1]); assertEquals("map.orderedKeysReference()[" + i + "]", "key " + i, key); i--; } } // @Test // public void testEntrySet() { // } // // @Test // public void testEntrySetReference() { // } @Test public void testValues() { int i = 0; for (String value : map.values()) { assertFalse("map.values()[" + i + "] ==", value == keys[0] && value == keys[1]); assertEquals("map.values()[" + i + "]", values[i], value); i++; } } @Test public void testValuesReference() { int i = 0; for (String value : map.valuesReference()) { assertTrue("map.valuesReference()[" + i + "] ==", value == values[0] || value == values[1]); assertEquals("map.valuesReference()[" + i + "]", values[i], value); i++; } } @Test public void testGetObject() { for (int i = 0; i < keys.length; i++) { assertEquals("map.get(key[" + i + "])", values[i], map.get(keys[i])); } } @Test public void testGetInt() { for (int i = 0; i < keys.length; i++) { assertEquals("map.get(" + i + ")", values[i], map.get(i)); } } @Test public void testGetKey() { for (int i = 0; i < keys.length; i++) { assertEquals("map.getKey(" + i + ")", keys[i], map.getKey(i)); } } @Test public void testGetAll() { map.put("key 2", "value 2"); Collection<String> vals = map.getAll(new HashSet<String>(Arrays.asList(keys))); assertEquals("map.getAll().size()", mapInitialSize, vals.size()); for (String value : values) { assertTrue("map.getAll().contains()", vals.contains(value)); } } // @Test // public void testIndexOfKey() { // } // // @Test // public void testContainsKey() { // } // // @Test // public void testContainsValue() { // } // // @Test // public void testContainsAll() { // } // // @Test // public void testReverseOrder() { // } // // @Test // public void testReorderCollectionOfK() { // } // // @Test // public void testReorderKArray() { // } // // @Test // public void testRemoveObject() { // } // // @Test // public void testRemoveInt() { // } // // @Test // public void testRemoveAllKeys() { // } // // @Test // public void testRetainAllKeys() { // } @Test public void testClear() { map.clear(); assertEquals("map.size()", 0, map.size()); } @Test public void testSize() { OrderPreservingMap<String, String> map = new OrderPreservingMap<String, String>(); assertEquals("new OrderPreservingMap().size()", 0, map.size()); map.put("key 0", "value 0"); assertEquals("map.size()", 1, map.size()); map.put("key 0", "value 0.1"); assertEquals("map.size()", 1, map.size()); map.put("key 1", "value 1"); assertEquals("map.size()", 2, map.size()); } @Test public void testIsEmpty() { OrderPreservingMap<String, String> map = new OrderPreservingMap<String, String>(); assertTrue("map.isEmpty()", map.isEmpty()); map.put("key 0", "value 0"); assertFalse("map.isEmpty()", map.isEmpty()); } // @Test // public void testToArrayVArray() { // } // // @Test // public void testToArray() { // } // // @Test // public void testIndexOf() { // } // // @Test // public void testToCollection() { // } // // @Test // public void testListIterator() { // } // // @Test // public void testKeyListIterator() { // } }