From 4ebb6355bd2481e844d07a649dce3daa2b9fa881 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 21 Mar 2026 11:25:08 +0000 Subject: Serialize Patio data layouts to Protobuf --- .../patio/protobuf/PatioToProtobufTests.java | 101 +++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java b/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java new file mode 100644 index 00000000..877d59cf --- /dev/null +++ b/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java @@ -0,0 +1,101 @@ +package org.shedlang.compiler.patio.protobuf; + +import org.junit.jupiter.api.Test; +import org.shedlang.compiler.patio.types.PatioDataLayouts; + +import java.util.List; + +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.equalTo; + +public class PatioToProtobufTests { + // == Data layouts == + + @Test + public void canSerializeDataLayoutArray() { + var layout = PatioDataLayouts.array(PatioDataLayouts.INT, 4); + + var deserializedLayout = PatioToProtobuf.deserializeDataLayout( + PatioToProtobuf.serializeDataLayout(layout) + ); + + assertThat(deserializedLayout, equalTo(layout)); + } + + @Test + public void canSerializeDataLayoutBool() { + var layout = PatioDataLayouts.BOOL; + + var deserializedLayout = PatioToProtobuf.deserializeDataLayout( + PatioToProtobuf.serializeDataLayout(layout) + ); + + assertThat(deserializedLayout, equalTo(layout)); + } + + @Test + public void canSerializeDataLayoutByte() { + var layout = PatioDataLayouts.BYTE; + + var deserializedLayout = PatioToProtobuf.deserializeDataLayout( + PatioToProtobuf.serializeDataLayout(layout) + ); + + assertThat(deserializedLayout, equalTo(layout)); + } + + @Test + public void canSerializeDataLayoutDataPtr() { + var layout = PatioDataLayouts.DATA_PTR; + + var deserializedLayout = PatioToProtobuf.deserializeDataLayout( + PatioToProtobuf.serializeDataLayout(layout) + ); + + assertThat(deserializedLayout, equalTo(layout)); + } + + @Test + public void canSerializeDataLayoutFunctionPtr() { + var layout = PatioDataLayouts.FUNCTION_PTR; + + var deserializedLayout = PatioToProtobuf.deserializeDataLayout( + PatioToProtobuf.serializeDataLayout(layout) + ); + + assertThat(deserializedLayout, equalTo(layout)); + } + + @Test + public void canSerializeDataLayoutInt() { + var layout = PatioDataLayouts.INT; + + var deserializedLayout = PatioToProtobuf.deserializeDataLayout( + PatioToProtobuf.serializeDataLayout(layout) + ); + + assertThat(deserializedLayout, equalTo(layout)); + } + + @Test + public void canSerializeDataLayoutInt32() { + var layout = PatioDataLayouts.INT32; + + var deserializedLayout = PatioToProtobuf.deserializeDataLayout( + PatioToProtobuf.serializeDataLayout(layout) + ); + + assertThat(deserializedLayout, equalTo(layout)); + } + + @Test + public void canSerializeDataLayoutStruct() { + var layout = PatioDataLayouts.struct(List.of(PatioDataLayouts.INT, PatioDataLayouts.INT, PatioDataLayouts.BYTE)); + + var deserializedLayout = PatioToProtobuf.deserializeDataLayout( + PatioToProtobuf.serializeDataLayout(layout) + ); + + assertThat(deserializedLayout, equalTo(layout)); + } +} -- cgit v1.2.3