public void Fail_ReturnsParseError() { var parser = Parse.Fail <int>("test"); var result = parser.Parse(""); ParseAssert.ErrorEquals("test", result); }
public void Not_Success_ReturnsError() { var parser = Parse.Not(Chars.Any()); var result = parser.Parse("xyz"); ParseAssert.ErrorEquals("Unexpected \"x\"", result); }
public void Label_Error_ReturnsErrorWithMessage() { var parser = Parse.Fail <int>("Oh noes").Label(() => "Test"); var result = parser.Parse(""); ParseAssert.ErrorEquals("Test", result); }
public void Select_Error_ReturnsError() { var parser = from i in Parse.Fail <int>("test") select i * 2; var result = parser.Parse(""); ParseAssert.ErrorEquals("test", result); }
public void Where_Error_ReturnsError() { var parser = from x in Parse.Fail <int>("test") where x == 42 select x; var result = parser.Parse(""); ParseAssert.ErrorEquals("test", result); }
public void SelectMany_SuccessThenError_ReturnsErrorValue() { var parser = from x in Parse.Succeed(21) from y in Parse.Fail <int>("test") select x *y; var result = parser.Parse(""); ParseAssert.ErrorEquals("test", result); }
public void Where_FailingPredicate_ReturnsError() { var parser = from x in Parse.Succeed(42) where x != 42 select x; var result = parser.Parse(""); ParseAssert.ErrorEquals("Unexpected \"42\"", result); }
public void Or_FirstErrorConsumesInput_ReturnsFirstError() { var parserA = from x in Chars.Any() from y in Parse.Fail <char>("test") select y; var parserB = Chars.Any(); var parser = Combine.Or(parserA, parserB); var result = parser.Parse("abc"); ParseAssert.ErrorEquals("test", result); }