public void GetNext_Test()
        {
            var parser = new AnyParser <char>();
            var target = new ParseResultSequence <char, char>("abc".ToCharacterSequence(), parser, null);

            target.GetNext().Value.Should().Be('a');
            target.GetNext().Value.Should().Be('b');
            target.GetNext().Value.Should().Be('c');
        }
        public void IsAtEnd_Test()
        {
            var parser = new AnyParser <char>();
            var target = new ParseResultSequence <char, char>("abc".ToCharacterSequence(), parser, null);

            target.IsAtEnd.Should().BeFalse();
            target.GetNext();
            target.IsAtEnd.Should().BeFalse();
            target.GetNext();
            target.IsAtEnd.Should().BeFalse();
            target.GetNext();
            target.IsAtEnd.Should().BeTrue();
        }
        public void Location_Test()
        {
            var parser = new AnyParser <char>();
            var target = new ParseResultSequence <char, char>("abc".ToCharacterSequence(), parser, null);

            target.CurrentLocation.Line.Should().Be(1);
            target.CurrentLocation.Column.Should().Be(0);
            target.GetNext();
            target.CurrentLocation.Line.Should().Be(1);
            target.CurrentLocation.Column.Should().Be(1);
            target.GetNext();
            target.CurrentLocation.Line.Should().Be(1);
            target.CurrentLocation.Column.Should().Be(2);
            target.GetNext();
            target.CurrentLocation.Line.Should().Be(1);
            target.CurrentLocation.Column.Should().Be(3);
        }
        public void Checkpoint_Test()
        {
            var parser = new AnyParser <char>();
            var target = new ParseResultSequence <char, char>("abcde".ToCharacterSequence(), parser, null);

            target.GetNext().Value.Should().Be('a');
            target.GetNext().Value.Should().Be('b');
            var cp = target.Checkpoint();

            target.GetNext().Value.Should().Be('c');
            target.GetNext().Value.Should().Be('d');
            target.GetNext().Value.Should().Be('e');
            target.IsAtEnd.Should().BeTrue();
            cp.Rewind();
            target.GetNext().Value.Should().Be('c');
            target.GetNext().Value.Should().Be('d');
            target.GetNext().Value.Should().Be('e');
            target.IsAtEnd.Should().BeTrue();
        }