From 6b0e8c55ad423aef60720ee4b3bb455de74f25f3 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 2 Dec 2023 23:48:28 +0000 Subject: Parse break statements --- .../shedlang/compiler/parser/ParserBreakTests.java | 31 ++++++++++++++++++++++ .../compiler/parser/ParserResumeTests.java | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/shedlang/compiler/parser/ParserBreakTests.java (limited to 'src/test/java/org/shedlang/compiler/parser') diff --git a/src/test/java/org/shedlang/compiler/parser/ParserBreakTests.java b/src/test/java/org/shedlang/compiler/parser/ParserBreakTests.java new file mode 100644 index 00000000..53031e21 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/parser/ParserBreakTests.java @@ -0,0 +1,31 @@ +package org.shedlang.compiler.parser; + +import org.junit.jupiter.api.Test; + +import static org.shedlang.compiler.ast.untyped.UntypedNodeMatchers.*; +import static org.shedlang.compiler.parser.ParserTesting.parseString; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.isOptionalEmpty; +import static org.zwobble.precisely.Matchers.isOptionalOf; + +public class ParserBreakTests { + @Test + public void canParseBreakWithExpression() { + var source = "break x;"; + + var node = parseString(source, Parser::parseFunctionStatement); + + assertThat(node, isUntypedBreakNode(isOptionalOf( + isUntypedReferenceNode("x")) + )); + } + + @Test + public void canParseBreakWithoutExpression() { + var source = "break;"; + + var node = parseString(source, Parser::parseFunctionStatement); + + assertThat(node, isUntypedBreakNode(isOptionalEmpty())); + } +} diff --git a/src/test/java/org/shedlang/compiler/parser/ParserResumeTests.java b/src/test/java/org/shedlang/compiler/parser/ParserResumeTests.java index 8e134656..876cf5a7 100644 --- a/src/test/java/org/shedlang/compiler/parser/ParserResumeTests.java +++ b/src/test/java/org/shedlang/compiler/parser/ParserResumeTests.java @@ -8,7 +8,7 @@ import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.isOptionalEmpty; import static org.zwobble.precisely.Matchers.isOptionalOf; -public class ParserFunctionResumeTests { +public class ParserResumeTests { @Test public void canParseResumeWithExpression() { var source = "resume x;"; -- cgit v1.2.3