aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-22 17:56:34 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-22 17:59:31 +0000
commit8430d69e1df2e9062c8fa25c5b0584966794855e (patch)
tree302677ee5db7b8ebd2ebb6616a7f4fd46e666b6c /src/test/java
parent21a38961437a4139321ab1c2601413e5f88c8e9c (diff)
Serialize Patio int values to flatbuffers
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java50
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java16
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java62
3 files changed, 82 insertions, 46 deletions
diff --git a/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java b/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
index 3ed5ae0c..b68d89b7 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
@@ -5,6 +5,7 @@ import org.shedlang.compiler.patio.instructions.Patio;
import org.shedlang.compiler.patio.types.PatioDataLayout;
import org.shedlang.compiler.patio.types.PatioDataLayouts;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
+import org.shedlang.compiler.patio.values.PatioIntValue;
import java.util.List;
@@ -39,6 +40,55 @@ public abstract class PatioSerializationTests {
assertThat(deserializedDataPtrValue, equalTo(dataPtrValue));
}
+ // == Int values ==
+
+ protected abstract PatioIntValue deserializeIntValue(byte[] buffer);
+ protected abstract byte[] serializeIntValue(PatioIntValue value);
+
+ @Test
+ public void canSerializeIntValueByteOffsetOf() {
+ var intValue = Patio.intValueByteOffsetOf(
+ PatioDataLayouts.struct(List.of(
+ PatioDataLayouts.INT,
+ PatioDataLayouts.BYTE
+ )),
+ List.of(1, 2)
+ );
+
+ var deserializedIntValue = deserializeIntValue(
+ serializeIntValue(intValue)
+ );
+
+ assertThat(deserializedIntValue, equalTo(intValue));
+ }
+
+ @Test
+ public void canSerializeIntValueByteSizeOf() {
+ var intValue = Patio.intValueByteSizeOf(
+ PatioDataLayouts.struct(List.of(
+ PatioDataLayouts.INT,
+ PatioDataLayouts.BYTE
+ ))
+ );
+
+ var deserializedIntValue = deserializeIntValue(
+ serializeIntValue(intValue)
+ );
+
+ assertThat(deserializedIntValue, equalTo(intValue));
+ }
+
+ @Test
+ public void canSerializeIntValueLiteral() {
+ var intValue = Patio.intValueLiteral(42);
+
+ var deserializedIntValue = deserializeIntValue(
+ serializeIntValue(intValue)
+ );
+
+ assertThat(deserializedIntValue, equalTo(intValue));
+ }
+
// == Data layouts ==
protected abstract PatioDataLayout deserializeDataLayout(byte[] buffer);
diff --git a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java
index eacb36cb..3c787404 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java
@@ -3,8 +3,10 @@ package org.shedlang.compiler.patio.serialization;
import com.google.flatbuffers.FlatBufferBuilder;
import org.shedlang.compiler.patio.flatbuffers.PatioDataLayoutFbs;
import org.shedlang.compiler.patio.flatbuffers.PatioDataPtrValueFbs;
+import org.shedlang.compiler.patio.flatbuffers.PatioIntValueFbs;
import org.shedlang.compiler.patio.types.PatioDataLayout;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
+import org.shedlang.compiler.patio.values.PatioIntValue;
import java.nio.ByteBuffer;
@@ -24,6 +26,20 @@ public class PatioToFlatbuffersTests extends PatioSerializationTests {
}
@Override
+ protected byte[] serializeIntValue(PatioIntValue value) {
+ var builder = new FlatBufferBuilder();
+ var valueFbs = PatioToFlatbuffers.serializeIntValue(builder, value);
+ builder.finish(valueFbs);
+ return builder.sizedByteArray();
+ }
+
+ @Override
+ protected PatioIntValue deserializeIntValue(byte[] buffer) {
+ var valueFbs = PatioIntValueFbs.getRootAsPatioIntValueFbs(ByteBuffer.wrap(buffer));
+ return PatioToFlatbuffers.deserializeIntValue(valueFbs);
+ }
+
+ @Override
protected byte[] serializeDataLayout(PatioDataLayout value) {
var builder = new FlatBufferBuilder();
var valueFbs = PatioToFlatbuffers.serializeDataLayout(builder, value);
diff --git a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
index a112af5c..18a92f59 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
@@ -12,6 +12,7 @@ import org.shedlang.compiler.patio.types.PatioDataLayouts;
import org.shedlang.compiler.patio.types.PatioDataValues;
import org.shedlang.compiler.patio.types.PatioTypes;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
+import org.shedlang.compiler.patio.values.PatioIntValue;
import org.shedlang.compiler.sources.Sources;
import java.util.List;
@@ -37,6 +38,21 @@ public class PatioToProtobufTests extends PatioSerializationTests {
}
@Override
+ protected byte[] serializeIntValue(PatioIntValue value) {
+ return PatioToProtobuf.serializeIntValue(value).toByteArray();
+ }
+
+ @Override
+ protected PatioIntValue deserializeIntValue(byte[] buffer) {
+ try {
+ var valueProtobuf = PatioProtobuf.PatioIntValue.parseFrom(buffer);
+ return PatioToProtobuf.deserializeIntValue(valueProtobuf);
+ } catch (InvalidProtocolBufferException exception) {
+ throw new RuntimeException(exception);
+ }
+ }
+
+ @Override
protected byte[] serializeDataLayout(PatioDataLayout value) {
return PatioToProtobuf.serializeDataLayout(value).toByteArray();
}
@@ -753,52 +769,6 @@ public class PatioToProtobufTests extends PatioSerializationTests {
assertThat(deserializedOperand, equalTo(operand));
}
- // == Int values ==
-
- @Test
- public void canSerializeIntValueByteOffsetOf() {
- var intValue = Patio.intValueByteOffsetOf(
- PatioDataLayouts.struct(List.of(
- PatioDataLayouts.INT,
- PatioDataLayouts.BYTE
- )),
- List.of(1, 2)
- );
-
- var deserializedIntValue = PatioToProtobuf.deserializeIntValue(
- PatioToProtobuf.serializeIntValue(intValue)
- );
-
- assertThat(deserializedIntValue, equalTo(intValue));
- }
-
- @Test
- public void canSerializeIntValueByteSizeOf() {
- var intValue = Patio.intValueByteSizeOf(
- PatioDataLayouts.struct(List.of(
- PatioDataLayouts.INT,
- PatioDataLayouts.BYTE
- ))
- );
-
- var deserializedIntValue = PatioToProtobuf.deserializeIntValue(
- PatioToProtobuf.serializeIntValue(intValue)
- );
-
- assertThat(deserializedIntValue, equalTo(intValue));
- }
-
- @Test
- public void canSerializeIntValueLiteral() {
- var intValue = Patio.intValueLiteral(42);
-
- var deserializedIntValue = PatioToProtobuf.deserializeIntValue(
- PatioToProtobuf.serializeIntValue(intValue)
- );
-
- assertThat(deserializedIntValue, equalTo(intValue));
- }
-
// == Types ==
@Test