summaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-04-23 11:24:44 +0100
committerMichael Williamson <mike@zwobble.org>2026-04-23 11:24:44 +0100
commit9097b3ac138a60f6e7c708d2b452f95eb75601cb (patch)
treede0920ba9b0e50dd7450b4611c9d92c55a80d542 /src/test/java/org
parent45f5de758c0b1b2fc1ab019750a5db176a5423bf (diff)
Parse namespace body
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserNamespaceTests.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserNamespaceTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserNamespaceTests.java
index e5796e4..22cddca 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserNamespaceTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserNamespaceTests.java
@@ -2,6 +2,7 @@ package org.zwobble.hobgoblin.compiler.parser;
import org.junit.jupiter.api.Test;
import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode;
+import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedStructDefinitionNode;
import org.zwobble.hobgoblin.compiler.types.NamespaceName;
import static org.zwobble.hobgoblin.compiler.parser.ParserTesting.parseString;
@@ -24,4 +25,30 @@ public class ParserNamespaceTests {
has("body", x -> x.body(), isSequence())
));
}
+
+ @Test
+ public void bodyContainsStatements() {
+ var source = """
+ struct One {}
+ struct Two {}""";
+
+ var node = parseString(
+ source,
+ tokens -> Parser.parseNamespace(tokens, NamespaceName.of("Example", "Project"))
+ );
+
+ assertThat(node, instanceOf(
+ UntypedNamespaceNode.class,
+ has("body", UntypedNamespaceNode::body, isSequence(
+ instanceOf(
+ UntypedStructDefinitionNode.class,
+ has("name", UntypedStructDefinitionNode::name, equalTo("One"))
+ ),
+ instanceOf(
+ UntypedStructDefinitionNode.class,
+ has("name", UntypedStructDefinitionNode::name, equalTo("Two"))
+ )
+ ))
+ ));
+ }
}