This repository has been archived on 2023-01-02. You can view files and clone it, but cannot push or open issues or pull requests.
data-generator-runtime/src/test/java/it/cavallium/data/generator/nativedata/TestInt52Serializer.java

72 lines
2.1 KiB
Java

package it.cavallium.data.generator.nativedata;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class TestInt52Serializer {
@Test
public void testInt52Serialization() throws IOException {
for (int i = 0; i <= 300; i++) {
testInt52Serialization(i);
}
testInt52Serialization(0xF_FF_FF_FF_FF_FF_FFL);
testInt52Serialization(1099511627775L);
testInt52Serialization(999619292661L);
}
public void testInt52Serialization(long n) throws IOException {
var serializer = new Int52Serializer();
byte[] out;
try (var baos = new ByteArrayOutputStream()) {
try (var dos = new DataOutputStream(baos)) {
serializer.serialize(dos, Int52.fromLong(n));
}
out = baos.toByteArray();
}
var bais = new ByteArrayInputStream(out);
var dis = new DataInputStream(bais);
Assertions.assertEquals(n, serializer.deserialize(dis).longValue(), "Deserialized number differ");
}
@Test
public void testInt52OptionalSerialization() throws IOException {
testInt52OptionalSerialization(null);
for (long i = 0; i <= 300; i++) {
testInt52OptionalSerialization(i);
}
testInt52OptionalSerialization(0xF_FF_FF_FF_FF_FF_FFL);
}
public void testInt52OptionalSerialization(@Nullable Long n) throws IOException {
var serializer = new NullableInt52Serializer();
byte[] out;
try (var baos = new ByteArrayOutputStream()) {
try (var dos = new DataOutputStream(baos)) {
if (n == null) {
serializer.serialize(dos, NullableInt52.empty());
} else {
serializer.serialize(dos, NullableInt52.of(Int52.fromLong(n)));
}
}
out = baos.toByteArray();
}
var bais = new ByteArrayInputStream(out);
var dis = new DataInputStream(bais);
if (n == null) {
Assertions.assertNull(serializer.deserialize(dis).getNullable(), "Deserialized number is not empty");
} else {
Assertions.assertEquals(n, serializer.deserialize(dis).get().longValue(), "Deserialized number differ");
}
}
}