aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/shedlang
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-22 11:41:34 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-22 11:41:43 +0000
commitae0ea761a2af6c171232ffb5c7d26a38a439efaf (patch)
treefd6763d461cb6a19d35e2591b49ec1026f9bd2b1 /src/test/java/org/shedlang
parent255ccadf5d665fdeb3a6f6da86c4fd5ac45af36b (diff)
Extract PatioSerializationTests for data ptr values
Diffstat (limited to 'src/test/java/org/shedlang')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java37
-rw-r--r--src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java44
2 files changed, 56 insertions, 25 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
new file mode 100644
index 00000000..74756c2a
--- /dev/null
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java
@@ -0,0 +1,37 @@
+package org.shedlang.compiler.patio.serialization;
+
+import org.junit.jupiter.api.Test;
+import org.shedlang.compiler.patio.instructions.Patio;
+import org.shedlang.compiler.patio.values.PatioDataPtrValue;
+
+import static org.zwobble.precisely.AssertThat.assertThat;
+import static org.zwobble.precisely.Matchers.equalTo;
+
+public abstract class PatioSerializationTests {
+ // == Data ptr values ==
+
+ protected abstract PatioDataPtrValue deserializeDataPtrValue(byte[] buffer);
+ protected abstract byte[] serializeDataPtrValue(PatioDataPtrValue value);
+
+ @Test
+ public void canSerializeDataPtrValueDataElement() {
+ var dataPtrValue = Patio.dataPtrValueDataElement("string");
+
+ var deserializedDataPtrValue = deserializeDataPtrValue(
+ serializeDataPtrValue(dataPtrValue)
+ );
+
+ assertThat(deserializedDataPtrValue, equalTo(dataPtrValue));
+ }
+
+ @Test
+ public void canSerializeDataPtrValueNull() {
+ var dataPtrValue = Patio.dataPtrValueNull();
+
+ var deserializedDataPtrValue = deserializeDataPtrValue(
+ serializeDataPtrValue(dataPtrValue)
+ );
+
+ assertThat(deserializedDataPtrValue, equalTo(dataPtrValue));
+ }
+}
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 396bed72..ee4a8f82 100644
--- a/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java
@@ -1,13 +1,16 @@
package org.shedlang.compiler.patio.serialization;
+import com.google.protobuf.InvalidProtocolBufferException;
import org.junit.jupiter.api.Test;
import org.shedlang.compiler.patio.PatioFunctionDeclaration;
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.PatioDataLayouts;
import org.shedlang.compiler.patio.types.PatioDataValues;
import org.shedlang.compiler.patio.types.PatioTypes;
+import org.shedlang.compiler.patio.values.PatioDataPtrValue;
import org.shedlang.compiler.sources.Sources;
import java.util.List;
@@ -16,7 +19,22 @@ import java.util.Optional;
import static org.zwobble.precisely.AssertThat.assertThat;
import static org.zwobble.precisely.Matchers.equalTo;
-public class PatioToProtobufTests {
+public class PatioToProtobufTests extends PatioSerializationTests {
+ @Override
+ protected byte[] serializeDataPtrValue(PatioDataPtrValue value) {
+ return PatioToProtobuf.serializeDataPtrValue(value).toByteArray();
+ }
+
+ @Override
+ protected PatioDataPtrValue deserializeDataPtrValue(byte[] buffer) {
+ try {
+ var valueProtobuf = PatioProtobuf.PatioDataPtrValue.parseFrom(buffer);
+ return PatioToProtobuf.deserializeDataPtrValue(valueProtobuf);
+ } catch (InvalidProtocolBufferException exception) {
+ throw new RuntimeException(exception);
+ }
+ }
+
// == Compilation unit ==
@Test
@@ -719,30 +737,6 @@ public class PatioToProtobufTests {
assertThat(deserializedOperand, equalTo(operand));
}
- // == 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