diff options
| -rw-r--r-- | tests/test_write.cpp | 25 | 
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/test_write.cpp b/tests/test_write.cpp index 8fbcc27..de77339 100644 --- a/tests/test_write.cpp +++ b/tests/test_write.cpp @@ -608,6 +608,31 @@ TEST_XML(write_no_empty_element_tags, "<node><child1/><child2>text</child2><chil  	CHECK_NODE_EX(doc, STR("<node>\n\t<child1></child1>\n\t<child2>text</child2>\n\t<child3></child3>\n</node>\n"), STR("\t"), format_indent | format_no_empty_element_tags);  } +TEST_XML_FLAGS(write_roundtrip, "<node><child1 attr1='value1' attr2='value2'/><child2 attr='value'>pre<![CDATA[data]]>mid<text&escape<!--comment--><test/>post<?pi value?>fin</child2><child3/></node>", parse_full) +{ +	const unsigned int flagset[] = { format_indent, format_raw, format_no_declaration, format_indent_attributes, format_no_empty_element_tags }; +	size_t flagcount = sizeof(flagset) / sizeof(flagset[0]); + +	for (size_t i = 0; i < size_t(1 << flagcount); ++i) +	{ +		unsigned int flags = 0; + +		for (size_t j = 0; j < flagcount; ++j) +			if (i & (1 << j)) +				flags |= flagset[j]; + +		std::string contents = write_narrow(doc, flags, encoding_utf8); + +		pugi::xml_document verify; +		CHECK(verify.load_buffer(contents.c_str(), contents.size(), parse_full)); +		CHECK(test_write_narrow(verify, flags, encoding_utf8, contents.c_str(), contents.size())); + +		pugi::xml_document verifyws; +		CHECK(verifyws.load_buffer(contents.c_str(), contents.size(), parse_full | parse_ws_pcdata)); +		CHECK(test_write_narrow(verifyws, flags, encoding_utf8, contents.c_str(), contents.size())); +	} +} +  #ifndef PUGIXML_NO_EXCEPTIONS  struct throwing_writer: pugi::xml_writer  {  | 
