diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-20 16:39:04 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-20 16:39:04 +0100 |
| commit | ef3b54474640a245d7e2f92ee56604246312ef29 (patch) | |
| tree | 91139e55a88879360f781f9963be18d23a880efb /src/test/java | |
| parent | f522f1d19f71a8554bc1b7ef660c421f180cfbb7 (diff) | |
Test serialization of Patio compilation units
Diffstat (limited to 'src/test/java')
3 files changed, 42 insertions, 2 deletions
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<PatioCompilationUnitElement> elements + ) { + return new PatioCompilationUnit(elements, Sources.NULL); + } + public static PatioInstruction dataPtrToInt(String target, String value) { return new PatioDataPtrToInt( new PatioLocalRef(target), |
