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/tokeniser/TokenIteratorTests.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/tokeniser/TokenIteratorTests.java b/src/test/java/org/shedlang/compiler/tokeniser/TokenIteratorTests.java
index 315551ee..52d036a8 100644
--- a/src/test/java/org/shedlang/compiler/tokeniser/TokenIteratorTests.java
+++ b/src/test/java/org/shedlang/compiler/tokeniser/TokenIteratorTests.java
@@ -223,6 +223,26 @@ public class TokenIteratorTests {
assertThat(tokens.peek(), equalTo(token(1, TokenType.IDENTIFIER, "x")));
}
+ @Test
+ public void canPeekMultipleTokensAhead() {
+ var tokens = new TokenIterator<>(
+ List.of(
+ token(0, TokenType.SYMBOL, "!"),
+ token(1, TokenType.IDENTIFIER, "x"),
+ token(2, TokenType.SYMBOL, "!")
+ ),
+ token(3, TokenType.END, "")
+ );
+
+ assertThat(tokens.peek(0), equalTo(token(0, TokenType.SYMBOL, "!")));
+ assertThat(tokens.peek(1), equalTo(token(1, TokenType.IDENTIFIER, "x")));
+ assertThat(tokens.peek(2), equalTo(token(2, TokenType.SYMBOL, "!")));
+ tokens.skip(TokenType.SYMBOL);
+ assertThat(tokens.peek(0), equalTo(token(1, TokenType.IDENTIFIER, "x")));
+ assertThat(tokens.peek(1), equalTo(token(2, TokenType.SYMBOL, "!")));
+ assertThat(tokens.peek(2), equalTo(token(3, TokenType.END, "")));
+ }
+
private Token<TokenType> token(int characterIndex, TokenType tokenType, String value) {
return new Token<>(Sources.NULL, tokenType, value);
}