public static void BlockSuccess() { var state = new ParserState(" a\n a\n a", 4); state.Index = 2; state.IndentIndex = 2; var result = Parse.Block(Parse.Char('a'), Parse.SameOrIndented) .String()(state); Assert.AreEqual("aa", result); }
public static void BlockDoesNotConsumesNewline() { var state = new ParserState(" a\n ", 4); state.IndentIndex = 2; var result = Parse.Block(Parse.Char('a'), Parse.Same)(state); Assert.AreEqual(new char[] { 'a' }, result); Assert.AreEqual(3, state.Index); Assert.AreEqual(2, state.IndentIndex); }
public static void BlockFailure() { var state = new ParserState(" ab\n a\n a", 4); state.Index = 2; state.IndentIndex = 2; var exception = Assert.Throws <ExpectedException>(() => Parse.Block(Parse.Char('a'), Parse.SameOrIndented) .String()(state) ); Assert.AreEqual(3, exception.Index); Assert.AreEqual( new string[] { "space" }, exception.Expected ); }