コード例 #1
0
        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);
        }
コード例 #2
0
		public void TestSizeOnEmptyANTLRInputStream()
		{
			MemoryStream grammarStream = new MemoryStream(new byte[] { });

			ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);
			Assert.AreEqual(0, inputStream.Size());
		}
コード例 #3
0
		public void TestANTLRInputStreamConstructorDoesNotHang()
		{
			Encoding encoding = Encoding.Unicode;
			byte[] grammarStrBuffer = encoding.GetBytes(grammarStr);
			MemoryStream grammarStream = new MemoryStream(grammarStrBuffer);

			ANTLRInputStream input = new ANTLRInputStream(grammarStream, encoding);
		}
コード例 #4
0
        public void TestSizeOnEmptyANTLRInputStream()
        {
            MemoryStream grammarStream = new MemoryStream(new byte[] { });

            ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);

            Assert.AreEqual(0, inputStream.Count);
        }
コード例 #5
0
        public void TestANTLRInputStreamConstructorDoesNotHang()
        {
            Encoding encoding = Encoding.Unicode;

            byte[]       grammarStrBuffer = encoding.GetBytes(grammarStr);
            MemoryStream grammarStream    = new MemoryStream(grammarStrBuffer);

            ANTLRInputStream input = new ANTLRInputStream(grammarStream, encoding);
        }
コード例 #6
0
        public void TestSizeOnANTLRInputStream()
        {
            Encoding encoding = Encoding.Unicode;

            byte[]       grammarStrBuffer = encoding.GetBytes(grammarStr);
            MemoryStream grammarStream    = new MemoryStream(grammarStrBuffer);

            ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);

            Assert.AreEqual(grammarStr.Length, inputStream.Count);
        }
コード例 #7
0
        public void TestConsumeAllCharactersInAnANTLRInputStream()
        {
            Encoding encoding = Encoding.Unicode;

            byte[]       grammarStrBuffer = encoding.GetBytes(grammarStr);
            MemoryStream grammarStream    = new MemoryStream(grammarStrBuffer);

            ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);

            while (inputStream.Index < inputStream.Count)
            {
                Console.Out.Write((char)inputStream.LA(1));
                inputStream.Consume();
            }
            Assert.AreEqual(inputStream.Index, inputStream.Count);
        }
コード例 #8
0
        public void TestSubstringOnANTLRInputStream()
        {
            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("Two", stream.Substring(5, 7));
            Assert.AreEqual("One", stream.Substring(0, 2));
            Assert.AreEqual("Three", stream.Substring(10, 14));

            stream.Consume();

            Assert.AreEqual("Two", stream.Substring(5, 7));
            Assert.AreEqual("One", stream.Substring(0, 2));
            Assert.AreEqual("Three", stream.Substring(10, 14));
        }
コード例 #9
0
        public void TestResetOnANTLRInputStream()
        {
            Encoding encoding = Encoding.Unicode;

            byte[]       buffer        = encoding.GetBytes("One\r\nTwo");
            MemoryStream grammarStream = new MemoryStream(buffer);

            ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, encoding);

            Assert.AreEqual(0, inputStream.Index);
            Assert.AreEqual(0, inputStream.CharPositionInLine);
            Assert.AreEqual(1, inputStream.Line);

            inputStream.Consume();                      // O
            inputStream.Consume();                      // n

            Assert.AreEqual('e', inputStream.LA(1));
            Assert.AreEqual(2, inputStream.Index);

            inputStream.Reset();
            Assert.AreEqual('O', inputStream.LA(1));
            Assert.AreEqual(0, inputStream.Index);
            Assert.AreEqual(0, inputStream.CharPositionInLine);
            Assert.AreEqual(1, inputStream.Line);
            inputStream.Consume();                      // O

            Assert.AreEqual('n', inputStream.LA(1));
            Assert.AreEqual(1, inputStream.Index);
            Assert.AreEqual(1, inputStream.CharPositionInLine);
            Assert.AreEqual(1, inputStream.Line);
            inputStream.Consume();                      // n

            Assert.AreEqual('e', inputStream.LA(1));
            Assert.AreEqual(2, inputStream.Index);
            Assert.AreEqual(2, inputStream.CharPositionInLine);
            Assert.AreEqual(1, inputStream.Line);
            inputStream.Consume();                      // e
        }
コード例 #10
0
        public void TestConsumeAndIndexOnANTLRInputStream()
        {
            Encoding encoding = Encoding.Unicode;

            byte[]       grammarStrBuffer = encoding.GetBytes(grammarStr);
            MemoryStream grammarStream    = new MemoryStream(grammarStrBuffer);

            ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);

            Assert.AreEqual(0, inputStream.Index);

            inputStream.Consume();
            Assert.AreEqual(1, inputStream.Index);

            inputStream.Consume();
            Assert.AreEqual(2, inputStream.Index);

            while (inputStream.Index < inputStream.Count)
            {
                inputStream.Consume();
            }
            Assert.AreEqual(inputStream.Index, inputStream.Count);
        }
コード例 #11
0
		public void TestConsumeAllCharactersInAnANTLRInputStream()
		{
			Encoding encoding = Encoding.Unicode;
			byte[] grammarStrBuffer = encoding.GetBytes(grammarStr);
			MemoryStream grammarStream = new MemoryStream(grammarStrBuffer);

			ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);
			while (inputStream.Index() < inputStream.Size())
			{
				Console.Out.Write((char)inputStream.LA(1));
				inputStream.Consume();
			}
			Assert.AreEqual(inputStream.Index(), inputStream.Size());
		}
コード例 #12
0
		public void TestSubstringOnANTLRInputStream()
		{
			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("Two", stream.Substring(5, 7));
			Assert.AreEqual("One", stream.Substring(0, 2));
			Assert.AreEqual("Three", stream.Substring(10, 14));

			stream.Consume();

			Assert.AreEqual("Two", stream.Substring(5, 7));
			Assert.AreEqual("One", stream.Substring(0, 2));
			Assert.AreEqual("Three", stream.Substring(10, 14));
		}
コード例 #13
0
		public void TestResetOnANTLRInputStream()
		{
			Encoding encoding = Encoding.Unicode;
			byte[] buffer = encoding.GetBytes("One\r\nTwo");
			MemoryStream grammarStream = new MemoryStream(buffer);

			ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, encoding);
			Assert.AreEqual(0, inputStream.Index());
			Assert.AreEqual(0, inputStream.CharPositionInLine);
			Assert.AreEqual(1, inputStream.Line);

			inputStream.Consume();		// O
			inputStream.Consume();		// n

			Assert.AreEqual('e', inputStream.LA(1));
			Assert.AreEqual(2, inputStream.Index());

			inputStream.Reset();
			Assert.AreEqual('O', inputStream.LA(1));
			Assert.AreEqual(0, inputStream.Index());
			Assert.AreEqual(0, inputStream.CharPositionInLine);
			Assert.AreEqual(1, inputStream.Line);
			inputStream.Consume();		// O

			Assert.AreEqual('n', inputStream.LA(1));
			Assert.AreEqual(1, inputStream.Index());
			Assert.AreEqual(1, inputStream.CharPositionInLine);
			Assert.AreEqual(1, inputStream.Line);
			inputStream.Consume();		// n

			Assert.AreEqual('e', inputStream.LA(1));
			Assert.AreEqual(2, inputStream.Index());
			Assert.AreEqual(2, inputStream.CharPositionInLine);
			Assert.AreEqual(1, inputStream.Line);
			inputStream.Consume();		// e
		}
コード例 #14
0
		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);
		}
コード例 #15
0
		public void TestSizeOnANTLRInputStream()
		{
			Encoding encoding = Encoding.Unicode;
			byte[] grammarStrBuffer = encoding.GetBytes(grammarStr);
			MemoryStream grammarStream = new MemoryStream(grammarStrBuffer);

			ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);
			Assert.AreEqual(grammarStr.Length, inputStream.Size());
		}
コード例 #16
0
		public void TestConsumeAndIndexOnANTLRInputStream()
		{
			Encoding encoding = Encoding.Unicode;
			byte[] grammarStrBuffer = encoding.GetBytes(grammarStr);
			MemoryStream grammarStream = new MemoryStream(grammarStrBuffer);

			ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);
			Assert.AreEqual(0, inputStream.Index());

			inputStream.Consume();
			Assert.AreEqual(1, inputStream.Index());

			inputStream.Consume();
			Assert.AreEqual(2, inputStream.Index());

			while (inputStream.Index() < inputStream.Size())
			{
				inputStream.Consume();
			}
			Assert.AreEqual(inputStream.Index(), inputStream.Size());
		}
コード例 #17
0
		public void TestConsumeOnANTLRInputStream()
		{
			Encoding encoding = Encoding.Unicode;
			byte[] buffer = encoding.GetBytes("One\r\nTwo");
			MemoryStream grammarStream = new MemoryStream(buffer);

			ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);
			Assert.AreEqual(0, inputStream.Index());
			Assert.AreEqual(0, inputStream.CharPositionInLine);
			Assert.AreEqual(1, inputStream.Line);

			inputStream.Consume();		// O
			Assert.AreEqual(1, inputStream.Index());
			Assert.AreEqual(1, inputStream.CharPositionInLine);
			Assert.AreEqual(1, inputStream.Line);

			inputStream.Consume();		// n
			Assert.AreEqual(2, inputStream.Index());
			Assert.AreEqual(2, inputStream.CharPositionInLine);
			Assert.AreEqual(1, inputStream.Line);

			inputStream.Consume();		// e
			Assert.AreEqual(3, inputStream.Index());
			Assert.AreEqual(3, inputStream.CharPositionInLine);
			Assert.AreEqual(1, inputStream.Line);

			inputStream.Consume();		// \r
			Assert.AreEqual(4, inputStream.Index());
			Assert.AreEqual(4, inputStream.CharPositionInLine);
			Assert.AreEqual(1, inputStream.Line);

			inputStream.Consume();		// \n
			Assert.AreEqual(5, inputStream.Index());
			Assert.AreEqual(0, inputStream.CharPositionInLine);
			Assert.AreEqual(2, inputStream.Line);

			inputStream.Consume();		// T
			Assert.AreEqual(6, inputStream.Index());
			Assert.AreEqual(1, inputStream.CharPositionInLine);
			Assert.AreEqual(2, inputStream.Line);

			inputStream.Consume();		// w
			Assert.AreEqual(7, inputStream.Index());
			Assert.AreEqual(2, inputStream.CharPositionInLine);
			Assert.AreEqual(2, inputStream.Line);

			inputStream.Consume();		// o
			Assert.AreEqual(8, inputStream.Index());
			Assert.AreEqual(3, inputStream.CharPositionInLine);
			Assert.AreEqual(2, inputStream.Line);

			inputStream.Consume();		// EOF
			Assert.AreEqual(8, inputStream.Index());
			Assert.AreEqual(3, inputStream.CharPositionInLine);
			Assert.AreEqual(2, inputStream.Line);

			inputStream.Consume();		// EOF
			Assert.AreEqual(8, inputStream.Index());
			Assert.AreEqual(3, inputStream.CharPositionInLine);
			Assert.AreEqual(2, inputStream.Line);
		}
コード例 #18
0
        public void TestConsumeOnANTLRInputStream()
        {
            Encoding encoding = Encoding.Unicode;

            byte[]       buffer        = encoding.GetBytes("One\r\nTwo");
            MemoryStream grammarStream = new MemoryStream(buffer);

            ANTLRInputStream inputStream = new ANTLRInputStream(grammarStream, Encoding.Unicode);

            Assert.AreEqual(0, inputStream.Index);
            Assert.AreEqual(0, inputStream.CharPositionInLine);
            Assert.AreEqual(1, inputStream.Line);

            inputStream.Consume();                      // O
            Assert.AreEqual(1, inputStream.Index);
            Assert.AreEqual(1, inputStream.CharPositionInLine);
            Assert.AreEqual(1, inputStream.Line);

            inputStream.Consume();                      // n
            Assert.AreEqual(2, inputStream.Index);
            Assert.AreEqual(2, inputStream.CharPositionInLine);
            Assert.AreEqual(1, inputStream.Line);

            inputStream.Consume();                      // e
            Assert.AreEqual(3, inputStream.Index);
            Assert.AreEqual(3, inputStream.CharPositionInLine);
            Assert.AreEqual(1, inputStream.Line);

            inputStream.Consume();                      // \r
            Assert.AreEqual(4, inputStream.Index);
            Assert.AreEqual(4, inputStream.CharPositionInLine);
            Assert.AreEqual(1, inputStream.Line);

            inputStream.Consume();                      // \n
            Assert.AreEqual(5, inputStream.Index);
            Assert.AreEqual(0, inputStream.CharPositionInLine);
            Assert.AreEqual(2, inputStream.Line);

            inputStream.Consume();                      // T
            Assert.AreEqual(6, inputStream.Index);
            Assert.AreEqual(1, inputStream.CharPositionInLine);
            Assert.AreEqual(2, inputStream.Line);

            inputStream.Consume();                      // w
            Assert.AreEqual(7, inputStream.Index);
            Assert.AreEqual(2, inputStream.CharPositionInLine);
            Assert.AreEqual(2, inputStream.Line);

            inputStream.Consume();                      // o
            Assert.AreEqual(8, inputStream.Index);
            Assert.AreEqual(3, inputStream.CharPositionInLine);
            Assert.AreEqual(2, inputStream.Line);

            inputStream.Consume();                      // EOF
            Assert.AreEqual(8, inputStream.Index);
            Assert.AreEqual(3, inputStream.CharPositionInLine);
            Assert.AreEqual(2, inputStream.Line);

            inputStream.Consume();                      // EOF
            Assert.AreEqual(8, inputStream.Index);
            Assert.AreEqual(3, inputStream.CharPositionInLine);
            Assert.AreEqual(2, inputStream.Line);
        }