aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-20 16:39:04 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-20 16:39:04 +0100
commitef3b54474640a245d7e2f92ee56604246312ef29 (patch)
tree91139e55a88879360f781f9963be18d23a880efb /src/test/java
parentf522f1d19f71a8554bc1b7ef660c421f180cfbb7 (diff)
Test serialization of Patio compilation units
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java28
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioTesting.java7
-rw-r--r--src/test/java/org/shedlang/compiler/patio/instructions/Patio.java9
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),