forked from jasder/antlr
Move test helper methods out of exposed UnbufferedTokenStream API
This commit is contained in:
parent
568d45e8fe
commit
1c65bcd02f
|
@ -3,7 +3,6 @@ package org.antlr.v4.runtime;
|
|||
import org.antlr.v4.runtime.misc.Interval;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class UnbufferedTokenStream<T extends Token> implements TokenStream {
|
||||
protected TokenSource tokenSource;
|
||||
|
@ -233,22 +232,6 @@ public class UnbufferedTokenStream<T extends Token> implements TokenStream {
|
|||
return buf.toString();
|
||||
}
|
||||
|
||||
/** For testing. What's in moving window into token stream from
|
||||
* current index, LT(1) or tokens[p], to end of buffer?
|
||||
*/
|
||||
public List<T> getRemainingBuffer() {
|
||||
if ( n==0 ) return null;
|
||||
return (List<T>)Arrays.asList(Arrays.copyOfRange(tokens, p, n));
|
||||
}
|
||||
|
||||
/** For testing. What's in moving window buffer into data stream.
|
||||
* From 0..p-1 have been consume.
|
||||
*/
|
||||
public List<T> getBuffer() {
|
||||
if ( n==0 ) return null;
|
||||
return (List<T>)Arrays.asList(Arrays.copyOfRange(tokens, 0, n));
|
||||
}
|
||||
|
||||
public int getBufferStartIndex() {
|
||||
return currentTokenIndex - p;
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package org.antlr.v4.test;
|
|||
import org.antlr.v4.runtime.ANTLRInputStream;
|
||||
import org.antlr.v4.runtime.CharStream;
|
||||
import org.antlr.v4.runtime.Token;
|
||||
import org.antlr.v4.runtime.TokenSource;
|
||||
import org.antlr.v4.runtime.TokenStream;
|
||||
import org.antlr.v4.runtime.UnbufferedTokenStream;
|
||||
import org.antlr.v4.tool.LexerGrammar;
|
||||
|
@ -10,6 +11,9 @@ import org.antlr.v4.tool.interp.LexerInterpreter;
|
|||
import org.junit.Test;
|
||||
|
||||
import java.io.StringReader;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class TestUnbufferedTokenStream extends BaseTest {
|
||||
@Test public void testLookahead() throws Exception {
|
||||
|
@ -56,7 +60,7 @@ public class TestUnbufferedTokenStream extends BaseTest {
|
|||
);
|
||||
LexerInterpreter lexEngine = new LexerInterpreter(g);
|
||||
lexEngine.setInput(input);
|
||||
UnbufferedTokenStream<Token> tokens = new UnbufferedTokenStream<Token>(lexEngine);
|
||||
TestingUnbufferedTokenStream<Token> tokens = new TestingUnbufferedTokenStream<Token>(lexEngine);
|
||||
|
||||
assertEquals("[[@0,0:0='x',<1>,1:0]]", tokens.getBuffer().toString());
|
||||
assertEquals("x", tokens.LT(1).getText());
|
||||
|
@ -94,7 +98,7 @@ public class TestUnbufferedTokenStream extends BaseTest {
|
|||
);
|
||||
LexerInterpreter lexEngine = new LexerInterpreter(g);
|
||||
lexEngine.setInput(input);
|
||||
UnbufferedTokenStream<Token> tokens = new UnbufferedTokenStream<Token>(lexEngine);
|
||||
TestingUnbufferedTokenStream<Token> tokens = new TestingUnbufferedTokenStream<Token>(lexEngine);
|
||||
|
||||
int m = tokens.mark();
|
||||
assertEquals("[[@0,0:0='x',<1>,1:0]]", tokens.getBuffer().toString());
|
||||
|
@ -130,7 +134,7 @@ public class TestUnbufferedTokenStream extends BaseTest {
|
|||
);
|
||||
LexerInterpreter lexEngine = new LexerInterpreter(g);
|
||||
lexEngine.setInput(input);
|
||||
UnbufferedTokenStream<Token> tokens = new UnbufferedTokenStream<Token>(lexEngine);
|
||||
TestingUnbufferedTokenStream<Token> tokens = new TestingUnbufferedTokenStream<Token>(lexEngine);
|
||||
|
||||
int m = tokens.mark();
|
||||
assertEquals("[[@0,0:0='x',<1>,1:0]]", tokens.getBuffer().toString());
|
||||
|
@ -158,4 +162,34 @@ public class TestUnbufferedTokenStream extends BaseTest {
|
|||
tokens.getBuffer().toString());
|
||||
tokens.release(m);
|
||||
}
|
||||
|
||||
protected static class TestingUnbufferedTokenStream<T extends Token> extends UnbufferedTokenStream<T> {
|
||||
|
||||
public TestingUnbufferedTokenStream(TokenSource tokenSource) {
|
||||
super(tokenSource);
|
||||
}
|
||||
|
||||
/** For testing. What's in moving window into token stream from
|
||||
* current index, LT(1) or tokens[p], to end of buffer?
|
||||
*/
|
||||
protected List<? extends Token> getRemainingBuffer() {
|
||||
if ( n==0 ) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return Arrays.asList(tokens).subList(p, n);
|
||||
}
|
||||
|
||||
/** For testing. What's in moving window buffer into data stream.
|
||||
* From 0..p-1 have been consume.
|
||||
*/
|
||||
protected List<? extends Token> getBuffer() {
|
||||
if ( n==0 ) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
return Arrays.asList(tokens).subList(0, n);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue