aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-09-17 16:53:25 +0100
committerMichael Williamson <mike@zwobble.org>2023-09-17 16:53:25 +0100
commitf7ea0788b8958553277859a08e581072e1a4050a (patch)
tree9852794ce7fcfef638adc2ff84d29061ae900d21 /src/test/java
parente0b17d2130c52cbee9b9e3d987bfb161a0014e9c (diff)
Support peeking ahead multiple tokens
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);
}