0
0
mirror of https://github.com/zeux/pugixml.git synced 2024-12-27 13:33:17 +08:00

tests: Add even more coverage tests

Also fix MSVC6 compilation (make convertions to function pointers explicit).

git-svn-id: https://pugixml.googlecode.com/svn/trunk@1076 99668b35-9821-0410-8761-19e4c4f06640
This commit is contained in:
Arseny Kapoulkine 2014-10-24 01:17:57 +00:00
parent 903db8682a
commit 546997683a
3 changed files with 70 additions and 6 deletions

View File

@ -1048,14 +1048,14 @@ TEST_XML(dom_unspecified_bool_coverage, "<node attr='value'>text</node>")
{
xml_node node = doc.first_child();
node(0);
node.first_attribute()(0);
node.text()(0);
static_cast<void (*)(xml_node***)>(node)(0);
static_cast<void (*)(xml_attribute***)>(node.first_attribute())(0);
static_cast<void (*)(xml_text***)>(node.text())(0);
#ifndef PUGIXML_NO_XPATH
xpath_query q(STR("/node"));
q(0);
q.evaluate_node(doc)(0);
static_cast<void (*)(xpath_query***)>(q)(0);
static_cast<void (*)(xpath_node***)>(q.evaluate_node(doc))(0);
#endif
}

View File

@ -110,7 +110,7 @@ TEST_XML(xpath_sort_attributes, "<node/>")
n.append_attribute(STR("attr3"));
n.insert_attribute_before(STR("attr1"), n.attribute(STR("attr2")));
xpath_node_set ns = n.select_nodes(STR("@*"));
xpath_node_set ns = n.select_nodes(STR("@* | @*"));
ns.sort(true);
xpath_node_set reverse_sorted = ns;
@ -122,6 +122,25 @@ TEST_XML(xpath_sort_attributes, "<node/>")
xpath_node_set_tester(reverse_sorted, "reverse sorted order failed") % 5 % 4 % 3;
}
TEST_XML(xpath_sort_attributes_docorder, "<node attr1='' attr2='value' attr4='value' />")
{
xml_node n = doc.child(STR("node"));
n.first_attribute().set_name(STR("attribute1"));
n.insert_attribute_after(STR("attr3"), n.attribute(STR("attr2")));
xpath_node_set ns = n.select_nodes(STR("@* | @*"));
ns.sort(true);
xpath_node_set reverse_sorted = ns;
ns.sort(false);
xpath_node_set sorted = ns;
xpath_node_set_tester(sorted, "sorted order failed") % 3 % 4 % 5 % 6;
xpath_node_set_tester(reverse_sorted, "reverse sorted order failed") % 6 % 5 % 4 % 3;
}
TEST(xpath_sort_random_medium)
{
xml_document doc;
@ -629,4 +648,26 @@ TEST(xpath_allocate_string_out_of_memory)
}
#endif
}
TEST(xpath_remove_duplicates)
{
xml_document doc;
for (int i = 0; i < 20; ++i)
{
doc.append_child(STR("node2"));
doc.prepend_child(STR("node1"));
}
xpath_node_set ns = doc.select_nodes(STR("/node2/preceding::* | //node1 | /node() | /* | /node1/following-sibling::*"));
ns.sort();
{
xpath_node_set_tester tester(ns, "sorted order failed");
for (int i = 0; i < 40; ++i)
tester % (2 + i);
}
}
#endif

View File

@ -276,6 +276,29 @@ TEST(xpath_variables_long_name)
CHECK_XPATH_BOOLEAN_VAR(xml_node(), STR("$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), &set, true);
}
TEST(xpath_variables_long_name_out_of_memory)
{
xpath_variable_set set;
set.set(STR("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), true);
test_runner::_memory_fail_threshold = 4096 + 128;
#ifdef PUGIXML_NO_EXCEPTIONS
xpath_query q(STR("$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), &set);
CHECK(!q);
#else
try
{
xpath_query q(STR("$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), &set);
CHECK_FORCE_FAIL("Expected exception");
}
catch (const xpath_exception&)
{
}
#endif
}
TEST_XML(xpath_variables_select, "<node attr='1'/><node attr='2'/>")
{
xpath_variable_set set;