aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-21 17:34:56 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-21 17:34:56 +0000
commit1a92052dc7b1cbcf15f0b9f497942e397375d3b4 (patch)
treef60567eaf7f7900b4afcdbc6826f32f183e32378 /src/test/java
parentbedd122699360efcaf07310e713e0eec1e7457ec (diff)
Serialize Patio function definition to Protobuf
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java22
1 files changed, 22 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 6e889390..4a0fb7af 100644
--- a/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.patio.protobuf;
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.types.PatioDataLayouts;
@@ -97,6 +98,27 @@ public class PatioToProtobufTests {
assertThat(deserializedElement, equalTo(element));
}
+ @Test
+ public void canSerializeFunctionDefinition() {
+ var element = PatioFunctionDefinition.builder()
+ .withName("f")
+ .withVisibility(PatioVisibility.PRIVATE)
+ .addLocal(Patio.param("param1", PatioTypes.INT))
+ .addLocal(Patio.param("param2", PatioTypes.DATA_PTR))
+ .addLocal(Patio.val("local1", PatioTypes.FUNCTION_PTR))
+ .addLocal(Patio.val("local2", PatioTypes.INT))
+ .withReturnType(PatioTypes.VOID)
+ .addBodyInstruction(Patio.localStore(Patio.localRef("local2"), Patio.intConst(2)))
+ .build();
+
+ var deserializedElement = PatioToProtobuf.deserializeCompilationUnitElement(
+ PatioToProtobuf.serializeCompilationUnitElement(element, Sources.NULL),
+ Sources.NULL
+ );
+
+ assertThat(deserializedElement, equalTo(element));
+ }
+
// == Instructions ==
@Test