public void SeparatedBy_MultipleValues_ReturnsValues() { var parser = Chars.Any().SeparatedBy(Chars.Char(';')); var result = parser.Parse("x;y;z"); ParseAssert.ValueEquals(new char[] { 'x', 'y', 'z' }, result); }
public void Between_AllMatching_ReturnsValue() { var parser = Chars.Any().Between(Chars.Char('['), Chars.Char(']')); var result = parser.Parse("[x]"); ParseAssert.ValueEquals('x', result); }
public void SeparatedBy_ValueOnly_ReturnsValue() { var parser = Chars.Any().SeparatedBy(Chars.Char(';')); var result = parser.Parse("x"); ParseAssert.ValueEquals(new char[] { 'x' }, result); }
public void SeparatedBy_ValueAndSeparator_ReturnsError() { var parser = Chars.Any().SeparatedBy(Chars.Char(';')); var result = parser.Parse("x;"); ParseAssert.IsError(result); }
public void Any_NonEmptyStream_ReturnsChar() { var parser = Chars.Any(); var result = parser.Parse("a"); ParseAssert.ValueEquals('a', result); }
public void SeparatedBy_Nothing_ReturnsEmptyValue() { var parser = Chars.Any().SeparatedBy(Chars.Char(';')); var result = parser.Parse(""); ParseAssert.ValueEquals(new char[] { }, result); }
public void Any_EmptyStream_ReturnsError() { var parser = Chars.Any(); var result = parser.Parse(""); ParseAssert.IsError(result); }
public void Not_Success_ReturnsError() { var parser = Parse.Not(Chars.Any()); var result = parser.Parse("xyz"); ParseAssert.ErrorEquals("Unexpected \"x\"", result); }
public void Aggregate_CombinesParsedValues_UntilError() { var parser = Chars.Any() .Aggregate(() => "test", (acc, c) => acc + c); var result = parser.Parse("xxyyzz"); ParseAssert.ValueEquals("testxxyyzz", result); }
public void Many_IEnumerable() { var parser = (from c in Chars.Any() from x in Parse.Succeed(42) select x).Many(); var result = parser.Parse("xyz"); ParseAssert.ValueEquals(new[] { 42, 42, 42 }, result); }
public void Aggregate_ResultSelector_ReturnsTransformedResult() { var parser = Chars.Any() .Aggregate(() => "", (acc, c) => acc + c, x => x + "test"); var result = parser.Parse("xyz"); ParseAssert.ValueEquals("xyztest", 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); }
public void Try_Error_ReturnsErrorAndResetsPosition() { var parser = Parse.Try(from x in Chars.Any() from y in Chars.Any() from f in Parse.Fail <char>("test") select x); IInputReader input = InputReader.Create("abc"); Position expectedPosition = input.GetPosition(); var result = parser.Parse(input); ParseAssert.IsError(result); Assert.AreEqual(expectedPosition, input.GetPosition()); }