public void Constructor3() { RepetitionParser rp; Assert.Throws <ArgumentOutOfRangeException>( () => rp = new RepetitionParser(Parser, 1, 0)); }
public void Constructor2() { RepetitionParser rp; Assert.Throws <ArgumentNullException>( () => rp = new RepetitionParser(null, 0, 1)); }
public void Constructor() { Parser p = Parser; RepetitionParser rp = new RepetitionParser(p, 10, 20); Assert.AreEqual(rp.LowerBound, 10); Assert.AreEqual(rp.UpperBound, 20); Assert.AreEqual(rp.Parser, p); }
public void PositiveFailure() { RepetitionParser rp = +Parser; string s = "b"; StringScanner scan = new StringScanner(s); ParserMatch m = rp.Parse(scan); Assert.IsTrue(!m.Success); }
public void OptionalSuccess0() { RepetitionParser rp = !Parser; string s = ""; StringScanner scan = new StringScanner(s); ParserMatch m = rp.Parse(scan); Assert.IsTrue(m.Success); Assert.IsTrue(m.Empty); }
public void KleneeSuccessNotAtEnd() { RepetitionParser rp = Ops.ZeroOrMore(Parser); String s = "aaa "; StringScanner scan = new StringScanner(s); ParserMatch m = rp.Parse(scan); Assert.IsTrue(m.Success); Assert.AreEqual(3, m.Length); Assert.IsFalse(scan.AtEnd); }
public void PositiveSuccessNotAtEnd() { RepetitionParser rp = +Parser; string s = "aaa "; StringScanner scan = new StringScanner(s); ParserMatch m = rp.Parse(scan); Assert.IsTrue(m.Success); Assert.AreEqual(m.Length, 3); Assert.IsTrue(!scan.AtEnd); }
public void OptionalSuccess() { RepetitionParser rp = !Parser; string s = "aa"; StringScanner scan = new StringScanner(s); ParserMatch m = rp.Parse(scan); Assert.IsTrue(m.Success); Assert.AreEqual(m.Length, 1); Assert.AreEqual(scan.Offset, 1); }
public void KleneeSuccess0() { RepetitionParser rp = Ops.Klenee(Parser); string s = "b"; StringScanner scan = new StringScanner(s); ParserMatch m = rp.Parse(scan); Assert.IsTrue(m.Success); Assert.IsTrue(m.Empty); Assert.IsTrue(!scan.AtEnd); }
public void KleneeSuccess2AtEnd() { RepetitionParser rp = Ops.Klenee(Parser); string s = "aa"; StringScanner scan = new StringScanner(s); ParserMatch m = rp.Parse(scan); Assert.IsTrue(m.Success); Assert.AreEqual(m.Length, 2); Assert.IsTrue(scan.AtEnd); }
public void PositiveSequenceSuccessNotAtEnd() { RepetitionParser rp = +SequenceParser; String s = "ababab "; StringScanner scan = new StringScanner(s); ParserMatch m = rp.Parse(scan); Assert.IsTrue(m.Success); Assert.AreEqual(0, m.Offset); Assert.AreEqual(6, m.Length); Assert.IsFalse(scan.AtEnd); }
public void When_no_items_match_but_were_not_required() { var input = new MockInput<int>(); var parser = new RepetitionParser<int, int>( minimumCount: 0, parser: new MockSequenceParser<int, int> { p => ParseResult.Failure<int, int>(input, p) } ); var actualResult = parser.Parse(input); var actualCollection = ParseResultAssert.IsSuccess(actualResult); CollectionAssert.AreElementsEqual(new int[] { }, actualCollection); }
public void When_a_single_item_matches() { var input = new MockInput<int>(); var parser = new RepetitionParser<int, int>( new MockSequenceParser<int, int> { p => ParseResult.Success(input, input, 1), p => ParseResult.Failure<int, int>(input, p) } ); var actualResult = parser.Parse(input); var actualCollection = ParseResultAssert.IsSuccess(actualResult); CollectionAssert.AreElementsEqual(new[] { 1 }, actualCollection); }
public void When_three_items_match_but_required_four() { var input = new MockInput<int>(); var parser = new RepetitionParser<int, int>( minimumCount: 4, parser: new MockSequenceParser<int, int> { ParseResult.Success(input, input, 1), ParseResult.Success(input, input, 2), ParseResult.Success(input, input, 3), p => ParseResult.Failure<int, int>(input, p) } ); var actualResult = parser.Parse(input); ParseResultAssert.IsFailure(actualResult); }
public void Constructor3() { RepetitionParser rp = new RepetitionParser(Parser, 1, 0); }
public void Constructor2() { RepetitionParser rp = new RepetitionParser(null, 0, 1); }
public void When_no_items_match_but_were_required() { var input = new MockInput<int>(); var parser = new RepetitionParser<int, int>( minimumCount: 1, parser: new MockSequenceParser<int, int> { p => ParseResult.Failure<int, int>(input, p) } ); var actualResult = parser.Parse(input); ParseResultAssert.IsFailure(actualResult); }