diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-03-22 18:06:56 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-03-22 18:07:10 +0000 |
| commit | ed1c39334aaf4635119532e9ba6098a46843321a (patch) | |
| tree | 94096725c218edfeb87d10e71e4c9b241a7d0920 /src/test/java/org | |
| parent | 8430d69e1df2e9062c8fa25c5b0584966794855e (diff) | |
Serialize Patio types to flatbuffers
Diffstat (limited to 'src/test/java/org')
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 |
