Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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
                );
        }