public void LookAhead_MatchesButDoesNotConsume() { var parser = from la in Parse.String("ab").LookAhead() from text in Parse.String("ab") select new { la, text }; AssertParser.SucceedsWith(parser, "ab", x => { Assert.AreEqual("ab", x.la); Assert.AreEqual("ab", x.text); }); }
public void ReturningValue_DoesNotAdvanceInput() { var p = Parse.Return(1); AssertParser.SucceedsWith(p, "abc", n => Assert.AreEqual(1, n)); }
public void IgnoreCaseParser() { var ab = Parse.IgnoreCase("ab").Text(); AssertParser.SucceedsWith(ab, "Ab", m => Assert.AreEqual("Ab", m)); }
public void ExceptStopsConsumingInputWhenExclusionParsed() { var exceptAa = Parse.AnyChar.Except(Parse.String("aa")).Many().Text(); AssertParser.SucceedsWith(exceptAa, "abcaab", r => Assert.AreEqual("abc", r)); }
public void EmptyAlternative1() => AssertParser.SucceedsWith(Parser5UnderTest, "_+_+a", o => Assert.Equal("_+_+", o));
public void RecursiveParserWithoutLeftRecursion() => AssertParser.SucceedsWith(Parser2UnderTest, "ababba0", o => Assert.Equal("ababba0", o));
public void MultipleRefs() => AssertParser.SucceedsWith(Parser1UnderTest, "id=1", o => Assert.Equal("id", o));
public void CanParseLeftRecursiveGrammar() { AssertParser.SucceedsWith(ASeq.End(), "a,a,a", r => new string(r.ToArray()).Equals("aaa")); }
public void TestSelectManyLinq() => AssertParser.SucceedsWith(ParserOptionalLinq, "ab", o => AssertSome(o, "ba"));
public void TestSelectManyNone() => AssertParser.SucceedsWith(ParserOptionalSelectMany, "b", o => Assert.True(o.IsEmpty));
public void TestSelect() => AssertParser.SucceedsWith(ParserOptionalSelect, "a", o => AssertSome(o, 'A'));