aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-22 18:25:49 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-22 18:25:49 +0000
commit0a6b38ca7ee956cab5818c195856d5c159966f7a (patch)
tree760bb0e88b5e83a2a44826ed032d580e334fd82a /src/test/java/org
parented1c39334aaf4635119532e9ba6098a46843321a (diff)
Serialize Patio data values to flatbuffers
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java99
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java20
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java105
3 files changed, 126 insertions, 98 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 791743c0..14d47932 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
@@ -2,10 +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.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.types.*;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
import org.shedlang.compiler.patio.values.PatioIntValue;
@@ -265,4 +262,98 @@ public abstract class PatioSerializationTests {
assertThat(deserializedLayout, equalTo(layout));
}
+
+ // == Data values ==
+
+ protected abstract PatioDataValue deserializeDataValue(byte[] buffer);
+ protected abstract byte[] serializeDataValue(PatioDataValue value);
+
+
+ @Test
+ public void canSerializeDataValueArray() {
+ var value = PatioDataValues.array(
+ PatioDataLayouts.BYTE,
+ List.of(
+ PatioDataValues.byte_(0x01),
+ PatioDataValues.byte_(0x02),
+ PatioDataValues.byte_(0x03)
+ )
+ );
+
+ var deserializedValue = deserializeDataValue(
+ serializeDataValue(value)
+ );
+
+ assertThat(deserializedValue, equalTo(value));
+ }
+
+ @Test
+ public void canSerializeDataValueBool() {
+ var value = PatioDataValues.bool(true);
+
+ var deserializedValue = deserializeDataValue(
+ serializeDataValue(value)
+ );
+
+ assertThat(deserializedValue, equalTo(value));
+ }
+
+ @Test
+ public void canSerializeDataValueByte() {
+ var value = PatioDataValues.byte_(0xc8);
+
+ var deserializedValue = deserializeDataValue(
+ serializeDataValue(value)
+ );
+
+ assertThat(deserializedValue, equalTo(value));
+ }
+
+ @Test
+ public void canSerializeDataValueDataPtr() {
+ var value = PatioDataValues.dataPtrNull();
+
+ var deserializedValue = deserializeDataValue(
+ serializeDataValue(value)
+ );
+
+ assertThat(deserializedValue, equalTo(value));
+ }
+
+ @Test
+ public void canSerializeDataValueInt() {
+ var value = PatioDataValues.int_(42);
+
+ var deserializedValue = deserializeDataValue(
+ serializeDataValue(value)
+ );
+
+ assertThat(deserializedValue, equalTo(value));
+ }
+
+ @Test
+ public void canSerializeDataValueInt32() {
+ var value = PatioDataValues.int32(42);
+
+ var deserializedValue = deserializeDataValue(
+ serializeDataValue(value)
+ );
+
+ assertThat(deserializedValue, equalTo(value));
+ }
+
+ @Test
+ public void canSerializeDataValueStruct() {
+ var value = PatioDataValues.struct(List.of(
+ PatioDataValues.byte_(0x01),
+ PatioDataValues.byte_(0x02),
+ PatioDataValues.byte_(0x03)
+ ));
+
+ var deserializedValue = deserializeDataValue(
+ serializeDataValue(value)
+ );
+
+ assertThat(deserializedValue, equalTo(value));
+ }
}
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 2f6fdede..e8c5eaa8 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToFlatbuffersTests.java
@@ -1,11 +1,9 @@
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.flatbuffers.PatioTypeFbs;
+import org.shedlang.compiler.patio.flatbuffers.*;
import org.shedlang.compiler.patio.types.PatioDataLayout;
+import org.shedlang.compiler.patio.types.PatioDataValue;
import org.shedlang.compiler.patio.types.PatioType;
import org.shedlang.compiler.patio.values.PatioDataPtrValue;
import org.shedlang.compiler.patio.values.PatioIntValue;
@@ -68,4 +66,18 @@ public class PatioToFlatbuffersTests extends PatioSerializationTests {
var valueFbs = PatioDataLayoutFbs.getRootAsPatioDataLayoutFbs(ByteBuffer.wrap(buffer));
return PatioToFlatbuffers.deserializeDataLayout(valueFbs);
}
+
+ @Override
+ protected byte[] serializeDataValue(PatioDataValue value) {
+ var builder = new FlatBufferBuilder();
+ var valueFbs = PatioToFlatbuffers.serializeDataValue(builder, value);
+ builder.finish(valueFbs);
+ return builder.sizedByteArray();
+ }
+
+ @Override
+ protected PatioDataValue deserializeDataValue(byte[] buffer) {
+ var valueFbs = PatioDataValueFbs.getRootAsPatioDataValueFbs(ByteBuffer.wrap(buffer));
+ return PatioToFlatbuffers.deserializeDataValue(valueFbs);
+ }
}
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 44334435..a57b7810 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
@@ -79,6 +79,21 @@ public class PatioToProtobufTests extends PatioSerializationTests {
}
}
+ @Override
+ protected byte[] serializeDataValue(PatioDataValue value) {
+ return PatioToProtobuf.serializeDataValue(value).toByteArray();
+ }
+
+ @Override
+ protected PatioDataValue deserializeDataValue(byte[] buffer) {
+ try {
+ var valueProtobuf = PatioProtobuf.PatioDataValue.parseFrom(buffer);
+ return PatioToProtobuf.deserializeDataValue(valueProtobuf);
+ } catch (InvalidProtocolBufferException exception) {
+ throw new RuntimeException(exception);
+ }
+ }
+
// == Compilation unit ==
@Test
@@ -780,94 +795,4 @@ public class PatioToProtobufTests extends PatioSerializationTests {
assertThat(deserializedOperand, equalTo(operand));
}
-
- // == Data values ==
-
- @Test
- public void canSerializeDataValueArray() {
- var value = PatioDataValues.array(
- PatioDataLayouts.BYTE,
- List.of(
- PatioDataValues.byte_(0x01),
- PatioDataValues.byte_(0x02),
- PatioDataValues.byte_(0x03)
- )
- );
-
- var deserializedValue = PatioToProtobuf.deserializeDataValue(
- PatioToProtobuf.serializeDataValue(value)
- );
-
- assertThat(deserializedValue, equalTo(value));
- }
-
- @Test
- public void canSerializeDataValueBool() {
- var value = PatioDataValues.bool(true);
-
- var deserializedValue = PatioToProtobuf.deserializeDataValue(
- PatioToProtobuf.serializeDataValue(value)
- );
-
- assertThat(deserializedValue, equalTo(value));
- }
-
- @Test
- public void canSerializeDataValueByte() {
- var value = PatioDataValues.byte_(0xc8);
-
- var deserializedValue = PatioToProtobuf.deserializeDataValue(
- PatioToProtobuf.serializeDataValue(value)
- );
-
- assertThat(deserializedValue, equalTo(value));
- }
-
- @Test
- public void canSerializeDataValueDataPtr() {
- var value = PatioDataValues.dataPtrNull();
-
- var deserializedValue = PatioToProtobuf.deserializeDataValue(
- PatioToProtobuf.serializeDataValue(value)
- );
-
- assertThat(deserializedValue, equalTo(value));
- }
-
- @Test
- public void canSerializeDataValueInt() {
- var value = PatioDataValues.int_(42);
-
- var deserializedValue = PatioToProtobuf.deserializeDataValue(
- PatioToProtobuf.serializeDataValue(value)
- );
-
- assertThat(deserializedValue, equalTo(value));
- }
-
- @Test
- public void canSerializeDataValueInt32() {
- var value = PatioDataValues.int32(42);
-
- var deserializedValue = PatioToProtobuf.deserializeDataValue(
- PatioToProtobuf.serializeDataValue(value)
- );
-
- assertThat(deserializedValue, equalTo(value));
- }
-
- @Test
- public void canSerializeDataValueStruct() {
- var value = PatioDataValues.struct(List.of(
- PatioDataValues.byte_(0x01),
- PatioDataValues.byte_(0x02),
- PatioDataValues.byte_(0x03)
- ));
-
- var deserializedValue = PatioToProtobuf.deserializeDataValue(
- PatioToProtobuf.serializeDataValue(value)
- );
-
- assertThat(deserializedValue, equalTo(value));
- }
}