public void TestSeekOnANTLRInputStream() { Encoding encoding = Encoding.Unicode; byte[] buffer = encoding.GetBytes("One\r\nTwo\r\nThree"); MemoryStream grammarStream = new MemoryStream(buffer); ANTLRInputStream stream = new ANTLRInputStream(grammarStream, encoding); Assert.AreEqual('O', stream.LA(1)); Assert.AreEqual(0, stream.Index); Assert.AreEqual(0, stream.CharPositionInLine); Assert.AreEqual(1, stream.Line); stream.Seek(6); Assert.AreEqual('w', stream.LA(1)); Assert.AreEqual(6, stream.Index); Assert.AreEqual(1, stream.CharPositionInLine); Assert.AreEqual(2, stream.Line); stream.Seek(11); Assert.AreEqual('h', stream.LA(1)); Assert.AreEqual(11, stream.Index); Assert.AreEqual(1, stream.CharPositionInLine); Assert.AreEqual(3, stream.Line); // seeking backwards leaves state info (other than index in stream) unchanged stream.Seek(1); Assert.AreEqual('n', stream.LA(1)); Assert.AreEqual(1, stream.Index); Assert.AreEqual(1, stream.CharPositionInLine); Assert.AreEqual(3, stream.Line); }
public void TestSeekOnANTLRInputStream() { Encoding encoding = Encoding.Unicode; byte[] buffer = encoding.GetBytes("One\r\nTwo\r\nThree"); MemoryStream grammarStream = new MemoryStream(buffer); ANTLRInputStream stream = new ANTLRInputStream(grammarStream, encoding); Assert.AreEqual('O', stream.LA(1)); Assert.AreEqual(0, stream.Index()); Assert.AreEqual(0, stream.CharPositionInLine); Assert.AreEqual(1, stream.Line); stream.Seek(6); Assert.AreEqual('w', stream.LA(1)); Assert.AreEqual(6, stream.Index()); Assert.AreEqual(1, stream.CharPositionInLine); Assert.AreEqual(2, stream.Line); stream.Seek(11); Assert.AreEqual('h', stream.LA(1)); Assert.AreEqual(11, stream.Index()); Assert.AreEqual(1, stream.CharPositionInLine); Assert.AreEqual(3, stream.Line); // seeking backwards leaves state info (other than index in stream) unchanged stream.Seek(1); Assert.AreEqual('n', stream.LA(1)); Assert.AreEqual(1, stream.Index()); Assert.AreEqual(1, stream.CharPositionInLine); Assert.AreEqual(3, stream.Line); }