diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_xpath_functions.cpp | 3 | ||||
| -rw-r--r-- | tests/test_xpath_parse.cpp | 33 | 
2 files changed, 36 insertions, 0 deletions
| diff --git a/tests/test_xpath_functions.cpp b/tests/test_xpath_functions.cpp index 9cf8164..1ab4d71 100644 --- a/tests/test_xpath_functions.cpp +++ b/tests/test_xpath_functions.cpp @@ -688,6 +688,9 @@ TEST(xpath_function_arguments)  	// whitespace after function name
  	CHECK_XPATH_BOOLEAN(c, "true ()", true);
 +
 +	// too many arguments
 +	CHECK_XPATH_FAIL("round(1, 2, 3, 4, 5, 6)");
  }
  TEST_XML_FLAGS(xpath_string_value, "<node><c1>pcdata</c1><c2><child/></c2><c3 attr='avalue'/><c4><?target pivalue?></c4><c5><!--comment--></c5><c6><![CDATA[cdata]]></c6></node>", parse_default | parse_pi | parse_comments)
 diff --git a/tests/test_xpath_parse.cpp b/tests/test_xpath_parse.cpp index cce3085..38032ea 100644 --- a/tests/test_xpath_parse.cpp +++ b/tests/test_xpath_parse.cpp @@ -37,6 +37,7 @@ TEST(xpath_number_error)  TEST(xpath_variables)
  {
  	CHECK_XPATH_FAIL("$var"); // not implemented
 +	CHECK_XPATH_FAIL("$1");
  }
  TEST(xpath_empty_expression)
 @@ -49,4 +50,36 @@ TEST(xpath_lexer_error)  	CHECK_XPATH_FAIL("!");
  }
 +TEST(xpath_unmatched_braces)
 +{
 +	CHECK_XPATH_FAIL("node[");
 +	CHECK_XPATH_FAIL("node[1");
 +	CHECK_XPATH_FAIL("node[]]");
 +	CHECK_XPATH_FAIL("node(");
 +	CHECK_XPATH_FAIL("node(()");
 +	CHECK_XPATH_FAIL("(node)[1");
 +	CHECK_XPATH_FAIL("(1");
 +}
 +
 +TEST(xpath_incorrect_step)
 +{
 +	CHECK_XPATH_FAIL("child::1");
 +	CHECK_XPATH_FAIL("something::*");
 +}
 +
 +TEST(xpath_semantics_error)
 +{
 +	CHECK_XPATH_FAIL("1[1]");
 +	CHECK_XPATH_FAIL("1 | 1");
 +}
 +
 +TEST(xpath_semantics_posinv) // coverage for contains()
 +{
 +	xpath_query("(node)[substring(1, 2, 3)]");
 +	xpath_query("(node)[concat(1, 2, 3, 4)]");
 +	xpath_query("(node)[count(foo)]");
 +	xpath_query("(node)[local-name()]");
 +	xpath_query("(node)[(node)[1]]");
 +}
 +
  #endif
 | 
