From ae0ea761a2af6c171232ffb5c7d26a38a439efaf Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 22 Mar 2026 11:41:34 +0000 Subject: Extract PatioSerializationTests for data ptr values --- .../serialization/PatioSerializationTests.java | 37 ++++++++++++++++++ .../patio/serialization/PatioToProtobufTests.java | 44 ++++++++++------------ 2 files changed, 56 insertions(+), 25 deletions(-) create mode 100644 src/test/java/org/shedlang/compiler/patio/serialization/PatioSerializationTests.java (limited to 'src/test/java') 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 -- cgit v1.2.3