aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-21 11:25:08 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-21 11:25:08 +0000
commit4ebb6355bd2481e844d07a649dce3daa2b9fa881 (patch)
tree9fda5411800a34f51befe3c0447fe00cf29940cf /src/test/java
parent31a0498b5479163e399ba76b1ca8dee15e7a3bbe (diff)
Serialize Patio data layouts to Protobuf
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java101
1 files changed, 101 insertions, 0 deletions
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));
+ }
+}