From fdf10521c6db81bf7d56276b9d5f48c5f36f2980 Mon Sep 17 00:00:00 2001 From: yhirose Date: Fri, 12 Jun 2015 18:13:20 -0400 Subject: [PATCH] Added a unit test. --- test/test.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/test/test.cc b/test/test.cc index 52ca9b3..6637bea 100644 --- a/test/test.cc +++ b/test/test.cc @@ -266,7 +266,7 @@ TEST_CASE("mutable lambda test", "[general]") { vector vec; - peg pg("ROOT <- 'mutable lambda test'"); + peg pg("ROOT <- 'mutable lambda test'"); // This test makes sure if the following code can be compiled. pg["TOKEN"] = [=](const char* s, size_t n) mutable { @@ -505,6 +505,25 @@ TEST_CASE("Predicate test", "[general]") REQUIRE(ret == false); } +TEST_CASE("Ignore semantic value of 'and' predicate test", "[general]") +{ + peg parser( + " START <- _ &HELLO HELLO_WORLD '.' " + " HELLO_WORLD <- HELLO 'World' _ " + " HELLO <- 'Hello' _ " + " ~_ <- [ \t\r\n]* " + ); + + parser.enable_ast(false); + + shared_ptr ast; + auto ret = parser.parse("Hello World.", ast); + + REQUIRE(ret == true); + REQUIRE(ast->nodes.size() == 1); + REQUIRE(ast->nodes[0]->name == "HELLO_WORLD"); +} + bool exact(Grammar& g, const char* d, const char* s) { auto n = strlen(s); auto r = g[d].parse(s, n);