aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-22 18:42:45 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-22 18:42:45 +0000
commit2fad94a05e879072af65ed1a995939d3249c2443 (patch)
tree34fd14d81124813b9dcf63049bb4a5fba5270d2d /src/test/java
parent0a6b38ca7ee956cab5818c195856d5c159966f7a (diff)
Serialize Patio operands to flatbuffers
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java83
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java15
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java95
3 files changed, 114 insertions, 79 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 14d47932..432be5c3 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.patio.serialization;
import org.junit.jupiter.api.Test;
import org.shedlang.compiler.patio.instructions.Patio;
+import org.shedlang.compiler.patio.operands.PatioOperand;
import org.shedlang.compiler.patio.types.*;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
import org.shedlang.compiler.patio.values.PatioIntValue;
@@ -12,6 +13,88 @@ import static org.zwobble.precisely.AssertThat.assertThat;
import static org.zwobble.precisely.Matchers.equalTo;
public abstract class PatioSerializationTests {
+ // == Operands ==
+
+ protected abstract PatioOperand deserializeOperand(byte[] buffer);
+ protected abstract byte[] serializeOperand(PatioOperand value);
+
+ @Test
+ public void canSerializeBoolConst() {
+ var operand = Patio.boolConst(true);
+
+ var deserializedOperand = deserializeOperand(
+ serializeOperand(operand)
+ );
+
+ assertThat(deserializedOperand, equalTo(operand));
+ }
+
+ @Test
+ public void canSerializeByteConst() {
+ var operand = Patio.byteConst((byte) 42);
+
+ var deserializedOperand = deserializeOperand(
+ serializeOperand(operand)
+ );
+
+ assertThat(deserializedOperand, equalTo(operand));
+ }
+
+ @Test
+ public void canSerializeDataPtrConst() {
+ var operand = Patio.dataPtrConst("x");
+
+ var deserializedOperand = deserializeOperand(
+ serializeOperand(operand)
+ );
+
+ assertThat(deserializedOperand, equalTo(operand));
+ }
+
+ @Test
+ public void canSerializeFunctionPtrConst() {
+ var operand = Patio.functionPtrConst("x");
+
+ var deserializedOperand = deserializeOperand(
+ serializeOperand(operand)
+ );
+
+ assertThat(deserializedOperand, equalTo(operand));
+ }
+
+ @Test
+ public void canSerializeIntConst() {
+ var operand = Patio.intConst(42);
+
+ var deserializedOperand = deserializeOperand(
+ serializeOperand(operand)
+ );
+
+ assertThat(deserializedOperand, equalTo(operand));
+ }
+
+ @Test
+ public void canSerializeInt32Const() {
+ var operand = Patio.int32Const(42);
+
+ var deserializedOperand = deserializeOperand(
+ serializeOperand(operand)
+ );
+
+ assertThat(deserializedOperand, equalTo(operand));
+ }
+
+ @Test
+ public void canSerializeLocalRef() {
+ var operand = Patio.localRef("x");
+
+ var deserializedOperand = deserializeOperand(
+ serializeOperand(operand)
+ );
+
+ assertThat(deserializedOperand, equalTo(operand));
+ }
+
// == Data ptr values ==
protected abstract PatioDataPtrValue deserializeDataPtrValue(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 e8c5eaa8..b175f1da 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.patio.serialization;
import com.google.flatbuffers.FlatBufferBuilder;
import org.shedlang.compiler.patio.flatbuffers.*;
+import org.shedlang.compiler.patio.operands.PatioOperand;
import org.shedlang.compiler.patio.types.PatioDataLayout;
import org.shedlang.compiler.patio.types.PatioDataValue;
import org.shedlang.compiler.patio.types.PatioType;
@@ -12,6 +13,20 @@ import java.nio.ByteBuffer;
public class PatioToFlatbuffersTests extends PatioSerializationTests {
@Override
+ protected byte[] serializeOperand(PatioOperand value) {
+ var builder = new FlatBufferBuilder();
+ var valueFbs = PatioToFlatbuffers.serializeOperand(builder, value);
+ builder.finish(valueFbs);
+ return builder.sizedByteArray();
+ }
+
+ @Override
+ protected PatioOperand deserializeOperand(byte[] buffer) {
+ var valueFbs = PatioOperandFbs.getRootAsPatioOperandFbs(ByteBuffer.wrap(buffer));
+ return PatioToFlatbuffers.deserializeOperand(valueFbs);
+ }
+
+ @Override
protected byte[] serializeDataPtrValue(PatioDataPtrValue value) {
var builder = new FlatBufferBuilder();
var valueFbs = PatioToFlatbuffers.serializeDataPtrValue(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 a57b7810..ff8cfc4a 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
@@ -6,6 +6,7 @@ import org.shedlang.compiler.patio.PatioFunctionDeclaration;
import org.shedlang.compiler.patio.PatioFunctionDefinition;
import org.shedlang.compiler.patio.PatioVisibility;
import org.shedlang.compiler.patio.instructions.Patio;
+import org.shedlang.compiler.patio.operands.PatioOperand;
import org.shedlang.compiler.patio.protobuf.PatioProtobuf;
import org.shedlang.compiler.patio.types.*;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
@@ -20,6 +21,21 @@ import static org.zwobble.precisely.Matchers.equalTo;
public class PatioToProtobufTests extends PatioSerializationTests {
@Override
+ protected byte[] serializeOperand(PatioOperand value) {
+ return PatioToProtobuf.serializeOperand(value).toByteArray();
+ }
+
+ @Override
+ protected PatioOperand deserializeOperand(byte[] buffer) {
+ try {
+ var valueProtobuf = PatioProtobuf.PatioOperand.parseFrom(buffer);
+ return PatioToProtobuf.deserializeOperand(valueProtobuf);
+ } catch (InvalidProtocolBufferException exception) {
+ throw new RuntimeException(exception);
+ }
+ }
+
+ @Override
protected byte[] serializeDataPtrValue(PatioDataPtrValue value) {
return PatioToProtobuf.serializeDataPtrValue(value).toByteArray();
}
@@ -716,83 +732,4 @@ public class PatioToProtobufTests extends PatioSerializationTests {
assertThat(deserializedInstruction, equalTo(instruction));
}
-
- // == Operands ==
-
- @Test
- public void canSerializeBoolConst() {
- var operand = Patio.boolConst(true);
-
- var deserializedOperand = PatioToProtobuf.deserializeOperand(
- PatioToProtobuf.serializeOperand(operand)
- );
-
- assertThat(deserializedOperand, equalTo(operand));
- }
-
- @Test
- public void canSerializeByteConst() {
- var operand = Patio.byteConst((byte) 42);
-
- var deserializedOperand = PatioToProtobuf.deserializeOperand(
- PatioToProtobuf.serializeOperand(operand)
- );
-
- assertThat(deserializedOperand, equalTo(operand));
- }
-
- @Test
- public void canSerializeDataPtrConst() {
- var operand = Patio.dataPtrConst("x");
-
- var deserializedOperand = PatioToProtobuf.deserializeOperand(
- PatioToProtobuf.serializeOperand(operand)
- );
-
- assertThat(deserializedOperand, equalTo(operand));
- }
-
- @Test
- public void canSerializeFunctionPtrConst() {
- var operand = Patio.functionPtrConst("x");
-
- var deserializedOperand = PatioToProtobuf.deserializeOperand(
- PatioToProtobuf.serializeOperand(operand)
- );
-
- assertThat(deserializedOperand, equalTo(operand));
- }
-
- @Test
- public void canSerializeIntConst() {
- var operand = Patio.intConst(42);
-
- var deserializedOperand = PatioToProtobuf.deserializeOperand(
- PatioToProtobuf.serializeOperand(operand)
- );
-
- assertThat(deserializedOperand, equalTo(operand));
- }
-
- @Test
- public void canSerializeInt32Const() {
- var operand = Patio.int32Const(42);
-
- var deserializedOperand = PatioToProtobuf.deserializeOperand(
- PatioToProtobuf.serializeOperand(operand)
- );
-
- assertThat(deserializedOperand, equalTo(operand));
- }
-
- @Test
- public void canSerializeLocalRef() {
- var operand = Patio.localRef("x");
-
- var deserializedOperand = PatioToProtobuf.deserializeOperand(
- PatioToProtobuf.serializeOperand(operand)
- );
-
- assertThat(deserializedOperand, equalTo(operand));
- }
}