aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java29
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java7
2 files changed, 36 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java b/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java
index 3ce690b2..72056a3e 100644
--- a/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java
+++ b/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java
@@ -76,6 +76,35 @@ public class InstructionSerializerTests {
}
@Test
+ public void canSerializeIf() {
+ var instruction = Instructions.if_(
+ List.of(
+ Instructions.pushUnit()
+ ),
+ List.of(
+ Instructions.localLoad("x"),
+ Instructions.discard(),
+ Instructions.pushBool(true)
+ )
+ );
+
+ var string = serialize(instruction);
+
+ assertThat(string, equalTo("""
+ (
+ if
+ (
+ (push-unit)
+ )
+ (
+ (local-load "x")
+ (discard)
+ (push-bool true)
+ )
+ )"""));
+ }
+
+ @Test
public void canSerializeIntAdd() {
var instruction = Instructions.intAdd();
diff --git a/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java b/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java
index df8b193b..131207b8 100644
--- a/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java
+++ b/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java
@@ -22,6 +22,13 @@ public class Instructions {
return new FieldLoadInstruction(namespaceName, fieldName, Sources.NULL);
}
+ public static Instruction if_(
+ List<Instruction> trueBody,
+ List<Instruction> falseBody
+ ) {
+ return new IfInstruction(trueBody, falseBody, Sources.NULL);
+ }
+
public static Instruction intAdd() {
return new IntAddInstruction(Sources.NULL);
}