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:
parent
903db8682a
commit
546997683a
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user