示例#1
0
        public void ConsumesOneOccurenceOfPatternInText()
        {
            var a = new Many(new Character('a'));

            Assert.True(a.Match("abc").Success());
            Assert.Equal("bc", a.Match("abc").RemainingText());
        }
示例#2
0
        public void DoesNotConsumeAnyCharacterBecauseNoneIsInRange()
        {
            var digits = new Many(new Range('0', '9'));

            Assert.True(digits.Match("ab").Success());
            Assert.Equal("ab", digits.Match("ab").RemainingText());
        }
示例#3
0
        public void ConsumesMultipleCharactersInRange()
        {
            var digits = new Many(new Range('0', '9'));

            Assert.True(digits.Match("12345ab123").Success());
            Assert.Equal("ab123", digits.Match("12345ab123").RemainingText());
        }
示例#4
0
        public void DoesNotConsumePatternInNullText()
        {
            var a = new Many(new Character('a'));

            Assert.True(a.Match(null).Success());
            Assert.Null(a.Match(null).RemainingText());
        }
示例#5
0
        public void DoesNotConsumePatternInEmptyText()
        {
            var a = new Many(new Character('a'));

            Assert.True(a.Match("").Success());
            Assert.Equal("", a.Match("").RemainingText());
        }
示例#6
0
        public void DoesNotConsumeEmptyTextWithComplexPattern()
        {
            var digits     = new OneOrMore(new Range('0', '9'));
            var whitespace = new Many(new Any(" \r\n\t"));
            var separator  = new Sequence(whitespace, new Character(';'), whitespace);
            var list       = new List(digits, separator);

            Assert.True(list.Match("").Success());
            Assert.Equal("", list.Match("").RemainingText());
        }