public void ConsumesOneOccurenceOfPatternInText() { var a = new Many(new Character('a')); Assert.True(a.Match("abc").Success()); Assert.Equal("bc", a.Match("abc").RemainingText()); }
public void DoesNotConsumeAnyCharacterBecauseNoneIsInRange() { var digits = new Many(new Range('0', '9')); Assert.True(digits.Match("ab").Success()); Assert.Equal("ab", digits.Match("ab").RemainingText()); }
public void ConsumesMultipleCharactersInRange() { var digits = new Many(new Range('0', '9')); Assert.True(digits.Match("12345ab123").Success()); Assert.Equal("ab123", digits.Match("12345ab123").RemainingText()); }
public void DoesNotConsumePatternInNullText() { var a = new Many(new Character('a')); Assert.True(a.Match(null).Success()); Assert.Null(a.Match(null).RemainingText()); }
public void DoesNotConsumePatternInEmptyText() { var a = new Many(new Character('a')); Assert.True(a.Match("").Success()); Assert.Equal("", a.Match("").RemainingText()); }
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()); }