diff options
| author | arseny.kapoulkine <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640> | 2009-10-11 07:47:28 +0000 | 
|---|---|---|
| committer | arseny.kapoulkine <arseny.kapoulkine@99668b35-9821-0410-8761-19e4c4f06640> | 2009-10-11 07:47:28 +0000 | 
| commit | e350e9553c46ac1faae16c5a0426610b6a316f50 (patch) | |
| tree | b873ddffeea290040d65440f063bb9638441fe1f /tests | |
| parent | e11a81455afb36f59d2ec08ca7ccd4c56d0691a6 (diff) | |
tests: Added more node/attribute tests
git-svn-id: http://pugixml.googlecode.com/svn/trunk@143 99668b35-9821-0410-8761-19e4c4f06640
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_dom_traverse.cpp | 148 | 
1 files changed, 145 insertions, 3 deletions
| 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, "<node attr1='1' attr2='-1' attr3='-2147483648' attr4=  {
  	xml_node node = doc.child("node");
 +	CHECK(xml_attribute().as_int() == 0);
  	CHECK(node.attribute("attr1").as_int() == 1);
  	CHECK(node.attribute("attr2").as_int() == -1);
  	CHECK(node.attribute("attr3").as_int() == -2147483647 - 1);
 @@ -142,15 +143,17 @@ TEST_XML(dom_attr_as_uint, "<node attr1='0' attr2='1' attr3='2147483647'/>")  {
  	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, "<node attr1='0' attr2='1' attr3='0.12' attr4='-5.1' attr5='3e-4' attr6='3.14159265358979323846'/>")
  {
  	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, "<node attr1='0' attr2='1' attr3='0.12' attr4='-5.1  {
  	xml_node node = doc.child("node");
 +	CHECK(xml_attribute().as_double() == 0);
  	CHECK_DOUBLE(node.attribute("attr1").as_double(), 0);
  	CHECK_DOUBLE(node.attribute("attr2").as_double(), 1);
  	CHECK_DOUBLE(node.attribute("attr3").as_double(), 0.12);
 @@ -175,6 +179,7 @@ TEST_XML(dom_attr_as_bool, "<node attr1='0' attr2='1' attr3='true' attr4='True'  {
  	xml_node node = doc.child("node");
 +	CHECK(!xml_attribute().as_bool());
  	CHECK(!node.attribute("attr1").as_bool());
  	CHECK(node.attribute("attr2").as_bool());
  	CHECK(node.attribute("attr3").as_bool());
 @@ -326,3 +331,140 @@ TEST_XML_FLAGS(dom_node_name_value, "<?xml?><?pi?><!--comment--><node>pcdata<![C  	CHECK_NAME_VALUE(*cit++, "", "pcdata");
  	CHECK_NAME_VALUE(*cit++, "", "cdata");
  }
 +
 +TEST_XML(dom_node_child, "<node><child1/><child2/></node>")
 +{
 +	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, "<node attr1='0' attr2='1'/>")
 +{
 +	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, "<node><child1/><child2/><child3/></node>")
 +{
 +	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, "<node><novalue/><child1>value1</child1><child2>value2<n/></child2><child3><![CDATA[value3]]></child3>value4</node>")
 +{
 +	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, "<node attr1='0' attr2='1'/>")
 +{
 +	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, "<node><child1/><child2/></node>")
 +{
 +	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, "<node><child1 attr='value1'/><child2 attr='value2'/><child2 attr='value3'/></node>")
 +{
 +	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, "<?xml?><?pi?><!--comment--><node>pcdata<![CDATA[cdata]]></node>", 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);
 +}
 | 
