diff --git a/build.gradle b/build.gradle index f0a23cb..32ef767 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,6 @@ plugins { id 'java' + id 'jacoco' } project.group = 'ghast' @@ -49,3 +50,11 @@ dependencies { test { useJUnitPlatform() } + +jacoco { + toolVersion = '0.8.5' +} + +jacocoTestReport { + dependsOn test +} diff --git a/src/main/java/ghast/HashMaps.java b/src/main/java/ghast/HashMaps.java index ae63bcf..1da8d7d 100644 --- a/src/main/java/ghast/HashMaps.java +++ b/src/main/java/ghast/HashMaps.java @@ -17,20 +17,20 @@ public final class HashMaps { } public static Map of(K k1, V v1) { - return new HashMap() {{ + return new HashMap(1) {{ put(k1, v1); }}; } public static Map of(K k1, V v1, K k2, V v2) { - return new HashMap() {{ + return new HashMap(2) {{ put(k1, v1); put(k2, v2); }}; } public static Map of(K k1, V v1, K k2, V v2, K k3, V v3) { - return new HashMap() {{ + return new HashMap(3) {{ put(k1, v1); put(k2, v2); put(k3, v3); @@ -38,7 +38,7 @@ public final class HashMaps { } public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) { - return new HashMap() {{ + return new HashMap(4) {{ put(k1, v1); put(k2, v2); put(k3, v3); @@ -47,7 +47,7 @@ public final class HashMaps { } public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) { - return new HashMap() {{ + return new HashMap(5) {{ put(k1, v1); put(k2, v2); put(k3, v3); @@ -58,7 +58,7 @@ public final class HashMaps { public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6) { - return new HashMap() {{ + return new HashMap(6) {{ put(k1, v1); put(k2, v2); put(k3, v3); @@ -70,7 +70,7 @@ public final class HashMaps { public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7) { - return new HashMap() {{ + return new HashMap(7) {{ put(k1, v1); put(k2, v2); put(k3, v3); @@ -83,7 +83,7 @@ public final class HashMaps { public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8) { - return new HashMap() {{ + return new HashMap(8) {{ put(k1, v1); put(k2, v2); put(k3, v3); @@ -97,7 +97,7 @@ public final class HashMaps { public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9) { - return new HashMap() {{ + return new HashMap(9) {{ put(k1, v1); put(k2, v2); put(k3, v3); @@ -112,7 +112,7 @@ public final class HashMaps { public static Map of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10) { - return new HashMap() {{ + return new HashMap(10) {{ put(k1, v1); put(k2, v2); put(k3, v3); @@ -145,12 +145,27 @@ public final class HashMaps { } @AllArgsConstructor - @Getter - @Setter @EqualsAndHashCode private static class SimpleEntry implements Map.Entry { private final K key; private V value; + + @Override + public K getKey() { + return key; + } + + @Override + public V getValue() { + return value; + } + + @Override + public V setValue(V value) { + V prev = this.value; + this.value = value; + return prev; + } } } diff --git a/src/test/java/ghast/HashMapsTest.java b/src/test/java/ghast/HashMapsTest.java new file mode 100644 index 0000000..92d5e3e --- /dev/null +++ b/src/test/java/ghast/HashMapsTest.java @@ -0,0 +1,182 @@ +package ghast; + +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.*; + +class HashMapsTest { + + @Test + void of0() { + Map map = HashMaps.of(); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertTrue(map.isEmpty()); + } + + @Test + void of1() { + Map map = HashMaps.of("key1", "val1"); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(1, map.size()); + } + + @Test + void of2() { + Map map = HashMaps.of( + "key1", "val1", + "key2", "val2" + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(2, map.size()); + } + + @Test + void of3() { + Map map = HashMaps.of( + "key1", "val1", + "key2", "val2", + "key3", "val3" + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(3, map.size()); + } + + @Test + void of4() { + Map map = HashMaps.of( + "key1", "val1", + "key2", "val2", + "key3", "val3", + "key4", "val4" + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(4, map.size()); + } + + @Test + void of5() { + Map map = HashMaps.of( + "key1", "val1", + "key2", "val2", + "key3", "val3", + "key4", "val4", + "key5", "val5" + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(5, map.size()); + } + + @Test + void of6() { + Map map = HashMaps.of( + "key1", "val1", + "key2", "val2", + "key3", "val3", + "key4", "val4", + "key5", "val5", + "key6", "val6" + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(6, map.size()); + } + + @Test + void of7() { + Map map = HashMaps.of( + "key1", "val1", + "key2", "val2", + "key3", "val3", + "key4", "val4", + "key5", "val5", + "key6", "val6", + "key7", "val7" + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(7, map.size()); + } + + @Test + void of8() { + Map map = HashMaps.of( + "key1", "val1", + "key2", "val2", + "key3", "val3", + "key4", "val4", + "key5", "val5", + "key6", "val6", + "key7", "val7", + "key8", "val8" + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(8, map.size()); + } + + @Test + void of9() { + Map map = HashMaps.of( + "key1", "val1", + "key2", "val2", + "key3", "val3", + "key4", "val4", + "key5", "val5", + "key6", "val6", + "key7", "val7", + "key8", "val8", + "key9", "val9" + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(9, map.size()); + } + + @Test + void of10() { + Map map = HashMaps.of( + "key1", "val1", + "key2", "val2", + "key3", "val3", + "key4", "val4", + "key5", "val5", + "key6", "val6", + "key7", "val7", + "key8", "val8", + "key9", "val9", + "key10", "val10" + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(10, map.size()); + } + + @Test + void ofEntries() { + Map map = HashMaps.ofEntries( + HashMaps.entry("key1", "val1"), + HashMaps.entry("key2", "val2"), + HashMaps.entry("key3", "val3"), + HashMaps.entry("key4", "val4"), + HashMaps.entry("key5", "val5"), + HashMaps.entry("key6", "val6"), + HashMaps.entry("key7", "val7"), + HashMaps.entry("key8", "val8"), + HashMaps.entry("key9", "val9"), + HashMaps.entry("key10", "val10"), + HashMaps.entry("key11", "val11") + ); + assertNotNull(map); + assertTrue(map instanceof HashMap); + assertEquals(11, map.size()); + } +} \ No newline at end of file