From ef3b54474640a245d7e2f92ee56604246312ef29 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 20 Jul 2023 16:39:04 +0100 Subject: Test serialization of Patio compilation units --- .../compiler/patio/PatioSerializerTests.java | 28 ++++++++++++++++++++++ .../org/shedlang/compiler/patio/PatioTesting.java | 7 ++++++ .../compiler/patio/instructions/Patio.java | 9 +++++-- 3 files changed, 42 insertions(+), 2 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java index 73d4c613..f7e8b73d 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java @@ -11,6 +11,34 @@ import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.equalTo; public class PatioSerializerTests { + // == Compilation unit == + + @Test + public void canSerializeCompilationUnit() { + var element = PatioFunctionDefinition.builder() + .withName("f") + .build(); + var compilationUnit = Patio.compilationUnit(List.of(element)); + + var string = PatioTesting.serializeCompilationUnit(compilationUnit); + + assertThat(string, equalTo(""" + ( + ( + function + "f" + is-private=true + params=() + locals=() + body=( + ) + ) + )""" + )); + } + + + // == Compilation unit elements == @Test diff --git a/src/test/java/org/shedlang/compiler/patio/PatioTesting.java b/src/test/java/org/shedlang/compiler/patio/PatioTesting.java index eb7c2d8d..53e13d13 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioTesting.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioTesting.java @@ -1,5 +1,6 @@ package org.shedlang.compiler.patio; +import org.shedlang.compiler.patio.ast.PatioCompilationUnit; import org.shedlang.compiler.patio.ast.PatioCompilationUnitElement; import org.shedlang.compiler.patio.ast.PatioSerializer; import org.shedlang.compiler.patio.ast.instructions.PatioInstruction; @@ -51,6 +52,12 @@ class PatioTesting { return builder.toString(); } + static String serializeCompilationUnit(PatioCompilationUnit compilationUnit) { + var builder = new StringBuilder(); + PatioSerializer.serializeCompilationUnit(compilationUnit, builder); + return builder.toString(); + } + static String serializeCompilationUnitElement(PatioCompilationUnitElement element) { var builder = new StringBuilder(); PatioSerializer.serializeCompilationUnitElement(element, builder); diff --git a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java index c0de6abc..53497bea 100644 --- a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java +++ b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java @@ -1,7 +1,6 @@ package org.shedlang.compiler.patio.instructions; -import org.shedlang.compiler.patio.ast.PatioLocal; -import org.shedlang.compiler.patio.ast.PatioLocalRef; +import org.shedlang.compiler.patio.ast.*; import org.shedlang.compiler.patio.ast.instructions.*; import org.shedlang.compiler.patio.ast.types.PatioDataLayout; import org.shedlang.compiler.patio.ast.types.PatioType; @@ -31,6 +30,12 @@ public class Patio { ); } + public static PatioCompilationUnit compilationUnit( + List elements + ) { + return new PatioCompilationUnit(elements, Sources.NULL); + } + public static PatioInstruction dataPtrToInt(String target, String value) { return new PatioDataPtrToInt( new PatioLocalRef(target), -- cgit v1.2.3