diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-03-22 11:41:34 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-03-22 11:41:43 +0000 |
| commit | ae0ea761a2af6c171232ffb5c7d26a38a439efaf (patch) | |
| tree | fd6763d461cb6a19d35e2591b49ec1026f9bd2b1 /src/test/java/org/shedlang | |
| parent | 255ccadf5d665fdeb3a6f6da86c4fd5ac45af36b (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.java | 37 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/patio/serialization/PatioToProtobufTests.java | 44 |
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 |
