1 22 23 package tests.sosnoski.util.hashmap; 24 25 import java.util.Iterator ; 26 27 import com.sosnoski.util.hashmap.ObjectObjectHashMap; 28 29 import junit.framework.*; 30 31 public class ObjectObjectHashMapTest extends TestCase 32 { 33 private static final int TEST_ITEMS = 80; 34 35 protected ObjectObjectHashMap m_hashmap; 36 37 private Integer [] m_integerTable; 38 39 public ObjectObjectHashMapTest(String name) { 40 super(name); 41 m_integerTable = new Integer [TEST_ITEMS]; 42 for (int i = 0; i < TEST_ITEMS; i++) { 43 m_integerTable[i] = new Integer (i); 44 } 45 } 46 47 public void tearDown() { 48 m_hashmap.clear(); 49 } 50 51 private Object gen(int index) { 52 if (index >= 0 && index < TEST_ITEMS) { 53 return m_integerTable[index]; 54 } else { 55 return new Integer (index); 56 } 57 } 58 59 private Object gens(int index) { 60 return Integer.toString(index); 61 } 62 63 private boolean ifMatch(Object a, int b) { 64 return Integer.parseInt((String )a) == b; 65 } 66 67 public void fillSequential(int count) { 68 for (int i = 0; i < count; i++) { 69 m_hashmap.add(gen(i), gens(i)); 70 } 71 } 72 73 public void testAdd() { 74 fillSequential(TEST_ITEMS); 75 assert(m_hashmap.size() == TEST_ITEMS); 76 for (int i = 0; i < TEST_ITEMS; i++) { 77 assert(ifMatch(m_hashmap.get(gen(i)), i)); 78 } 79 assert(m_hashmap.add(gen(-1), gens(-1)) == null); 80 } 81 82 public void testClear() { 83 fillSequential(TEST_ITEMS); 84 m_hashmap.clear(); 85 assert(m_hashmap.size() == 0); 86 } 87 88 public void testContains() { 89 fillSequential(TEST_ITEMS); 90 assert(m_hashmap.size() == TEST_ITEMS); 91 assert(!m_hashmap.containsKey(gen(-1))); 92 for (int i = 0; i < TEST_ITEMS; i++) { 93 assert(m_hashmap.containsKey(gen(i))); 94 } 95 for (int i = TEST_ITEMS; i < TEST_ITEMS*20; i++) { 96 assert(!m_hashmap.containsKey(gen(i))); 97 } 98 } 99 100 public void testRemove() { 101 fillSequential(TEST_ITEMS); 102 assert(ifMatch(m_hashmap.remove(gen(TEST_ITEMS/2)), TEST_ITEMS/2)); 103 assert(m_hashmap.size() == TEST_ITEMS-1); 104 for (int i = 0; i < TEST_ITEMS/2; i++) { 105 assert(ifMatch(m_hashmap.get(gen(i)), i)); 106 } 107 assert(!m_hashmap.containsKey(gen(TEST_ITEMS/2))); 108 for (int i = TEST_ITEMS/2+1; i < TEST_ITEMS; i++) { 109 assert(ifMatch(m_hashmap.get(gen(i)), i)); 110 } 111 assert(m_hashmap.remove(gen(-1)) == null); 112 assert(m_hashmap.size() == TEST_ITEMS-1); 113 } 114 115 public void testReplace() { 116 fillSequential(TEST_ITEMS); 117 for (int i = 0; i < TEST_ITEMS; i++) { 118 assert(ifMatch(m_hashmap.add(gen(i), gens(TEST_ITEMS-i)), i)); 119 } 120 assert(m_hashmap.size() == TEST_ITEMS); 121 for (int i = 0; i < TEST_ITEMS; i++) { 122 assert(ifMatch(m_hashmap.get(gen(i)), TEST_ITEMS-i)); 123 } 124 } 125 126 public void testIterator() { 127 fillSequential(TEST_ITEMS); 128 Iterator iter = m_hashmap.iterator(); 129 int count = 0; 130 while (iter.hasNext()) { 131 count++; 132 assert(m_hashmap.containsKey(iter.next())); 133 } 134 assert(count == TEST_ITEMS); 135 } 136 137 public void testClone() { 138 fillSequential(TEST_ITEMS); 139 ObjectObjectHashMap clone = (ObjectObjectHashMap)m_hashmap.clone(); 140 assert(clone.size() == TEST_ITEMS); 141 for (int i = 0; i < TEST_ITEMS; i++) { 142 assert(ifMatch(m_hashmap.get(gen(i)), i)); 143 } 144 } 145 146 public static Test suite() { 147 TestSuite suite = new TestSuite(); 148 suite.addTest(new TestSuite(TestStandard.class)); 149 suite.addTest(new TestSuite(TestIdentCompare.class)); 150 suite.addTest(new TestSuite(TestIdentHash.class)); 151 return suite; 152 } 153 154 public static void main(Object [] args) { 155 String [] names = { ObjectObjectHashMapTest.class.getName() }; 156 junit.textui.TestRunner.main(names); 157 } 158 159 public static class TestStandard extends ObjectObjectHashMapTest 160 { 161 public TestStandard(String name) { 162 super(name); 163 } 164 165 public void setUp() { 166 m_hashmap = new ObjectObjectHashMap(ObjectObjectHashMap.STANDARD_HASH); 167 } 168 } 169 170 public static class TestIdentCompare extends ObjectObjectHashMapTest 171 { 172 public TestIdentCompare(String name) { 173 super(name); 174 } 175 176 public void setUp() { 177 m_hashmap = new ObjectObjectHashMap(ObjectObjectHashMap.IDENTITY_COMP); 178 } 179 } 180 181 public static class TestIdentHash extends ObjectObjectHashMapTest 182 { 183 public TestIdentHash(String name) { 184 super(name); 185 } 186 187 public void setUp() { 188 m_hashmap = new ObjectObjectHashMap(ObjectObjectHashMap.IDENTITY_HASH); 189 } 190 } 191 } 192 | Popular Tags |