@Test
public void testElementList() throws Exception { testElementList$(); }
public void testElementList$() throws Exception {
LexElementSource lexSource = LexElementProducer.createFromLexer(new TestsInstrumentedLexer("abcd efgh"));
assertTrue(lexSource.lexElementList.size() == 5);
assertEquals(lexSource.lookAheadElement(0).source, "ab");
assertEquals(lexSource.lookAheadElement(1).source, "cd");
assertEquals(lexSource.lookAheadElement(3).source, "gh");
assertEquals(lexSource.lookAheadElement(4).type, DeeTokens.EOF);
lexSource.consumeInput();
assertEquals(lexSource.lastLexElement().source, "ab");
assertEquals(lexSource.lookAheadElement(0).source, "cd");
assertEquals(lexSource.lookAheadElement(1).source, "ef");
assertEquals(lexSource.lookAheadElement(1).getFullRangeStartPos(), 4);
assertEquals(lexSource.lookAheadElement(1).getStartPos(), 6);
assertEquals(lexSource.lookAheadElement(2).source, "gh");
assertEquals(lexSource.lookAheadElement(3).type, DeeTokens.EOF);
lexSource.consumeInput();
assertEquals(lexSource.lastLexElement().source, "cd");
assertEquals(lexSource.getSourcePosition(), 4);
assertEquals(lexSource.lookAheadElement(0).source, "ef");
assertEquals(lexSource.lookAheadElement(1).source, "gh");
assertEquals(lexSource.lookAheadElement(2).type, DeeTokens.EOF);
assertEquals(lexSource.lookAheadElement(3).type, DeeTokens.EOF); // Test index beyond first EOF
lexSource.consumeInput();
lexSource.consumeInput();
assertEquals(lexSource.lastLexElement().source, "gh");
assertEquals(lexSource.lookAheadElement(0).type, DeeTokens.EOF);
assertEquals(lexSource.lookAheadElement(1).type, DeeTokens.EOF);
}