#include "common.hpp"
TEST_XML(dom_attr_assign, "")
{
xml_node node = doc.child("node");
node.attribute("attr1") = "v1";
xml_attribute() = "v1";
node.attribute("attr2") = -2147483647 - 1;
xml_attribute() = -2147483647 - 1;
node.attribute("attr3") = 2147483647u;
xml_attribute() = 2147483647;
node.attribute("attr4") = 0.5;
xml_attribute() = 0.5;
node.attribute("attr5") = true;
xml_attribute() = true;
CHECK_NODE(node, "");
}
TEST_XML(dom_attr_set_value, "")
{
xml_node node = doc.child("node");
CHECK(node.attribute("attr1").set_value("v1"));
CHECK(!xml_attribute().set_value("v1"));
CHECK(node.attribute("attr2").set_value(-2147483647 - 1));
CHECK(!xml_attribute().set_value(-2147483647 - 1));
CHECK(node.attribute("attr3").set_value(2147483647u));
CHECK(!xml_attribute().set_value(2147483647));
CHECK(node.attribute("attr4").set_value(0.5));
CHECK(!xml_attribute().set_value(0.5));
CHECK(node.attribute("attr5").set_value(true));
CHECK(!xml_attribute().set_value(true));
CHECK_NODE(node, "");
}
TEST_XML(dom_node_set_name, "text")
{
CHECK(doc.child("node").set_name("n"));
CHECK(!doc.child("node").first_child().set_name("n"));
CHECK(!xml_node().set_name("n"));
CHECK_NODE(doc, "text");
}
TEST_XML(dom_node_set_value, "text")
{
CHECK(doc.child("node").first_child().set_value("no text"));
CHECK(!doc.child("node").set_value("no text"));
CHECK(!xml_node().set_value("no 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, "");
}