From 8cc555de36ff04d4d6cfcd7470b487e72f745b23 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Mon, 12 Oct 2009 10:34:24 +0000 Subject: tests: More DOM modification tests git-svn-id: http://pugixml.googlecode.com/svn/trunk@150 99668b35-9821-0410-8761-19e4c4f06640 --- tests/test_dom_modify.cpp | 214 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) (limited to 'tests/test_dom_modify.cpp') diff --git a/tests/test_dom_modify.cpp b/tests/test_dom_modify.cpp index b775d2d..67e52ff 100644 --- a/tests/test_dom_modify.cpp +++ b/tests/test_dom_modify.cpp @@ -61,3 +61,217 @@ TEST_XML(dom_node_set_value, "text") CHECK_NODE(doc, "no text"); } + +TEST_XML(dom_node_append_attribute, "") +{ + CHECK(xml_node().append_attribute("a") == xml_attribute()); + CHECK(doc.append_attribute("a") == xml_attribute()); + + xml_attribute a1 = doc.child("node").append_attribute("a1"); + CHECK(a1); + a1 = "v1"; + + xml_attribute a2 = doc.child("node").append_attribute("a2"); + CHECK(a2 && a1 != a2); + a2 = "v2"; + + xml_attribute a3 = doc.child("node").child("child").append_attribute("a3"); + CHECK(a3 && a1 != a3 && a2 != a3); + a3 = "v3"; + + CHECK_NODE(doc, ""); +} + +TEST_XML(dom_node_insert_attribute_after, "") +{ + CHECK(xml_node().insert_attribute_after("a", xml_attribute()) == xml_attribute()); + + xml_node node = doc.child("node"); + xml_node child = node.child("child"); + + xml_attribute a1 = node.attribute("a1"); + xml_attribute a2 = child.attribute("a2"); + + CHECK(node.insert_attribute_after("a", xml_attribute()) == xml_attribute()); + CHECK(node.insert_attribute_after("a", a2) == xml_attribute()); + + xml_attribute a3 = node.insert_attribute_after("a3", a1); + CHECK(a3 && a3 != a2 && a3 != a1); + a3 = "v3"; + + xml_attribute a4 = node.insert_attribute_after("a4", a1); + CHECK(a4 && a4 != a3 && a4 != a2 && a4 != a1); + a4 = "v4"; + + xml_attribute a5 = node.insert_attribute_after("a5", a3); + CHECK(a5 && a5 != a4 && a5 != a3 && a5 != a2 && a5 != a1); + a5 = "v5"; + + CHECK(child.insert_attribute_after("a", a4) == xml_attribute()); + + CHECK_NODE(doc, ""); +} + +TEST_XML(dom_node_insert_attribute_before, "") +{ + CHECK(xml_node().insert_attribute_before("a", xml_attribute()) == xml_attribute()); + + xml_node node = doc.child("node"); + xml_node child = node.child("child"); + + xml_attribute a1 = node.attribute("a1"); + xml_attribute a2 = child.attribute("a2"); + + CHECK(node.insert_attribute_before("a", xml_attribute()) == xml_attribute()); + CHECK(node.insert_attribute_before("a", a2) == xml_attribute()); + + xml_attribute a3 = node.insert_attribute_before("a3", a1); + CHECK(a3 && a3 != a2 && a3 != a1); + a3 = "v3"; + + xml_attribute a4 = node.insert_attribute_before("a4", a1); + CHECK(a4 && a4 != a3 && a4 != a2 && a4 != a1); + a4 = "v4"; + + xml_attribute a5 = node.insert_attribute_before("a5", a3); + CHECK(a5 && a5 != a4 && a5 != a3 && a5 != a2 && a5 != a1); + a5 = "v5"; + + CHECK(child.insert_attribute_before("a", a4) == xml_attribute()); + + CHECK_NODE(doc, ""); +} + +TEST_XML(dom_node_append_copy_attribute, "") +{ + CHECK(xml_node().append_copy(xml_attribute()) == xml_attribute()); + CHECK(xml_node().append_copy(doc.child("node").attribute("a1")) == xml_attribute()); + CHECK(doc.append_copy(doc.child("node").attribute("a1")) == xml_attribute()); + + xml_node node = doc.child("node"); + xml_node child = node.child("child"); + + xml_attribute a1 = node.attribute("a1"); + xml_attribute a2 = child.attribute("a2"); + + xml_attribute a3 = node.append_copy(a1); + CHECK(a3 && a3 != a2 && a3 != a1); + + xml_attribute a4 = node.append_copy(a2); + CHECK(a4 && a4 != a3 && a4 != a2 && a4 != a1); + + xml_attribute a5 = node.last_child().append_copy(a1); + CHECK(a5 && a5 != a4 && a5 != a3 && a5 != a2 && a5 != a1); + + CHECK_NODE(doc, ""); + + a3.set_name("a3"); + a3 = "v3"; + + a4.set_name("a4"); + a4 = "v4"; + + a5.set_name("a5"); + a5 = "v5"; + + CHECK_NODE(doc, ""); +} + +TEST_XML(dom_node_insert_copy_after_attribute, "") +{ + CHECK(xml_node().insert_copy_after(xml_attribute(), xml_attribute()) == xml_attribute()); + + xml_node node = doc.child("node"); + xml_node child = node.child("child"); + + xml_attribute a1 = node.attribute("a1"); + xml_attribute a2 = child.attribute("a2"); + + CHECK(node.insert_copy_after(a1, xml_attribute()) == xml_attribute()); + CHECK(node.insert_copy_after(xml_attribute(), a1) == xml_attribute()); + CHECK(node.insert_copy_after(a2, a2) == xml_attribute()); + + xml_attribute a3 = node.insert_copy_after(a1, a1); + CHECK(a3 && a3 != a2 && a3 != a1); + + xml_attribute a4 = node.insert_copy_after(a2, a1); + CHECK(a4 && a4 != a3 && a4 != a2 && a4 != a1); + + xml_attribute a5 = node.insert_copy_after(a4, a1); + CHECK(a5 && a5 != a4 && a5 != a3 && a5 != a2 && a5 != a1); + + CHECK(child.insert_copy_after(a4, a4) == xml_attribute()); + + CHECK_NODE(doc, ""); + + a3.set_name("a3"); + a3 = "v3"; + + a4.set_name("a4"); + a4 = "v4"; + + a5.set_name("a5"); + a5 = "v5"; + + CHECK_NODE(doc, ""); +} + +TEST_XML(dom_node_insert_copy_before_attribute, "") +{ + CHECK(xml_node().insert_copy_before(xml_attribute(), xml_attribute()) == xml_attribute()); + + xml_node node = doc.child("node"); + xml_node child = node.child("child"); + + xml_attribute a1 = node.attribute("a1"); + xml_attribute a2 = child.attribute("a2"); + + CHECK(node.insert_copy_before(a1, xml_attribute()) == xml_attribute()); + CHECK(node.insert_copy_before(xml_attribute(), a1) == xml_attribute()); + CHECK(node.insert_copy_before(a2, a2) == xml_attribute()); + + xml_attribute a3 = node.insert_copy_before(a1, a1); + CHECK(a3 && a3 != a2 && a3 != a1); + + xml_attribute a4 = node.insert_copy_before(a2, a1); + CHECK(a4 && a4 != a3 && a4 != a2 && a4 != a1); + + xml_attribute a5 = node.insert_copy_before(a4, a1); + CHECK(a5 && a5 != a4 && a5 != a3 && a5 != a2 && a5 != a1); + + CHECK(child.insert_copy_before(a4, a4) == xml_attribute()); + + CHECK_NODE(doc, ""); + + a3.set_name("a3"); + a3 = "v3"; + + a4.set_name("a4"); + a4 = "v4"; + + a5.set_name("a5"); + a5 = "v5"; + + CHECK_NODE(doc, ""); +} + +TEST_XML(dom_node_remove_attribute, "") +{ + xml_node().remove_attribute("a"); + xml_node().remove_attribute(xml_attribute()); + + xml_node node = doc.child("node"); + xml_node child = node.child("child"); + + node.remove_attribute("a"); + node.remove_attribute(xml_attribute()); + node.remove_attribute(child.attribute("a4")); + + CHECK_NODE(doc, ""); + + node.remove_attribute("a1"); + node.remove_attribute(node.attribute("a3")); + child.remove_attribute("a4"); + + CHECK_NODE(doc, ""); +} -- cgit v1.2.3