summaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/zwobble/hobgoblin/parser/ParserNamespaceTests.java27
-rw-r--r--src/test/java/org/zwobble/hobgoblin/parser/ParserTesting.java22
-rw-r--r--src/test/java/org/zwobble/hobgoblin/parser/TokenizerTests.java14
3 files changed, 56 insertions, 7 deletions
diff --git a/src/test/java/org/zwobble/hobgoblin/parser/ParserNamespaceTests.java b/src/test/java/org/zwobble/hobgoblin/parser/ParserNamespaceTests.java
new file mode 100644
index 0000000..89527e9
--- /dev/null
+++ b/src/test/java/org/zwobble/hobgoblin/parser/ParserNamespaceTests.java
@@ -0,0 +1,27 @@
+package org.zwobble.hobgoblin.parser;
+
+import org.junit.jupiter.api.Test;
+import org.zwobble.hobgoblin.ast.untyped.UntypedNamespaceNode;
+import org.zwobble.hobgoblin.types.NamespaceName;
+
+import static org.zwobble.hobgoblin.parser.ParserTesting.parseString;
+import static org.zwobble.precisely.AssertThat.assertThat;
+import static org.zwobble.precisely.Matchers.*;
+
+public class ParserNamespaceTests {
+ @Test
+ public void emptyNamespaceHasEmptyBody() {
+ var source = "";
+
+ var node = parseString(
+ source,
+ tokens -> Parser.parseNamespace(tokens, NamespaceName.of("Example", "Project"))
+ );
+
+ assertThat(node, instanceOf(
+ UntypedNamespaceNode.class,
+ has("namespaceName", x -> x.namespaceName(), equalTo(NamespaceName.of("Example", "Project"))),
+ has("body", x -> x.body(), isSequence())
+ ));
+ }
+}
diff --git a/src/test/java/org/zwobble/hobgoblin/parser/ParserTesting.java b/src/test/java/org/zwobble/hobgoblin/parser/ParserTesting.java
new file mode 100644
index 0000000..14cfb62
--- /dev/null
+++ b/src/test/java/org/zwobble/hobgoblin/parser/ParserTesting.java
@@ -0,0 +1,22 @@
+package org.zwobble.hobgoblin.parser;
+
+import org.zwobble.sourcetext.SourceText;
+
+import java.util.function.Function;
+
+import static org.zwobble.precisely.AssertThat.assertThat;
+import static org.zwobble.precisely.Matchers.equalTo;
+
+public class ParserTesting {
+ public static <T> T parseString(
+ String sourceContents,
+ Function<TokenIterator, T> parseTokens
+ ) {
+ var sourceText = SourceText.fromString("<string>", sourceContents);
+ var tokens = Tokenizer.tokenize(sourceText);
+ var tokenIterator = tokens.iterator();
+ var result = parseTokens.apply(tokenIterator);
+ assertThat(tokenIterator.peek().tokenType(), equalTo(TokenType.END));
+ return result;
+ }
+}
diff --git a/src/test/java/org/zwobble/hobgoblin/parser/TokenizerTests.java b/src/test/java/org/zwobble/hobgoblin/parser/TokenizerTests.java
index 05848a3..6f77470 100644
--- a/src/test/java/org/zwobble/hobgoblin/parser/TokenizerTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/parser/TokenizerTests.java
@@ -15,7 +15,7 @@ public class TokenizerTests {
var tokens = Tokenizer.tokenize(sourceText);
- assertThat(tokens, isSequence());
+ assertThat(tokens.tokens(), isSequence());
}
@Test
@@ -24,7 +24,7 @@ public class TokenizerTests {
var tokens = Tokenizer.tokenize(sourceText);
- assertThat(tokens, isSequence(
+ assertThat(tokens.tokens(), isSequence(
equalTo(new Token(TokenType.KEYWORD_STRUCT, sourceRange(sourceText, 0, 6)))
));
}
@@ -35,7 +35,7 @@ public class TokenizerTests {
var tokens = Tokenizer.tokenize(sourceText);
- assertThat(tokens, isSequence(
+ assertThat(tokens.tokens(), isSequence(
equalTo(new Token(TokenType.IDENTIFIER, sourceRange(sourceText, 0, 4)))
));
}
@@ -46,7 +46,7 @@ public class TokenizerTests {
var tokens = Tokenizer.tokenize(sourceText);
- assertThat(tokens, isSequence(
+ assertThat(tokens.tokens(), isSequence(
equalTo(new Token(TokenType.SYMBOL_BRACE_OPEN, sourceRange(sourceText, 0, 1)))
));
}
@@ -57,7 +57,7 @@ public class TokenizerTests {
var tokens = Tokenizer.tokenize(sourceText);
- assertThat(tokens, isSequence(
+ assertThat(tokens.tokens(), isSequence(
equalTo(new Token(TokenType.SYMBOL_BRACE_CLOSE, sourceRange(sourceText, 0, 1)))
));
}
@@ -68,7 +68,7 @@ public class TokenizerTests {
var tokens = Tokenizer.tokenize(sourceText);
- assertThat(tokens, isSequence(
+ assertThat(tokens.tokens(), isSequence(
equalTo(new Token(TokenType.IDENTIFIER, sourceRange(sourceText, 2, 6)))
));
}
@@ -79,7 +79,7 @@ public class TokenizerTests {
var tokens = Tokenizer.tokenize(sourceText);
- assertThat(tokens, isSequence(
+ assertThat(tokens.tokens(), isSequence(
equalTo(new Token(TokenType.IDENTIFIER, sourceRange(sourceText, 0, 3))),
equalTo(new Token(TokenType.IDENTIFIER, sourceRange(sourceText, 4, 7))),
equalTo(new Token(TokenType.IDENTIFIER, sourceRange(sourceText, 10, 15)))