70 lines
2.0 KiB
Java
70 lines
2.0 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);
|
||
|
}
|
||
|
|
||
|
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");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|