diff --git a/tests/test_dom_text.cpp b/tests/test_dom_text.cpp
index 84815d6..7b51a6b 100644
--- a/tests/test_dom_text.cpp
+++ b/tests/test_dom_text.cpp
@@ -21,7 +21,7 @@ TEST_XML(dom_text_bool_ops, "foo")
generic_bool_ops_test(doc.child(STR("node")).text());
}
-TEST_XML_FLAGS(dom_text_get, "foo", parse_default | parse_pi)
+TEST_XML_FLAGS(dom_text_get, "foo", parse_default | parse_pi)
{
xml_node node = doc.child(STR("node"));
@@ -29,7 +29,7 @@ TEST_XML_FLAGS(dom_text_get, "foo01true")
+{
+ xml_node node = doc.child(STR("node"));
+ xml_text t = node.text();
+
+ CHECK(!t);
+ CHECK(t.get() && *t.get() == 0);
+ CHECK(!node.first_child());
+
+ node.append_child(node_pcdata);
+
+ CHECK(t);
+ CHECK_STRING(t.get(), STR(""));
+
+ node.first_child().set_value(STR("test"));
+
+ CHECK(t);
+ CHECK_STRING(t.get(), STR("test"));
+}
+
+TEST_XML(dom_text_set, "")
+{
+ xml_node node = doc.child(STR("node"));
+ xml_text t = node.text();
+
+ t.set(STR(""));
+ CHECK(node.first_child().type() == node_pcdata);
+ CHECK_NODE(node, STR(""));
+
+ t.set(STR("boo"));
+ CHECK(node.first_child().type() == node_pcdata);
+ CHECK(node.first_child() == node.last_child());
+ CHECK_NODE(node, STR("boo"));
+
+ t.set(STR("foobarfoobar"));
+ CHECK(node.first_child().type() == node_pcdata);
+ CHECK(node.first_child() == node.last_child());
+ CHECK_NODE(node, STR("foobarfoobar"));
+}
+
+TEST_XML(dom_text_assign, "")
+{
+ xml_node node = doc.child(STR("node"));
+
+ node.append_child(STR("text1")).text() = STR("v1");
+ xml_text() = STR("v1");
+
+ node.append_child(STR("text2")).text() = -2147483647;
+ node.append_child(STR("text3")).text() = -2147483647 - 1;
+ xml_text() = -2147483647 - 1;
+
+ node.append_child(STR("text4")).text() = 4294967295u;
+ node.append_child(STR("text5")).text() = 4294967294u;
+ xml_text() = 2147483647;
+
+ node.append_child(STR("text6")).text() = 0.5;
+ xml_text() = 0.5;
+
+ node.append_child(STR("text7")).text() = true;
+ xml_text() = true;
+
+ CHECK_NODE(node, STR("v1-2147483647-2147483648429496729542949672940.5true"));
+}
+
+TEST_XML(dom_text_set_value, "")
+{
+ xml_node node = doc.child(STR("node"));
+
+ CHECK(node.append_child(STR("text1")).text().set(STR("v1")));
+ CHECK(!xml_text().set(STR("v1")));
+
+ CHECK(node.append_child(STR("text2")).text().set(-2147483647));
+ CHECK(node.append_child(STR("text3")).text().set(-2147483647 - 1));
+ CHECK(!xml_text().set(-2147483647 - 1));
+
+ CHECK(node.append_child(STR("text4")).text().set(4294967295u));
+ CHECK(node.append_child(STR("text5")).text().set(4294967294u));
+ CHECK(!xml_text().set(2147483647));
+
+ CHECK(node.append_child(STR("text6")).text().set(0.5));
+ CHECK(!xml_text().set(0.5));
+
+ CHECK(node.append_child(STR("text7")).text().set(true));
+ CHECK(!xml_text().set(true));
+
+ CHECK_NODE(node, STR("v1-2147483647-2147483648429496729542949672940.5true"));
+}
+
+TEST_XML(dom_text_middle, "notthisonetext")
+{
+ xml_node node = doc.child(STR("node"));
+ xml_text t = node.text();
+
+ CHECK_STRING(t.get(), STR("text"));
+ t.set(STR("notext"));
+
+ CHECK_NODE(node, STR("notthisonenotext"));
+ CHECK(node.remove_child(t.data()));
+
+ CHECK(!t);
+ CHECK_NODE(node, STR("notthisone"));
+
+ t.set(STR("yestext"));
+
+ CHECK(t);
+ CHECK_NODE(node, STR("notthisoneyestext"));
+ CHECK(t.data() == node.last_child());
+}
+
+TEST_XML_FLAGS(dom_text_data, "foo", parse_default | parse_pi)
+{
+ xml_node node = doc.child(STR("node"));
+
+ CHECK(node.child(STR("a")).text().data() == node.child(STR("a")).first_child());
+ CHECK(node.child(STR("b")).text().data() == node.child(STR("b")).first_child());
+ CHECK(!node.child(STR("c")).text().data());
+ CHECK(!node.child(STR("d")).text().data());
+ CHECK(!xml_text().data());
+}
+