diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-10 10:07:16 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-10 10:07:16 +0100 |
| commit | 4a550a5ae083518815ec70c73346705f3778df93 (patch) | |
| tree | 268af6980edd39bde1fbc70559f377e64fb3bba2 /src/test/java | |
| parent | 9d0e6555d1058cd589a1935e33e78211d1514103 (diff) | |
Compile bool literal to stack instruction
Diffstat (limited to 'src/test/java')
3 files changed, 50 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/ast/typed/Typed.java b/src/test/java/org/shedlang/compiler/ast/typed/Typed.java new file mode 100644 index 00000000..742bc658 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/ast/typed/Typed.java @@ -0,0 +1,12 @@ +package org.shedlang.compiler.ast.typed; + +import org.shedlang.compiler.sources.Sources; + +public class Typed { + private Typed() { + } + + public static TypedBoolLiteralNode boolLiteral(boolean value) { + return new TypedBoolLiteralNode(value, Sources.NULL); + } +} diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerBoolLiteralTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerBoolLiteralTests.java new file mode 100644 index 00000000..19f3a6a6 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerBoolLiteralTests.java @@ -0,0 +1,21 @@ +package org.shedlang.compiler.stackir; + +import org.junit.jupiter.api.Test; +import org.shedlang.compiler.ast.typed.Typed; + +import static org.shedlang.compiler.stackir.instructions.InstructionMatchers.isPushBoolInstruction; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.isSequence; + +public class StackCompilerBoolLiteralTests { + @Test + public void boolLiteralIsCompiledToPushBoolInstruction() { + var node = Typed.boolLiteral(true); + + var instructions = StackCompiler.compileExpression(node); + + assertThat(instructions, isSequence( + isPushBoolInstruction(true) + )); + } +} diff --git a/src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java b/src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java new file mode 100644 index 00000000..7b90c614 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/stackir/instructions/InstructionMatchers.java @@ -0,0 +1,17 @@ +package org.shedlang.compiler.stackir.instructions; + +import org.zwobble.precisely.Matcher; + +import static org.zwobble.precisely.Matchers.*; + +public class InstructionMatchers { + private InstructionMatchers() { + } + + public static Matcher<Instruction> isPushBoolInstruction(boolean value) { + return instanceOf( + PushBoolInstruction.class, + has("value", x -> x.value(), equalTo(value)) + ); + } +} |
