From f9bbc39bd9a14124c1cba696c99d051a39e34b60 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sat, 8 Feb 2014 20:36:09 +0000 Subject: Implement long long support if PUGIXML_HAS_LONG_LONG is defined (autodetection is not implemented yet) git-svn-id: http://pugixml.googlecode.com/svn/trunk@962 99668b35-9821-0410-8761-19e4c4f06640 --- tests/test_dom_text.cpp | 91 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 89 insertions(+), 2 deletions(-) (limited to 'tests/test_dom_text.cpp') diff --git a/tests/test_dom_text.cpp b/tests/test_dom_text.cpp index 2e38f29..fb65b03 100644 --- a/tests/test_dom_text.cpp +++ b/tests/test_dom_text.cpp @@ -155,6 +155,56 @@ TEST_XML(dom_text_as_bool, "01true1-1-922337203685477580892233720368547758070") +{ + xml_node node = doc.child(STR("node")); + + CHECK(xml_text().as_llong() == 0); + CHECK(node.child(STR("text1")).text().as_llong() == 1); + CHECK(node.child(STR("text2")).text().as_llong() == -1); + CHECK(node.child(STR("text3")).text().as_llong() == -9223372036854775807ll - 1); + CHECK(node.child(STR("text4")).text().as_llong() == 9223372036854775807ll); + CHECK(node.child(STR("text5")).text().as_llong() == 0); +} + +TEST_XML(dom_text_as_llong_hex, "07770x5ab0XFf-0x20-0x80000000000000000x") +{ + xml_node node = doc.child(STR("node")); + + CHECK(node.child(STR("text1")).text().as_llong() == 777); // no octal support! intentional + CHECK(node.child(STR("text2")).text().as_llong() == 1451); + CHECK(node.child(STR("text3")).text().as_llong() == 255); + CHECK(node.child(STR("text4")).text().as_llong() == -32); + CHECK(node.child(STR("text5")).text().as_llong() == -9223372036854775807ll - 1); + CHECK(node.child(STR("text6")).text().as_llong() == 0); +} + +TEST_XML(dom_text_as_ullong, "019223372036854775807184467440737095516150") +{ + xml_node node = doc.child(STR("node")); + + CHECK(xml_text().as_ullong() == 0); + CHECK(node.child(STR("text1")).text().as_ullong() == 0); + CHECK(node.child(STR("text2")).text().as_ullong() == 1); + CHECK(node.child(STR("text3")).text().as_ullong() == 9223372036854775807ll); + CHECK(node.child(STR("text4")).text().as_ullong() == 18446744073709551615ull); + CHECK(node.child(STR("text5")).text().as_ullong() == 0); +} + +TEST_XML(dom_text_as_ullong_hex, "07770x5ab0XFf0x200xFFFFFFFFFFFFFFFF0x") +{ + xml_node node = doc.child(STR("node")); + + CHECK(node.child(STR("text1")).text().as_ullong() == 777); // no octal support! intentional + CHECK(node.child(STR("text2")).text().as_ullong() == 1451); + CHECK(node.child(STR("text3")).text().as_ullong() == 255); + CHECK(node.child(STR("text4")).text().as_ullong() == 32); + CHECK(node.child(STR("text5")).text().as_ullong() == 18446744073709551615ull); + CHECK(node.child(STR("text6")).text().as_ullong() == 0); +} +#endif + TEST_XML(dom_text_get_no_state, "") { xml_node node = doc.child(STR("node")); @@ -208,7 +258,7 @@ TEST_XML(dom_text_assign, "") node.append_child(STR("text4")).text() = 4294967295u; node.append_child(STR("text5")).text() = 4294967294u; - xml_text() = 2147483647; + xml_text() = 4294967295u; node.append_child(STR("text6")).text() = 0.5; xml_text() = 0.5; @@ -232,7 +282,7 @@ TEST_XML(dom_text_set_value, "") CHECK(node.append_child(STR("text4")).text().set(4294967295u)); CHECK(node.append_child(STR("text5")).text().set(4294967294u)); - CHECK(!xml_text().set(2147483647)); + CHECK(!xml_text().set(4294967295u)); CHECK(node.append_child(STR("text6")).text().set(0.5)); CHECK(!xml_text().set(0.5)); @@ -243,6 +293,38 @@ TEST_XML(dom_text_set_value, "") CHECK_NODE(node, STR("v1-2147483647-2147483648429496729542949672940.5true")); } +#ifdef PUGIXML_HAS_LONG_LONG +TEST_XML(dom_text_assign_llong, "") +{ + xml_node node = doc.child(STR("node")); + + node.append_child(STR("text1")).text() = -9223372036854775807ll; + node.append_child(STR("text2")).text() = -9223372036854775807ll - 1; + xml_text() = -9223372036854775807ll - 1; + + node.append_child(STR("text3")).text() = 18446744073709551615ull; + node.append_child(STR("text4")).text() = 18446744073709551614ull; + xml_text() = 18446744073709551615ull; + + CHECK_NODE(node, STR("-9223372036854775807-92233720368547758081844674407370955161518446744073709551614")); +} + +TEST_XML(dom_text_set_value_llong, "") +{ + xml_node node = doc.child(STR("node")); + + CHECK(node.append_child(STR("text1")).text().set(-9223372036854775807ll)); + CHECK(node.append_child(STR("text2")).text().set(-9223372036854775807ll - 1)); + CHECK(!xml_text().set(-9223372036854775807ll - 1)); + + CHECK(node.append_child(STR("text3")).text().set(18446744073709551615ull)); + CHECK(node.append_child(STR("text4")).text().set(18446744073709551614ull)); + CHECK(!xml_text().set(18446744073709551615ull)); + + CHECK_NODE(node, STR("-9223372036854775807-92233720368547758081844674407370955161518446744073709551614")); +} +#endif + TEST_XML(dom_text_middle, "notthisonetext") { xml_node node = doc.child(STR("node")); @@ -285,4 +367,9 @@ TEST(dom_text_defaults) CHECK(text.as_double(42) == 42); CHECK(text.as_float(42) == 42); CHECK(text.as_bool(true) == true); + +#ifdef PUGIXML_HAS_LONG_LONG + CHECK(text.as_llong(42) == 42); + CHECK(text.as_ullong(42) == 42); +#endif } -- cgit v1.2.3