public void testBufferWrap() { int N = 10; // make tree with types: 1 2 ... INITIAL_LOOKAHEAD_BUFFER_SIZE+N ITree t = new CommonTree((IToken)null); for (int i = 0; i < UnBufferedTreeNodeStream.INITIAL_LOOKAHEAD_BUFFER_SIZE + N; i++) { t.AddChild(new CommonTree(new CommonToken(i + 1))); } // move head to index N ITreeNodeStream stream = CreateUnBufferedTreeNodeStream(t); for (int i = 1; i <= N; i++) { // consume N ITree node = (ITree)stream.LT(1); Assert.AreEqual(i, node.Type); stream.Consume(); } // now use LT to lookahead past end of buffer int remaining = UnBufferedTreeNodeStream.INITIAL_LOOKAHEAD_BUFFER_SIZE - N; int wrapBy = 4; // wrap around by 4 nodes Assert.IsTrue(wrapBy < N, "bad test code; wrapBy must be less than N"); for (int i = 1; i <= remaining + wrapBy; i++) { // wrap past end of buffer ITree node = (ITree)stream.LT(i); // look ahead to ith token Assert.AreEqual(N + i, node.Type); } }
public void Consume() { object node = input.LT(1); input.Consume(); dbg.ConsumeNode(node); }