Пример #1
0
            public void BasicTests()
            {
                ParsingHelper helper = new ParsingHelper(ShortTest);

                // Initial state
                Assert.AreEqual('\0', ParsingHelper.NullChar);
                Assert.AreEqual(ShortTest, helper.Text);
                Assert.AreEqual(0, helper.Index);
                Assert.AreEqual(false, helper.EndOfText);
                Assert.AreEqual(ShortTest.Length, helper.Remaining);

                // Peek
                Assert.AreEqual('F', helper.Peek());
                Assert.AreEqual('o', helper.Peek(1));
                Assert.AreEqual('u', helper.Peek(2));
                Assert.AreEqual('r', helper.Peek(3));
                Assert.AreEqual(ParsingHelper.NullChar, helper.Peek(1000));
                Assert.AreEqual(ParsingHelper.NullChar, helper.Peek(-1000));
                Assert.AreEqual(0, helper.Index);

                // Get
                Assert.AreEqual('F', helper.Get());
                Assert.AreEqual('o', helper.Get());
                Assert.AreEqual('u', helper.Get());
                Assert.AreEqual('r', helper.Get());
                Assert.AreEqual(4, helper.Index);
                helper.Index = ShortTest.Length;
                Assert.AreEqual(ParsingHelper.NullChar, helper.Get());

                // Next
                helper.Reset();
                helper.Next();
                Assert.AreEqual(1, helper.Index);
                Assert.AreEqual('o', helper.Peek());
                helper.Next(2);
                Assert.AreEqual(3, helper.Index);
                Assert.AreEqual('r', helper.Peek());
                helper.Next(-2);
                Assert.AreEqual(1, helper.Index);
                Assert.AreEqual('o', helper.Peek());
                Assert.AreEqual(false, helper.EndOfText);
                Assert.AreEqual(ShortTest.Length - helper.Index, helper.Remaining);

                helper.Next(10000);
                Assert.AreEqual(helper.Text.Length, helper.Index);
                Assert.AreEqual(true, helper.EndOfText);
                Assert.AreEqual(0, helper.Remaining);
                helper.Next(-10000);
                Assert.AreEqual(0, helper.Index);
                Assert.AreEqual(false, helper.EndOfText);
                Assert.AreEqual(ShortTest.Length, helper.Remaining);

                helper.Index = 10000;
                Assert.AreEqual(ShortTest.Length, helper.Index);
                Assert.AreEqual(true, helper.EndOfText);
                Assert.AreEqual(0, helper.Remaining);
                helper.Index = -10000;
                Assert.AreEqual(0, helper.Index);
                Assert.AreEqual(false, helper.EndOfText);
                Assert.AreEqual(ShortTest.Length, helper.Remaining);

                helper.Index = 0;
                Assert.AreEqual(0, helper.Index);
                Assert.AreEqual(ShortTest.Length, helper.Remaining);
                Assert.AreEqual(false, helper.EndOfText);
                helper.Index = helper.Text.Length;
                Assert.AreEqual(helper.Text.Length, helper.Index);
                Assert.AreEqual(0, helper.Remaining);
                Assert.AreEqual(true, helper.EndOfText);
                helper.Index = 5;
                Assert.AreEqual(5, helper.Index);
                Assert.AreEqual(ShortTest.Length - 5, helper.Remaining);
                Assert.AreEqual(false, helper.EndOfText);

                helper.Reset();
                Assert.AreEqual(0, helper.Index);
                Assert.AreEqual(ShortTest, helper.Text);

                helper.Reset(null);
                Assert.AreEqual(0, helper.Index);
                Assert.AreEqual(string.Empty, helper.Text);
                Assert.AreEqual(true, helper.EndOfText);
                Assert.AreEqual(0, helper.Remaining);
            }