add generics to PersistencMap

This commit is contained in:
2018-11-04 10:42:05 +01:00
parent f2d5c27668
commit 008f0db377
3 changed files with 105 additions and 93 deletions

View File

@@ -41,18 +41,20 @@ public class PersistentMapTest {
final String key = "key1";
try (final DiskStorage ds = new DiskStorage(file)) {
final PersistentMap map = new PersistentMap(ds);
final PersistentMap<String, String> map = new PersistentMap<>(ds, PersistentMap.STRING_CODER,
PersistentMap.STRING_CODER);
Assert.assertNull(map.getAsString(key));
Assert.assertNull(map.getValue(key));
Assert.assertNull(map.putValue(key, value));
Assert.assertEquals(map.getAsString(key), value);
Assert.assertEquals(map.getValue(key), value);
}
try (final DiskStorage ds = new DiskStorage(file)) {
final PersistentMap map = new PersistentMap(ds);
final PersistentMap<String, String> map = new PersistentMap<>(ds, PersistentMap.STRING_CODER,
PersistentMap.STRING_CODER);
Assert.assertEquals(map.getAsString(key), value);
Assert.assertEquals(map.getValue(key), value);
}
}
@@ -63,7 +65,8 @@ public class PersistentMapTest {
final Random rnd = new Random(1);
try (final DiskStorage ds = new DiskStorage(file)) {
final PersistentMap map = new PersistentMap(ds);
final PersistentMap<String, String> map = new PersistentMap<>(ds, PersistentMap.STRING_CODER,
PersistentMap.STRING_CODER);
map.setMaxEntriesInNode(2);
for (int i = 0; i < 100; i++) {
@@ -72,7 +75,7 @@ public class PersistentMapTest {
final String key = nextUUID.toString() + "__" + i;
final String value = "long value to waste some bytes " + i + "__"
+ UUID.randomUUID().toString().repeat(1);
Assert.assertNull(map.getAsString(key));
Assert.assertNull(map.getValue(key));
Assert.assertNull(map.putValue(key, value));
@@ -83,10 +86,10 @@ public class PersistentMapTest {
final boolean failEarly = false;
if (failEarly) {
for (final var entry : insertedValues.entrySet()) {
final String actualValue = map.getAsString(entry.getKey());
final String actualValue = map.getValue(entry.getKey());
if (!Objects.equals(actualValue, entry.getValue())) {
map.print(PersistentMap.STRING_DECODER, PersistentMap.STRING_DECODER);
map.print();
}
Assert.assertEquals(actualValue, entry.getValue(),
@@ -97,7 +100,8 @@ public class PersistentMapTest {
}
try (final DiskStorage ds = new DiskStorage(file)) {
final PersistentMap map = new PersistentMap(ds);
final PersistentMap<String, String> map = new PersistentMap<>(ds, PersistentMap.STRING_CODER,
PersistentMap.STRING_CODER);
// map.print(PersistentMap.STRING_DECODER, PersistentMap.STRING_DECODER);
final AtomicInteger maxDepth = new AtomicInteger();
map.visitNodeEntriesPreOrder(
@@ -109,7 +113,7 @@ public class PersistentMapTest {
+ maxDepth.get());
for (final var entry : insertedValues.entrySet()) {
final String actualValue = map.getAsString(entry.getKey());
final String actualValue = map.getValue(entry.getKey());
Assert.assertEquals(actualValue, entry.getValue(),
"value for key " + entry.getKey() + " after all iterations");
}
@@ -126,14 +130,15 @@ public class PersistentMapTest {
rnd.setSeed(1);
try (final DiskStorage ds = new DiskStorage(file)) {
final PersistentMap map = new PersistentMap(ds);
final PersistentMap<Long, Long> map = new PersistentMap<>(ds, PersistentMap.LONG_CODER,
PersistentMap.LONG_CODER);
for (int i = 0; i < 1000; i++) {
// System.out.println("\n\ninserting: " + i);
final Long key = (long) (rnd.nextGaussian() * Integer.MAX_VALUE);
final Long value = (long) (rnd.nextGaussian() * Integer.MAX_VALUE);
Assert.assertNull(map.getAsLong(key));
Assert.assertNull(map.getValue(key));
Assert.assertNull(map.putValue(key, value));
@@ -144,10 +149,10 @@ public class PersistentMapTest {
final boolean failEarly = false;
if (failEarly) {
for (final var entry : insertedValues.entrySet()) {
final Long actualValue = map.getAsLong(entry.getKey());
final Long actualValue = map.getValue(entry.getKey());
if (!Objects.equals(actualValue, entry.getValue())) {
map.print(PersistentMap.LONG_DECODER, PersistentMap.LONG_DECODER);
map.print();
}
Assert.assertEquals(actualValue, entry.getValue(),
@@ -158,7 +163,8 @@ public class PersistentMapTest {
}
try (final DiskStorage ds = new DiskStorage(file)) {
final PersistentMap map = new PersistentMap(ds);
final PersistentMap<Long, Long> map = new PersistentMap<>(ds, PersistentMap.LONG_CODER,
PersistentMap.LONG_CODER);
// map.print(PersistentMap.LONG_DECODER, PersistentMap.LONG_DECODER);
final AtomicInteger counter = new AtomicInteger();
map.visitNodeEntriesPreOrder(
@@ -170,7 +176,7 @@ public class PersistentMapTest {
+ "nodes could hold the values");
for (final var entry : insertedValues.entrySet()) {
final Long actualValue = map.getAsLong(entry.getKey());
final Long actualValue = map.getValue(entry.getKey());
Assert.assertEquals(actualValue, entry.getValue(),
"value for key " + entry.getKey() + " after all iterations");
}
@@ -186,7 +192,8 @@ public class PersistentMapTest {
final Queue<Integer> numbers = new LinkedList<>(Arrays.asList(1, 15, 11, 4, 16, 3, 13));
try (final DiskStorage ds = new DiskStorage(file)) {
final PersistentMap map = new PersistentMap(ds);
final PersistentMap<String, String> map = new PersistentMap<>(ds, PersistentMap.STRING_CODER,
PersistentMap.STRING_CODER);
final int numbersSize = numbers.size();
for (int i = 0; i < numbersSize; i++) {
@@ -196,7 +203,7 @@ public class PersistentMapTest {
final String key = "" + keyNumber;
final String value = "value";
Assert.assertNull(map.getAsString(key));
Assert.assertNull(map.getValue(key));
Assert.assertNull(map.putValue(key, value));
@@ -205,7 +212,7 @@ public class PersistentMapTest {
// map.print(PersistentMap.STRING_DECODER, PersistentMap.STRING_DECODER);
for (final var entry : insertedValues.entrySet()) {
final String actualValue = map.getAsString(entry.getKey());
final String actualValue = map.getValue(entry.getKey());
Assert.assertEquals(actualValue, entry.getValue(),
"value for key " + entry.getKey() + " in the " + i + "th iteration");
@@ -214,7 +221,8 @@ public class PersistentMapTest {
}
try (final DiskStorage ds = new DiskStorage(file)) {
final PersistentMap map = new PersistentMap(ds);
final PersistentMap<String, String> map = new PersistentMap<>(ds, PersistentMap.STRING_CODER,
PersistentMap.STRING_CODER);
// map.print(PersistentMap.STRING_DECODER, PersistentMap.STRING_DECODER);
final AtomicInteger counter = new AtomicInteger();
@@ -222,7 +230,7 @@ public class PersistentMapTest {
(node, parentNode, nodeEntry, depth) -> counter.addAndGet(nodeEntry.isInnerNode() ? 1 : 0));
for (final var entry : insertedValues.entrySet()) {
final String actualValue = map.getAsString(entry.getKey());
final String actualValue = map.getValue(entry.getKey());
Assert.assertEquals(actualValue, entry.getValue(),
"value for key " + entry.getKey() + " after all iterations");
}