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