From e350e9553c46ac1faae16c5a0426610b6a316f50 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Sun, 11 Oct 2009 07:47:28 +0000 Subject: tests: Added more node/attribute tests git-svn-id: http://pugixml.googlecode.com/svn/trunk@143 99668b35-9821-0410-8761-19e4c4f06640 --- tests/test_dom_traverse.cpp | 148 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 145 insertions(+), 3 deletions(-) (limited to 'tests/test_dom_traverse.cpp') diff --git a/tests/test_dom_traverse.cpp b/tests/test_dom_traverse.cpp index 8a7f6eb..5b009a3 100644 --- a/tests/test_dom_traverse.cpp +++ b/tests/test_dom_traverse.cpp @@ -132,6 +132,7 @@ TEST_XML(dom_attr_as_int, "") { xml_node node = doc.child("node"); - CHECK(node.attribute("attr1").as_int() == 0); - CHECK(node.attribute("attr2").as_int() == 1); - CHECK(node.attribute("attr3").as_int() == 2147483647); + CHECK(xml_attribute().as_uint() == 0); + CHECK(node.attribute("attr1").as_uint() == 0); + CHECK(node.attribute("attr2").as_uint() == 1); + CHECK(node.attribute("attr3").as_uint() == 2147483647); } TEST_XML(dom_attr_as_float, "") { xml_node node = doc.child("node"); + CHECK(xml_attribute().as_float() == 0); CHECK_DOUBLE(node.attribute("attr1").as_float(), 0); CHECK_DOUBLE(node.attribute("attr2").as_float(), 1); CHECK_DOUBLE(node.attribute("attr3").as_float(), 0.12); @@ -163,6 +166,7 @@ TEST_XML(dom_attr_as_double, "pcdata") +{ + CHECK(xml_node().child("n") == xml_node()); + + CHECK(doc.child("n") == xml_node()); + CHECK_NAME_VALUE(doc.child("node"), "node", ""); + CHECK(doc.child("node").child("child2") == doc.child("node").last_child()); + + CHECK(doc.child_w("n?de") == doc.child("node")); + CHECK(doc.child_w("n[az]de") == xml_node()); + CHECK(doc.child_w("n[aoz]de") == doc.child("node")); + CHECK(doc.child_w("*e") == doc.child("node")); + CHECK(doc.child("node").child_w("*l?[23456789]*") == doc.child("node").child("child2")); +} + +TEST_XML(dom_node_attribute, "") +{ + CHECK(xml_node().attribute("a") == xml_attribute()); + + xml_node node = doc.child("node"); + + CHECK(node.attribute("n") == xml_attribute()); + CHECK_NAME_VALUE(node.attribute("attr1"), "attr1", "0"); + CHECK(node.attribute("attr2") == node.last_attribute()); + + CHECK(node.attribute_w("*tt?[23456789]*") == node.attribute("attr2")); +} + +TEST_XML(dom_node_next_previous_sibling, "") +{ + CHECK(xml_node().next_sibling() == xml_node()); + CHECK(xml_node().next_sibling("n") == xml_node()); + CHECK(xml_node().next_sibling_w("n") == xml_node()); + + CHECK(xml_node().previous_sibling() == xml_node()); + CHECK(xml_node().previous_sibling("n") == xml_node()); + CHECK(xml_node().previous_sibling_w("n") == xml_node()); + + xml_node child1 = doc.child("node").child("child1"); + xml_node child2 = doc.child("node").child("child2"); + xml_node child3 = doc.child("node").child("child3"); + + CHECK(child1.next_sibling() == child2); + CHECK(child3.next_sibling() == xml_node()); + + CHECK(child1.previous_sibling() == xml_node()); + CHECK(child3.previous_sibling() == child2); + + CHECK(child1.next_sibling("child3") == child3); + CHECK(child1.next_sibling("child") == xml_node()); + + CHECK(child3.previous_sibling("child1") == child1); + CHECK(child3.previous_sibling("child") == xml_node()); + + CHECK(child1.next_sibling_w("*[3456789]") == child3); + CHECK(child3.previous_sibling_w("*[3456789]") == xml_node()); +} + +TEST_XML(dom_node_child_value, "value1value2value4") +{ + CHECK_STRING(xml_node().child_value(), ""); + CHECK_STRING(xml_node().child_value("n"), ""); + CHECK_STRING(xml_node().child_value_w("n"), ""); + + xml_node node = doc.child("node"); + + CHECK_STRING(node.child_value(), "value4"); + CHECK_STRING(node.child("child1").child_value(), "value1"); + CHECK_STRING(node.child("child2").child_value(), "value2"); + CHECK_STRING(node.child("child3").child_value(), "value3"); + CHECK_STRING(node.child_value("child3"), "value3"); + CHECK_STRING(node.child_value_w("c*[23456789]"), "value2"); + CHECK_STRING(node.child_value_w("*"), ""); // child_value(name) and child_value_w(pattern) do not continue the search if a node w/out value is found first +} + +TEST_XML(dom_node_first_last_attribute, "") +{ + xml_node node = doc.child("node"); + + CHECK(node.first_attribute() == node.attribute("attr1")); + CHECK(node.last_attribute() == node.attribute("attr2")); + + CHECK(xml_node().first_attribute() == xml_attribute()); + CHECK(xml_node().last_attribute() == xml_attribute()); + + CHECK(doc.first_attribute() == xml_attribute()); + CHECK(doc.last_attribute() == xml_attribute()); +} + +TEST_XML(dom_node_first_last_child, "") +{ + xml_node node = doc.child("node"); + + CHECK(node.first_child() == node.child("child1")); + CHECK(node.last_child() == node.child("child2")); + + CHECK(xml_node().first_child() == xml_node()); + CHECK(xml_node().last_child() == xml_node()); + + CHECK(doc.first_child() == node); + CHECK(doc.last_child() == node); +} + +TEST_XML(dom_node_find_child_by_attribute, "") +{ + CHECK(xml_node().find_child_by_attribute("name", "attr", "value") == xml_node()); + CHECK(xml_node().find_child_by_attribute_w("name", "attr", "value") == xml_node()); + CHECK(xml_node().find_child_by_attribute("attr", "value") == xml_node()); + CHECK(xml_node().find_child_by_attribute_w("attr", "value") == xml_node()); + + xml_node node = doc.child("node"); + + CHECK(node.find_child_by_attribute("child2", "attr", "value3") == node.last_child()); + CHECK(node.find_child_by_attribute("attr", "value2") == node.child("child2")); + + CHECK(node.find_child_by_attribute_w("*", "att?", "val*[0123456789]") == node.child("child1")); + CHECK(node.find_child_by_attribute_w("att?", "val*[0123456789]") == node.child("child1")); +} + +TEST_XML_FLAGS(dom_offset_debug, "pcdata", parse_default | parse_pi | parse_comments | parse_declaration) +{ + CHECK(xml_node().offset_debug() == -1); + CHECK(doc.offset_debug() == 0); + + xml_node_iterator it = doc.begin(); + + CHECK((it++)->offset_debug() == 2); + CHECK((it++)->offset_debug() == 9); + CHECK((it++)->offset_debug() == 17); + CHECK((it++)->offset_debug() == 28); + + xml_node_iterator cit = doc.child("node").begin(); + + CHECK((cit++)->offset_debug() == 33); + CHECK((cit++)->offset_debug() == 48); +} -- cgit v1.2.3