aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-22 18:06:56 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-22 18:07:10 +0000
commited1c39334aaf4635119532e9ba6098a46843321a (patch)
tree94096725c218edfeb87d10e71e4c9b241a7d0920 /src/test/java/org
parent8430d69e1df2e9062c8fa25c5b0584966794855e (diff)
Serialize Patio types to flatbuffers
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java84
-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.java99
3 files changed, 116 insertions, 83 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 b68d89b7..791743c0 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
@@ -4,6 +4,8 @@ import org.junit.jupiter.api.Test;
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.types.PatioType;
+import org.shedlang.compiler.patio.types.PatioTypes;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
import org.shedlang.compiler.patio.values.PatioIntValue;
@@ -89,6 +91,88 @@ public abstract class PatioSerializationTests {
assertThat(deserializedIntValue, equalTo(intValue));
}
+ // == Types ==
+
+ protected abstract PatioType deserializeType(byte[] buffer);
+ protected abstract byte[] serializeType(PatioType value);
+
+ @Test
+ public void canSerializeBoolType() {
+ var type = PatioTypes.BOOL;
+
+ var deserializedType = deserializeType(
+ serializeType(type)
+ );
+
+ assertThat(deserializedType, equalTo(type));
+ }
+
+ @Test
+ public void canSerializeByteType() {
+ var type = PatioTypes.BYTE;
+
+ var deserializedType = deserializeType(
+ serializeType(type)
+ );
+
+ assertThat(deserializedType, equalTo(type));
+ }
+
+ @Test
+ public void canSerializeDataPtrType() {
+ var type = PatioTypes.DATA_PTR;
+
+ var deserializedType = deserializeType(
+ serializeType(type)
+ );
+
+ assertThat(deserializedType, equalTo(type));
+ }
+
+ @Test
+ public void canSerializeFunctionPtrType() {
+ var type = PatioTypes.FUNCTION_PTR;
+
+ var deserializedType = deserializeType(
+ serializeType(type)
+ );
+
+ assertThat(deserializedType, equalTo(type));
+ }
+
+ @Test
+ public void canSerializeIntType() {
+ var type = PatioTypes.INT;
+
+ var deserializedType = deserializeType(
+ serializeType(type)
+ );
+
+ assertThat(deserializedType, equalTo(type));
+ }
+
+ @Test
+ public void canSerializeInt32Type() {
+ var type = PatioTypes.INT32;
+
+ var deserializedType = deserializeType(
+ serializeType(type)
+ );
+
+ assertThat(deserializedType, equalTo(type));
+ }
+
+ @Test
+ public void canSerializeVoidType() {
+ var type = PatioTypes.VOID;
+
+ var deserializedType = deserializeType(
+ serializeType(type)
+ );
+
+ assertThat(deserializedType, equalTo(type));
+ }
+
// == 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 3c787404..2f6fdede 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java
@@ -4,7 +4,9 @@ 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.flatbuffers.PatioTypeFbs;
import org.shedlang.compiler.patio.types.PatioDataLayout;
+import org.shedlang.compiler.patio.types.PatioType;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
import org.shedlang.compiler.patio.values.PatioIntValue;
@@ -40,6 +42,20 @@ public class PatioToFlatbuffersTests extends PatioSerializationTests {
}
@Override
+ protected byte[] serializeType(PatioType value) {
+ var builder = new FlatBufferBuilder();
+ var valueFbs = PatioToFlatbuffers.serializeType(builder, value);
+ builder.finish(valueFbs);
+ return builder.sizedByteArray();
+ }
+
+ @Override
+ protected PatioType deserializeType(byte[] buffer) {
+ var valueFbs = PatioTypeFbs.getRootAsPatioTypeFbs(ByteBuffer.wrap(buffer));
+ return PatioToFlatbuffers.deserializeType(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 18a92f59..44334435 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
@@ -7,10 +7,7 @@ import org.shedlang.compiler.patio.PatioFunctionDefinition;
import org.shedlang.compiler.patio.PatioVisibility;
import org.shedlang.compiler.patio.instructions.Patio;
import org.shedlang.compiler.patio.protobuf.PatioProtobuf;
-import org.shedlang.compiler.patio.types.PatioDataLayout;
-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.types.*;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
import org.shedlang.compiler.patio.values.PatioIntValue;
import org.shedlang.compiler.sources.Sources;
@@ -53,6 +50,21 @@ public class PatioToProtobufTests extends PatioSerializationTests {
}
@Override
+ protected byte[] serializeType(PatioType value) {
+ return PatioToProtobuf.serializeType(value).toByteArray();
+ }
+
+ @Override
+ protected PatioType deserializeType(byte[] buffer) {
+ try {
+ var valueProtobuf = PatioProtobuf.PatioType.parseFrom(buffer);
+ return PatioToProtobuf.deserializeType(valueProtobuf);
+ } catch (InvalidProtocolBufferException exception) {
+ throw new RuntimeException(exception);
+ }
+ }
+
+ @Override
protected byte[] serializeDataLayout(PatioDataLayout value) {
return PatioToProtobuf.serializeDataLayout(value).toByteArray();
}
@@ -769,85 +781,6 @@ public class PatioToProtobufTests extends PatioSerializationTests {
assertThat(deserializedOperand, equalTo(operand));
}
- // == Types ==
-
- @Test
- public void canSerializeBoolType() {
- var type = PatioTypes.BOOL;
-
- var deserializedType = PatioToProtobuf.deserializeType(
- PatioToProtobuf.serializeType(type)
- );
-
- assertThat(deserializedType, equalTo(type));
- }
-
- @Test
- public void canSerializeByteType() {
- var type = PatioTypes.BYTE;
-
- var deserializedType = PatioToProtobuf.deserializeType(
- PatioToProtobuf.serializeType(type)
- );
-
- assertThat(deserializedType, equalTo(type));
- }
-
- @Test
- public void canSerializeDataPtrType() {
- var type = PatioTypes.DATA_PTR;
-
- var deserializedType = PatioToProtobuf.deserializeType(
- PatioToProtobuf.serializeType(type)
- );
-
- assertThat(deserializedType, equalTo(type));
- }
-
- @Test
- public void canSerializeFunctionPtrType() {
- var type = PatioTypes.FUNCTION_PTR;
-
- var deserializedType = PatioToProtobuf.deserializeType(
- PatioToProtobuf.serializeType(type)
- );
-
- assertThat(deserializedType, equalTo(type));
- }
-
- @Test
- public void canSerializeIntType() {
- var type = PatioTypes.INT;
-
- var deserializedType = PatioToProtobuf.deserializeType(
- PatioToProtobuf.serializeType(type)
- );
-
- assertThat(deserializedType, equalTo(type));
- }
-
- @Test
- public void canSerializeInt32Type() {
- var type = PatioTypes.INT32;
-
- var deserializedType = PatioToProtobuf.deserializeType(
- PatioToProtobuf.serializeType(type)
- );
-
- assertThat(deserializedType, equalTo(type));
- }
-
- @Test
- public void canSerializeVoidType() {
- var type = PatioTypes.VOID;
-
- var deserializedType = PatioToProtobuf.deserializeType(
- PatioToProtobuf.serializeType(type)
- );
-
- assertThat(deserializedType, equalTo(type));
- }
-
// == Data values ==
@Test