aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-21 12:04:41 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-21 12:04:41 +0000
commit53ae751f2c678f678853ca4ddd9bbac3b5d902f9 (patch)
treec4759708c64aa22378e4f8e1e431f078ae1e0ae7 /src/test/java
parent36cea7c417b44060c860c33d42af5631bea9bb0a (diff)
Serialize Patio data values and data layouts to protobuf
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java162
1 files changed, 162 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
index 877d59cf..368f95f3 100644
--- a/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java
@@ -1,7 +1,9 @@
package org.shedlang.compiler.patio.protobuf;
import org.junit.jupiter.api.Test;
+import org.shedlang.compiler.patio.instructions.Patio;
import org.shedlang.compiler.patio.types.PatioDataLayouts;
+import org.shedlang.compiler.patio.types.PatioDataValues;
import java.util.List;
@@ -9,6 +11,76 @@ import static org.zwobble.precisely.AssertThat.assertThat;
import static org.zwobble.precisely.Matchers.equalTo;
public class PatioToProtobufTests {
+ // == Data ptr values ==
+
+ @Test
+ public void canSerializeDataPtrValueDataElement() {
+ var dataPtrValue = Patio.dataPtrValueDataElement("string");
+
+ var deserializedDataPtrValue = PatioToProtobuf.deserializeDataPtrValue(
+ PatioToProtobuf.serializeDataPtrValue(dataPtrValue)
+ );
+
+ assertThat(deserializedDataPtrValue, equalTo(dataPtrValue));
+ }
+
+ @Test
+ public void canSerializeDataPtrValueNull() {
+ var dataPtrValue = Patio.dataPtrValueNull();
+
+ var deserializedDataPtrValue = PatioToProtobuf.deserializeDataPtrValue(
+ PatioToProtobuf.serializeDataPtrValue(dataPtrValue)
+ );
+
+ assertThat(deserializedDataPtrValue, equalTo(dataPtrValue));
+ }
+
+ // == Int values ==
+
+ @Test
+ public void canSerializeIntValueByteOffsetOf() {
+ var intValue = Patio.intValueByteOffsetOf(
+ PatioDataLayouts.struct(List.of(
+ PatioDataLayouts.INT,
+ PatioDataLayouts.BYTE
+ )),
+ List.of(1, 2)
+ );
+
+ var deserializedIntValue = PatioToProtobuf.deserializeIntValue(
+ PatioToProtobuf.serializeIntValue(intValue)
+ );
+
+ assertThat(deserializedIntValue, equalTo(intValue));
+ }
+
+ @Test
+ public void canSerializeIntValueByteSizeOf() {
+ var intValue = Patio.intValueByteSizeOf(
+ PatioDataLayouts.struct(List.of(
+ PatioDataLayouts.INT,
+ PatioDataLayouts.BYTE
+ ))
+ );
+
+ var deserializedIntValue = PatioToProtobuf.deserializeIntValue(
+ PatioToProtobuf.serializeIntValue(intValue)
+ );
+
+ assertThat(deserializedIntValue, equalTo(intValue));
+ }
+
+ @Test
+ public void canSerializeIntValueLiteral() {
+ var intValue = Patio.intValueLiteral(42);
+
+ var deserializedIntValue = PatioToProtobuf.deserializeIntValue(
+ PatioToProtobuf.serializeIntValue(intValue)
+ );
+
+ assertThat(deserializedIntValue, equalTo(intValue));
+ }
+
// == Data layouts ==
@Test
@@ -98,4 +170,94 @@ public class PatioToProtobufTests {
assertThat(deserializedLayout, equalTo(layout));
}
+
+ // == 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));
+ }
}