KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > tests > sosnoski > util > hashmap > ObjectObjectHashMapTest


1 /*
2  * Copyright (c) 2000-2001 Sosnoski Software Solutions, Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20  * IN THE SOFTWARE.
21  */

22
23 package tests.sosnoski.util.hashmap;
24
25 import java.util.Iterator JavaDoc;
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 JavaDoc[] m_integerTable;
38
39     public ObjectObjectHashMapTest(String JavaDoc name) {
40         super(name);
41         m_integerTable = new Integer JavaDoc[TEST_ITEMS];
42         for (int i = 0; i < TEST_ITEMS; i++) {
43             m_integerTable[i] = new Integer JavaDoc(i);
44         }
45     }
46
47     public void tearDown() {
48         m_hashmap.clear();
49     }
50
51     private Object JavaDoc gen(int index) {
52         if (index >= 0 && index < TEST_ITEMS) {
53             return m_integerTable[index];
54         } else {
55             return new Integer JavaDoc(index);
56         }
57     }
58
59     private Object JavaDoc gens(int index) {
60         return Integer.toString(index);
61     }
62
63     private boolean ifMatch(Object JavaDoc a, int b) {
64         return Integer.parseInt((String JavaDoc)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 JavaDoc 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 JavaDoc[] args) {
155         String JavaDoc[] names = { ObjectObjectHashMapTest.class.getName() };
156         junit.textui.TestRunner.main(names);
157     }
158
159     public static class TestStandard extends ObjectObjectHashMapTest
160     {
161         public TestStandard(String JavaDoc 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 JavaDoc 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 JavaDoc name) {
184             super(name);
185         }
186
187         public void setUp() {
188             m_hashmap = new ObjectObjectHashMap(ObjectObjectHashMap.IDENTITY_HASH);
189         }
190     }
191 }
192
Popular Tags