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