diff options
| -rw-r--r-- | tests/test_xpath_parse.cpp | 11 | ||||
| -rw-r--r-- | tests/test_xpath_variables.cpp | 30 | 
2 files changed, 40 insertions, 1 deletions
diff --git a/tests/test_xpath_parse.cpp b/tests/test_xpath_parse.cpp index f996b24..aa148be 100644 --- a/tests/test_xpath_parse.cpp +++ b/tests/test_xpath_parse.cpp @@ -291,4 +291,15 @@ TEST(xpath_parse_out_of_memory_string_to_number)  	CHECK_XPATH_FAIL(STR("0.11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"));  } +TEST(xpath_parse_qname_error) +{ +	CHECK_XPATH_FAIL(STR("foo: bar")); +	CHECK_XPATH_FAIL(STR("foo :bar")); +	CHECK_XPATH_FAIL(STR("foo: *")); +	CHECK_XPATH_FAIL(STR("foo :*")); +	CHECK_XPATH_FAIL(STR(":*")); +	CHECK_XPATH_FAIL(STR(":bar")); +	CHECK_XPATH_FAIL(STR(":")); +} +  #endif diff --git a/tests/test_xpath_variables.cpp b/tests/test_xpath_variables.cpp index 1ea8b11..f759dc1 100644 --- a/tests/test_xpath_variables.cpp +++ b/tests/test_xpath_variables.cpp @@ -2,6 +2,8 @@  #include "common.hpp"
 +#include <string>
 +
  TEST(xpath_variables_type_none)
  {
  	xpath_variable_set set;
 @@ -323,17 +325,22 @@ TEST(xpath_variables_qname)  	CHECK_XPATH_BOOLEAN(xml_node(), xpath_query(STR("$foo:bar"), &set), true);
  }
 -TEST(xpath_variables_qname_error)
 +TEST(xpath_variables_name_error)
  {
  	xpath_variable_set set;
  	set.set(STR("foo:"), true);
  	set.set(STR(":bar"), true);
  	set.set(STR("foo:*"), true);
 +	set.set(STR("foo"), true);
 +	set.set(STR("3"), true);
  	CHECK_XPATH_FAIL_VAR(STR("$foo:"), &set);
  	CHECK_XPATH_FAIL_VAR(STR("$:bar"), &set);
  	CHECK_XPATH_FAIL_VAR(STR("$foo:*"), &set);
  	CHECK_XPATH_FAIL_VAR(STR("$foo:bar:baz"), &set);
 +	CHECK_XPATH_FAIL_VAR(STR("$ foo"), &set);
 +
 +	CHECK_XPATH_FAIL_VAR(STR("$3"), &set);
  }
  TEST(xpath_variables_empty_string)
 @@ -361,6 +368,27 @@ TEST(xpath_variables_name_case)  	CHECK_XPATH_NUMBER(xml_node(), xpath_query(STR("$i div $I"), &set), 2.5);
  }
 +TEST(xpath_variables_name_unicode)
 +{
 +#ifdef PUGIXML_WCHAR_MODE
 +	#ifdef U_LITERALS
 +		const char_t* name = L"\u0400\u203D";
 +	#else
 +		const char_t* name = L"\x0400\x203D";
 +	#endif
 +#else
 +	const char_t* name = "\xd0\x80\xe2\x80\xbd";
 +#endif
 +
 +	xpath_variable_set set;
 +	set.set(name, STR("value"));
 +
 +	std::basic_string<char_t> var = STR("$");
 +	var += name;
 +
 +	CHECK_XPATH_STRING(xml_node(), xpath_query(var.c_str(), &set), STR("value"));
 +}
 +
  TEST_XML(xpath_variables_count_sum, "<node><c1>12</c1><c2>23</c2><c3>34</c3></node>")
  {
  	xpath_variable_set set;
  | 
