1 22 23 package tests.sosnoski.util.hashset; 24 25 import java.util.Iterator ; 26 27 import com.sosnoski.util.hashset.ObjectHashSet; 28 29 import junit.framework.*; 30 31 public class ObjectHashSetTest extends TestCase 32 { 33 private static final int TEST_ITEMS = 80; 34 35 protected ObjectHashSet m_hashset; 36 37 private Integer [] m_integerTable; 38 39 public ObjectHashSetTest(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_hashset.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 void fillSequential(int count) { 60 for (int i = 0; i < count; i++) { 61 assert(m_hashset.add(gen(i))); 62 } 63 } 64 65 public void testAdd() { 66 fillSequential(TEST_ITEMS); 67 assert(m_hashset.size() == TEST_ITEMS); 68 for (int i = 0; i < TEST_ITEMS; i++) { 69 assert(m_hashset.contains(gen(i))); 70 } 71 assert(!m_hashset.add(gen(1))); 72 assert(m_hashset.add(gen(-1))); 73 } 74 75 public void testClear() { 76 fillSequential(TEST_ITEMS); 77 m_hashset.clear(); 78 assert(m_hashset.size() == 0); 79 } 80 81 public void testContains() { 82 fillSequential(TEST_ITEMS); 83 assert(m_hashset.size() == TEST_ITEMS); 84 for (int i = 0; i < TEST_ITEMS; i++) { 85 assert(m_hashset.contains(gen(i))); 86 } 87 for (int i = TEST_ITEMS; i < 200; i++) { 88 assert(!m_hashset.contains(gen(i))); 89 } 90 } 91 92 public void testRemove() { 93 fillSequential(TEST_ITEMS); 94 assert(m_hashset.remove(gen(TEST_ITEMS/2))); 95 assert(m_hashset.size() == TEST_ITEMS-1); 96 assert(!m_hashset.remove(gen(TEST_ITEMS/2))); 97 for (int i = 0; i < TEST_ITEMS/2; i++) { 98 assert(m_hashset.contains(gen(i))); 99 } 100 assert(!m_hashset.contains(gen(TEST_ITEMS/2))); 101 for (int i = TEST_ITEMS/2+1; i < TEST_ITEMS; i++) { 102 assert(m_hashset.contains(gen(i))); 103 } 104 assert(!m_hashset.remove(gen(-1))); 105 assert(m_hashset.size() == TEST_ITEMS-1); 106 } 107 108 public void testIterator() { 109 fillSequential(TEST_ITEMS); 110 Iterator iter = m_hashset.iterator(); 111 int count = 0; 112 while (iter.hasNext()) { 113 count++; 114 assert(m_hashset.contains(iter.next())); 115 } 116 assert(count == TEST_ITEMS); 117 } 118 119 public void testClone() { 120 fillSequential(TEST_ITEMS); 121 ObjectHashSet clone = (ObjectHashSet)m_hashset.clone(); 122 assert(clone.size() == TEST_ITEMS); 123 for (int i = 0; i < TEST_ITEMS; i++) { 124 assert(clone.contains(gen(i))); 125 } 126 } 127 128 public static Test suite() { 129 TestSuite suite = new TestSuite(); 130 suite.addTest(new TestSuite(TestStandard.class)); 131 suite.addTest(new TestSuite(TestIdentCompare.class)); 132 suite.addTest(new TestSuite(TestIdentHash.class)); 133 return suite; 134 } 135 136 public static void main(String [] args) { 137 String [] names = { ObjectHashSetTest.class.getName() }; 138 junit.textui.TestRunner.main(names); 139 } 140 141 public static class TestStandard extends ObjectHashSetTest 142 { 143 public TestStandard(String name) { 144 super(name); 145 } 146 147 public void setUp() { 148 m_hashset = new ObjectHashSet(ObjectHashSet.STANDARD_HASH); 149 } 150 } 151 152 public static class TestIdentCompare extends ObjectHashSetTest 153 { 154 public TestIdentCompare(String name) { 155 super(name); 156 } 157 158 public void setUp() { 159 m_hashset = new ObjectHashSet(ObjectHashSet.IDENTITY_COMP); 160 } 161 } 162 163 public static class TestIdentHash extends ObjectHashSetTest 164 { 165 public TestIdentHash(String name) { 166 super(name); 167 } 168 169 public void setUp() { 170 m_hashset = new ObjectHashSet(ObjectHashSet.IDENTITY_HASH); 171 } 172 } 173 } 174 | Popular Tags |