test: add MyHashMap tests
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
package org.example;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class MyHashMapTest {
|
||||
|
||||
@Test
|
||||
void shouldPutAndGet() {
|
||||
MyHashMap<String, Integer> map = new MyHashMap<>(4);
|
||||
|
||||
map.put("A", 10);
|
||||
|
||||
assertEquals(10, map.get("A"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldUpdateValue() {
|
||||
MyHashMap<String, Integer> map = new MyHashMap<>(4);
|
||||
|
||||
map.put("A", 10);
|
||||
map.put("A", 20);
|
||||
|
||||
assertEquals(20, map.get("A"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldReturnOldValueWhenUpdating() {
|
||||
MyHashMap<String, Integer> map = new MyHashMap<>(4);
|
||||
|
||||
assertNull(map.put("A", 10));
|
||||
assertEquals(10, map.put("A", 20));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldReturnNullForMissingKey() {
|
||||
MyHashMap<String, Integer> map = new MyHashMap<>(4);
|
||||
|
||||
assertNull(map.get("A"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldRemoveValue() {
|
||||
MyHashMap<String, Integer> map = new MyHashMap<>(4);
|
||||
|
||||
map.put("A", 10);
|
||||
|
||||
assertEquals(10, map.remove("A"));
|
||||
assertNull(map.get("A"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldReturnNullWhenRemovingMissingKey() {
|
||||
MyHashMap<String, Integer> map = new MyHashMap<>(4);
|
||||
|
||||
assertNull(map.remove("A"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldHandleCollision() {
|
||||
MyHashMap<Integer, String> map = new MyHashMap<>(4);
|
||||
|
||||
map.put(1, "A");
|
||||
map.put(5, "B");
|
||||
|
||||
assertEquals("A", map.get(1));
|
||||
assertEquals("B", map.get(5));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldHandleRemoveWithCollision() {
|
||||
MyHashMap<Integer, String> map = new MyHashMap<>(4);
|
||||
|
||||
map.put(1, "A");
|
||||
map.put(5, "B");
|
||||
map.put(9, "C");
|
||||
|
||||
assertEquals("A", map.remove(1));
|
||||
assertEquals("B", map.get(5));
|
||||
assertEquals("C", map.get(9));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldResize() {
|
||||
MyHashMap<Integer, String> map = new MyHashMap<>(2);
|
||||
|
||||
map.put(1, "A");
|
||||
map.put(2, "B");
|
||||
map.put(3, "C");
|
||||
|
||||
assertEquals("A", map.get(1));
|
||||
assertEquals("B", map.get(2));
|
||||
assertEquals("C", map.get(3));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldReuseDeletedSlot() {
|
||||
MyHashMap<Integer, String> map = new MyHashMap<>(4);
|
||||
|
||||
map.put(1, "A");
|
||||
map.put(5, "B");
|
||||
|
||||
map.remove(1);
|
||||
map.put(9, "C");
|
||||
|
||||
assertEquals("C", map.get(9));
|
||||
assertEquals("B", map.get(5));
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldHandleNullKey() {
|
||||
MyHashMap<String, Integer> map = new MyHashMap<>(4);
|
||||
|
||||
map.put(null, 100);
|
||||
|
||||
assertEquals(100, map.get(null));
|
||||
assertEquals(100, map.remove(null));
|
||||
assertNull(map.get(null));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user