1
1
package com .thealgorithms .datastructures .hashmap .hashing ;
2
2
3
- import static org .junit .jupiter .api .Assertions .assertEquals ;
4
- import static org .junit .jupiter .api .Assertions .assertNull ;
3
+ import static org .junit .jupiter .api .Assertions .*;
5
4
6
5
import org .junit .jupiter .api .Test ;
7
6
@@ -17,7 +16,7 @@ public void testInsertAndSearch() {
17
16
assertEquals ("Value15" , hashMap .search (15 ));
18
17
assertEquals ("Value25" , hashMap .search (25 ));
19
18
assertEquals ("Value35" , hashMap .search (35 ));
20
- assertNull (hashMap .search (45 ));
19
+ assertNull (hashMap .search (45 )); // Test for non-existent key
21
20
}
22
21
23
22
@ Test
@@ -29,7 +28,7 @@ public void testDelete() {
29
28
30
29
assertEquals ("Value25" , hashMap .search (25 ));
31
30
hashMap .delete (25 );
32
- assertNull (hashMap .search (25 ));
31
+ assertNull (hashMap .search (25 )); // Confirm deletion
33
32
}
34
33
35
34
@ Test
@@ -38,21 +37,22 @@ public void testDisplay() {
38
37
hashMap .insert (15 , "Value15" );
39
38
hashMap .insert (25 , "Value25" );
40
39
hashMap .insert (35 , "Value35" );
41
- hashMap .display ();
40
+ // Optionally verify display functionality if it returns a string
41
+ hashMap .display (); // Manual check during test execution
42
42
}
43
43
44
44
@ Test
45
45
public void testInsertNullKey () {
46
46
HashMap <Integer , String > hashMap = new HashMap <>(10 );
47
47
hashMap .insert (null , "NullValue" );
48
- assertEquals ("NullValue" , hashMap .search (null ));
48
+ assertEquals ("NullValue" , hashMap .search (null )); // Verify null key handling
49
49
}
50
50
51
51
@ Test
52
52
public void testInsertNullValue () {
53
53
HashMap <Integer , String > hashMap = new HashMap <>(10 );
54
54
hashMap .insert (15 , null );
55
- assertNull (hashMap .search (15 ));
55
+ assertNull (hashMap .search (15 )); // Verify null value handling
56
56
}
57
57
58
58
@ Test
@@ -61,12 +61,12 @@ public void testUpdateExistingKey() {
61
61
hashMap .insert (15 , "Value15" );
62
62
hashMap .insert (15 , "UpdatedValue15" );
63
63
64
- assertEquals ("UpdatedValue15" , hashMap .search (15 ));
64
+ assertEquals ("UpdatedValue15" , hashMap .search (15 )); // Verify update
65
65
}
66
66
67
67
@ Test
68
68
public void testHandleCollisions () {
69
- HashMap <Integer , String > hashMap = new HashMap <>(3 );
69
+ HashMap <Integer , String > hashMap = new HashMap <>(3 ); // Create a small bucket size to force collisions
70
70
// These keys should collide if the hash function is modulo 3
71
71
hashMap .insert (1 , "Value1" );
72
72
hashMap .insert (4 , "Value4" );
@@ -80,17 +80,17 @@ public void testHandleCollisions() {
80
80
@ Test
81
81
public void testSearchInEmptyHashMap () {
82
82
HashMap <Integer , String > hashMap = new HashMap <>(10 );
83
- assertNull (hashMap .search (10 ));
83
+ assertNull (hashMap .search (10 )); // Confirm search returns null in empty map
84
84
}
85
85
86
86
@ Test
87
87
public void testDeleteNonExistentKey () {
88
88
HashMap <Integer , String > hashMap = new HashMap <>(10 );
89
89
hashMap .insert (15 , "Value15" );
90
- hashMap .delete (25 );
90
+ hashMap .delete (25 ); // Delete non-existent key
91
91
92
- assertEquals ("Value15" , hashMap .search (15 ));
93
- assertNull (hashMap .search (25 ));
92
+ assertEquals ("Value15" , hashMap .search (15 )); // Ensure existing key remains
93
+ assertNull (hashMap .search (25 )); // Confirm non-existent key remains null
94
94
}
95
95
96
96
@ Test
@@ -101,7 +101,7 @@ public void testInsertLargeNumberOfElements() {
101
101
}
102
102
103
103
for (int i = 0 ; i < 100 ; i ++) {
104
- assertEquals ("Value" + i , hashMap .search (i ));
104
+ assertEquals ("Value" + i , hashMap .search (i )); // Verify all inserted values
105
105
}
106
106
}
107
107
@@ -113,7 +113,7 @@ public void testDeleteHeadOfBucket() {
113
113
hashMap .insert (7 , "Value7" );
114
114
115
115
hashMap .delete (1 );
116
- assertNull (hashMap .search (1 ));
116
+ assertNull (hashMap .search (1 )); // Verify head deletion
117
117
assertEquals ("Value4" , hashMap .search (4 ));
118
118
assertEquals ("Value7" , hashMap .search (7 ));
119
119
}
@@ -126,7 +126,7 @@ public void testDeleteTailOfBucket() {
126
126
hashMap .insert (7 , "Value7" );
127
127
128
128
hashMap .delete (7 );
129
- assertNull (hashMap .search (7 ));
129
+ assertNull (hashMap .search (7 )); // Verify tail deletion
130
130
assertEquals ("Value1" , hashMap .search (1 ));
131
131
assertEquals ("Value4" , hashMap .search (4 ));
132
132
}
@@ -139,8 +139,45 @@ public void testDeleteMiddleElementOfBucket() {
139
139
hashMap .insert (7 , "Value7" );
140
140
141
141
hashMap .delete (4 );
142
- assertNull (hashMap .search (4 ));
142
+ assertNull (hashMap .search (4 )); // Verify middle element deletion
143
143
assertEquals ("Value1" , hashMap .search (1 ));
144
144
assertEquals ("Value7" , hashMap .search (7 ));
145
145
}
146
+
147
+ @ Test
148
+ public void testResizeHashMap () {
149
+ HashMap <Integer , String > hashMap = new HashMap <>(2 ); // Small initial size to force rehashing
150
+ for (int i = 0 ; i < 10 ; i ++) {
151
+ hashMap .insert (i , "Value" + i );
152
+ }
153
+
154
+ // Verify all values after resizing
155
+ for (int i = 0 ; i < 10 ; i ++) {
156
+ assertEquals ("Value" + i , hashMap .search (i ));
157
+ }
158
+ }
159
+
160
+ @ Test
161
+ public void testCollisionResolution () {
162
+ HashMap <String , String > hashMap = new HashMap <>(3 );
163
+ hashMap .insert ("abc" , "Value1" ); // Hash index 0
164
+ hashMap .insert ("cab" , "Value2" ); // Hash index 0 (collision)
165
+ hashMap .insert ("bac" , "Value3" ); // Hash index 0 (collision)
166
+
167
+ assertEquals ("Value1" , hashMap .search ("abc" ));
168
+ assertEquals ("Value2" , hashMap .search ("cab" ));
169
+ assertEquals ("Value3" , hashMap .search ("bac" ));
170
+ }
171
+
172
+ @ Test
173
+ public void testClearHashMap () {
174
+ HashMap <Integer , String > hashMap = new HashMap <>(10 );
175
+ hashMap .insert (1 , "Value1" );
176
+ hashMap .insert (2 , "Value2" );
177
+
178
+ hashMap .clear (); // Assuming clear method resets the hash map
179
+ assertNull (hashMap .search (1 ));
180
+ assertNull (hashMap .search (2 ));
181
+ assertEquals (0 , hashMap .size ()); // Verify size is reset
182
+ }
146
183
}
0 commit comments