From aaabc6eb780ff36b1238429f4c90868b4a299e03 Mon Sep 17 00:00:00 2001 From: Linas Naginionis Date: Tue, 3 Dec 2019 13:28:35 +0200 Subject: [PATCH] More test coverage --- .../paldb/impl/StorageSerialization.java | 6 ++-- .../paldb/impl/TestStorageSerialization.java | 34 ++++++++++++++++++- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/linkedin/paldb/impl/StorageSerialization.java b/src/main/java/com/linkedin/paldb/impl/StorageSerialization.java index 27162df..de0b4d0 100644 --- a/src/main/java/com/linkedin/paldb/impl/StorageSerialization.java +++ b/src/main/java/com/linkedin/paldb/impl/StorageSerialization.java @@ -702,7 +702,7 @@ private T deserialize(byte[] buf, Serializer serializer) throws IOExcepti DataInputOutput bs = new DataInputOutput(buf); Object ret = deserialize(bs, serializer); if (bs.available() != 0) { - throw new RuntimeException("bytes left: " + bs.available()); + throw new IOException("bytes left: " + bs.available()); } return (T) ret; @@ -991,9 +991,7 @@ private T deserialize(DataInput is, Serializer serializer) throws IOExcep case ARRAY_OBJECT: ret = deserializeArrayObject(is, serializer); break; - case -1: - throw new EOFException(); - + default: throw new EOFException(); } return (T) ret; } diff --git a/src/test/java/com/linkedin/paldb/impl/TestStorageSerialization.java b/src/test/java/com/linkedin/paldb/impl/TestStorageSerialization.java index 5a1335e..2a8db47 100644 --- a/src/test/java/com/linkedin/paldb/impl/TestStorageSerialization.java +++ b/src/test/java/com/linkedin/paldb/impl/TestStorageSerialization.java @@ -25,7 +25,7 @@ import java.nio.*; import static org.junit.jupiter.api.Assertions.*; - +@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class) class TestStorageSerialization { private StorageSerialization serialization; @@ -593,6 +593,38 @@ void testMultiDimensionalLongArray() throws IOException { assertArrayEquals(d, res); } + @Test + void should_throw_when_deserializing_and_serializer_is_not_registered() throws IOException { + var config = PalDBConfigBuilder.create() + .withValueSerializer(new TestStoreReader.PointSerializer()) + .build(); + var serialization = new StorageSerialization<>(config); + var bytes = serialization.serializeValue(new Point(5, 4)); + var deserialization = new StorageSerialization<>(new Configuration()); + assertThrows(MissingSerializer.class, () -> deserialization.deserializeValue(bytes)); + } + + @Test + void should_throw_when_deserializing_and_serializer_is_not_registered_compressed() throws IOException { + var config = PalDBConfigBuilder.create() + .withEnableCompression(true) + .withValueSerializer(new TestStoreReader.PointSerializer()) + .build(); + var serialization = new StorageSerialization<>(config); + var bytes = serialization.serializeValue(new Point(5, 4)); + var deserialization = new StorageSerialization<>(PalDBConfigBuilder.create() + .withEnableCompression(true) + .build()); + assertThrows(MissingSerializer.class, () -> deserialization.deserializeValue(bytes)); + } + + @Test + void should_serialize_removed_instance() throws IOException { + var serialization = new StorageSerialization<>(new Configuration<>()); + var bytes = serialization.serializeValue(StorageSerialization.RemovedValue.INSTANCE); + assertSame(StorageSerialization.RemovedValue.INSTANCE, serialization.deserializeValue(bytes)); + } + // UTILITY private static int[] generateIntArray(int size) {