From 97a761615f6db3be5f87b258e5288c09d445942c Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Sun, 30 May 2010 20:17:05 +0000 Subject: tests: Extended wchar_t mode tests (broken UTF16 test, some tests were erroneously utf8-only), added final Xalan tests git-svn-id: http://pugixml.googlecode.com/svn/trunk@475 99668b35-9821-0410-8761-19e4c4f06640 --- tests/test_write.cpp | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) (limited to 'tests/test_write.cpp') diff --git a/tests/test_write.cpp b/tests/test_write.cpp index 64e50b5..cb75c74 100644 --- a/tests/test_write.cpp +++ b/tests/test_write.cpp @@ -179,6 +179,26 @@ TEST(write_encoding_huge) CHECK(test_write_narrow(doc, format_default, encoding_utf8, s_utf8.c_str(), s_utf8.length())); } + +TEST(write_encoding_huge_invalid) +{ + size_t wcharsize = sizeof(wchar_t); + + if (wcharsize == 2) + { + const unsigned int N = 16000; + + // make a large utf16 name consisting of leading surrogate chars + std::basic_string s_utf16; + + for (unsigned int i = 0; i < N; ++i) s_utf16 += static_cast(0xd852); + + xml_document doc; + doc.append_child().set_name(s_utf16.c_str()); + + CHECK(test_write_narrow(doc, format_default, encoding_utf8, "< />\n", 5)); + } +} #else TEST(write_encoding_huge) { @@ -208,14 +228,12 @@ TEST(write_encoding_huge_invalid) const unsigned int N = 16000; // make a large utf8 name consisting of non-leading chars - std::string s_utf8 = "<"; + std::string s_utf8; for (unsigned int i = 0; i < N; ++i) s_utf8 += "\x82"; - s_utf8 += "/>"; - xml_document doc; - CHECK(doc.load_buffer(&s_utf8[0], s_utf8.length(), parse_default, encoding_utf8)); + doc.append_child().set_name(s_utf8.c_str()); std::string s_utf16 = std::string("\x00<\x00 \x00/\x00>\x00\n", 10); @@ -305,16 +323,17 @@ TEST(write_unicode_invalid_utf8) // invalid 5-byte input CHECK(test_write_unicode_invalid("a\xf8_", L"a_")); } +#endif TEST(write_no_name_element) { xml_document doc; xml_node root = doc.append_child(); root.append_child(); - root.append_child().append_child(node_pcdata).set_value("text"); + root.append_child().append_child(node_pcdata).set_value(STR("text")); - CHECK_NODE(doc, "<:anonymous><:anonymous /><:anonymous>text"); - CHECK_NODE_EX(doc, "<:anonymous>\n\t<:anonymous />\n\t<:anonymous>text\n\n", "\t", format_default); + CHECK_NODE(doc, STR("<:anonymous><:anonymous /><:anonymous>text")); + CHECK_NODE_EX(doc, STR("<:anonymous>\n\t<:anonymous />\n\t<:anonymous>text\n\n"), STR("\t"), format_default); } TEST(write_no_name_pi) @@ -322,16 +341,14 @@ TEST(write_no_name_pi) xml_document doc; doc.append_child(node_pi); - CHECK_NODE(doc, ""); + CHECK_NODE(doc, STR("")); } TEST(write_no_name_attribute) { xml_document doc; - doc.append_child().set_name("root"); - doc.child("root").append_attribute(""); + doc.append_child().set_name(STR("root")); + doc.child(STR("root")).append_attribute(STR("")); - CHECK_NODE(doc, ""); + CHECK_NODE(doc, STR("")); } - -#endif -- cgit v1.2.3