Newer
Older
#include "common.hpp"
#include <limits>
TEST_XML(dom_attr_assign, "<node/>")
{
xml_node node = doc.child(STR("node"));
node.append_attribute(STR("attr1")) = STR("v1");
xml_attribute() = STR("v1");
node.append_attribute(STR("attr2")) = -2147483647;
node.append_attribute(STR("attr3")) = -2147483647 - 1;
xml_attribute() = -2147483647 - 1;
node.append_attribute(STR("attr4")) = 4294967295u;
node.append_attribute(STR("attr5")) = 4294967294u;
Arseny Kapoulkine
committed
xml_attribute() = 4294967295u;
node.append_attribute(STR("attr6")) = 0.5;
xml_attribute() = 0.5;
node.append_attribute(STR("attr7")) = 0.25f;
xml_attribute() = 0.25f;
node.append_attribute(STR("attr8")) = true;
xml_attribute() = true;
CHECK_NODE(node, STR("<node attr1=\"v1\" attr2=\"-2147483647\" attr3=\"-2147483648\" attr4=\"4294967295\" attr5=\"4294967294\" attr6=\"0.5\" attr7=\"0.25\" attr8=\"true\"/>"));
TEST_XML(dom_attr_set_name, "<node attr='value' />")
{
xml_attribute attr = doc.child(STR("node")).attribute(STR("attr"));
CHECK(attr.set_name(STR("n")));
CHECK(!xml_attribute().set_name(STR("n")));
CHECK_NODE(doc, STR("<node n=\"value\"/>"));
TEST_XML(dom_attr_set_value, "<node/>")
{
xml_node node = doc.child(STR("node"));
CHECK(node.append_attribute(STR("attr1")).set_value(STR("v1")));
CHECK(!xml_attribute().set_value(STR("v1")));
CHECK(node.append_attribute(STR("attr2")).set_value(-2147483647));
CHECK(node.append_attribute(STR("attr3")).set_value(-2147483647 - 1));
CHECK(!xml_attribute().set_value(-2147483647));
CHECK(node.append_attribute(STR("attr4")).set_value(4294967295u));
CHECK(node.append_attribute(STR("attr5")).set_value(4294967294u));
CHECK(!xml_attribute().set_value(4294967295u));
CHECK(node.append_attribute(STR("attr6")).set_value(0.5));
CHECK(!xml_attribute().set_value(0.5));
CHECK(node.append_attribute(STR("attr7")).set_value(0.25f));
CHECK(!xml_attribute().set_value(0.25f));
CHECK(node.append_attribute(STR("attr8")).set_value(true));
CHECK(!xml_attribute().set_value(true));
CHECK_NODE(node, STR("<node attr1=\"v1\" attr2=\"-2147483647\" attr3=\"-2147483648\" attr4=\"4294967295\" attr5=\"4294967294\" attr6=\"0.5\" attr7=\"0.25\" attr8=\"true\"/>"));
#if LONG_MAX > 2147483647
TEST_XML(dom_attr_assign_long, "<node/>")
{
xml_node node = doc.child(STR("node"));
node.append_attribute(STR("attr1")) = -9223372036854775807l;
node.append_attribute(STR("attr2")) = -9223372036854775807l - 1;
xml_attribute() = -9223372036854775807l - 1;
node.append_attribute(STR("attr3")) = 18446744073709551615ul;
node.append_attribute(STR("attr4")) = 18446744073709551614ul;
xml_attribute() = 18446744073709551615ul;
CHECK_NODE(node, STR("<node attr1=\"-9223372036854775807\" attr2=\"-9223372036854775808\" attr3=\"18446744073709551615\" attr4=\"18446744073709551614\"/>"));
}
TEST_XML(dom_attr_set_value_long, "<node/>")
{
xml_node node = doc.child(STR("node"));
CHECK(node.append_attribute(STR("attr1")).set_value(-9223372036854775807l));
CHECK(node.append_attribute(STR("attr2")).set_value(-9223372036854775807l - 1));
CHECK(!xml_attribute().set_value(-9223372036854775807l - 1));
CHECK(node.append_attribute(STR("attr3")).set_value(18446744073709551615ul));
CHECK(node.append_attribute(STR("attr4")).set_value(18446744073709551614ul));
CHECK(!xml_attribute().set_value(18446744073709551615ul));
CHECK_NODE(node, STR("<node attr1=\"-9223372036854775807\" attr2=\"-9223372036854775808\" attr3=\"18446744073709551615\" attr4=\"18446744073709551614\"/>"));
}
#else
TEST_XML(dom_attr_assign_long, "<node/>")
{
xml_node node = doc.child(STR("node"));
node.append_attribute(STR("attr1")) = -2147483647l;
node.append_attribute(STR("attr2")) = -2147483647l - 1;
xml_attribute() = -2147483647l - 1;
node.append_attribute(STR("attr3")) = 4294967295ul;
node.append_attribute(STR("attr4")) = 4294967294ul;
xml_attribute() = 4294967295ul;
CHECK_NODE(node, STR("<node attr1=\"-2147483647\" attr2=\"-2147483648\" attr3=\"4294967295\" attr4=\"4294967294\"/>"));
}
TEST_XML(dom_attr_set_value_long, "<node/>")
{
xml_node node = doc.child(STR("node"));
CHECK(node.append_attribute(STR("attr1")).set_value(-2147483647l));
CHECK(node.append_attribute(STR("attr2")).set_value(-2147483647l - 1));
CHECK(!xml_attribute().set_value(-2147483647l - 1));
CHECK(node.append_attribute(STR("attr3")).set_value(4294967295ul));
CHECK(node.append_attribute(STR("attr4")).set_value(4294967294ul));
CHECK(!xml_attribute().set_value(4294967295ul));
CHECK_NODE(node, STR("<node attr1=\"-2147483647\" attr2=\"-2147483648\" attr3=\"4294967295\" attr4=\"4294967294\"/>"));
Arseny Kapoulkine
committed
#ifdef PUGIXML_HAS_LONG_LONG
TEST_XML(dom_attr_assign_llong, "<node/>")
{
xml_node node = doc.child(STR("node"));
Arseny Kapoulkine
committed
node.append_attribute(STR("attr1")) = -9223372036854775807ll;
node.append_attribute(STR("attr2")) = -9223372036854775807ll - 1;
xml_attribute() = -9223372036854775807ll - 1;
node.append_attribute(STR("attr3")) = 18446744073709551615ull;
node.append_attribute(STR("attr4")) = 18446744073709551614ull;
xml_attribute() = 18446744073709551615ull;
CHECK_NODE(node, STR("<node attr1=\"-9223372036854775807\" attr2=\"-9223372036854775808\" attr3=\"18446744073709551615\" attr4=\"18446744073709551614\"/>"));
Arseny Kapoulkine
committed
}
TEST_XML(dom_attr_set_value_llong, "<node/>")
{
xml_node node = doc.child(STR("node"));
Arseny Kapoulkine
committed
CHECK(node.append_attribute(STR("attr1")).set_value(-9223372036854775807ll));
CHECK(node.append_attribute(STR("attr2")).set_value(-9223372036854775807ll - 1));
CHECK(!xml_attribute().set_value(-9223372036854775807ll - 1));
CHECK(node.append_attribute(STR("attr3")).set_value(18446744073709551615ull));
CHECK(node.append_attribute(STR("attr4")).set_value(18446744073709551614ull));
CHECK(!xml_attribute().set_value(18446744073709551615ull));
CHECK_NODE(node, STR("<node attr1=\"-9223372036854775807\" attr2=\"-9223372036854775808\" attr3=\"18446744073709551615\" attr4=\"18446744073709551614\"/>"));
Arseny Kapoulkine
committed
}
#endif
TEST_XML(dom_attr_assign_large_number_float, "<node attr='' />")
{
xml_node node = doc.child(STR("node"));
node.attribute(STR("attr")) = std::numeric_limits<float>::max();
CHECK(test_node(node, STR("<node attr=\"3.40282347e+038\"/>"), STR(""), pugi::format_raw) ||
test_node(node, STR("<node attr=\"3.40282347e+38\"/>"), STR(""), pugi::format_raw));
}
TEST_XML(dom_attr_assign_large_number_double, "<node attr='' />")
{
xml_node node = doc.child(STR("node"));
node.attribute(STR("attr")) = std::numeric_limits<double>::max();
// Borland C does not print double values with enough precision
#ifdef __BORLANDC__
CHECK_NODE(node, STR("<node attr=\"1.7976931348623156e+308\"/>"));
CHECK_NODE(node, STR("<node attr=\"1.7976931348623157e+308\"/>"));
TEST_XML(dom_node_set_name, "<node>text</node>")
{
CHECK(doc.child(STR("node")).set_name(STR("n")));
CHECK(!doc.child(STR("node")).first_child().set_name(STR("n")));
CHECK(!xml_node().set_name(STR("n")));
CHECK_NODE(doc, STR("<n>text</n>"));
}
Loading
Loading full blame...