KickJava   Java API By Example, From Geeks To Geeks.

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


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.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 JavaDoc[] m_stringTable;
38
39     public StringIntHashMapTest(String JavaDoc name) {
40         super(name);
41         m_stringTable = new String JavaDoc[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 JavaDoc 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 JavaDoc iter = m_hashmap.iterator();
125         int count = 0;
126         while (iter.hasNext()) {
127             count++;
128             assert(m_hashmap.containsKey((String JavaDoc)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 JavaDoc[] args) {
151         String JavaDoc[] names = { StringIntHashMapTest.class.getName() };
152         junit.textui.TestRunner.main(names);
153     }
154
155     public static class TestStandard extends StringIntHashMapTest
156     {
157         public TestStandard(String JavaDoc 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 JavaDoc 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 JavaDoc name) {
180             super(name);
181         }
182
183         public void setUp() {
184             m_hashmap = new StringIntHashMap(StringIntHashMap.IDENTITY_HASH);
185         }
186     }
187 }
188
Popular Tags