diff options
| author | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2015-04-10 22:26:57 -0700 | 
|---|---|---|
| committer | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2015-04-10 22:26:57 -0700 | 
| commit | e90d2ac8ba44fbcf4d5702643f708f2c86bde42e (patch) | |
| tree | a52fe8e4efee8176da169998c203c1a93f6a6ff1 /tests/test_write.cpp | |
| parent | 6457f0941204a79ec5ba359a12aa00bf06f0e621 (diff) | |
| parent | 405fefc8777c55900a4e44561b545a9abb5276ba (diff) | |
Merge branch 'master' into compact
Diffstat (limited to 'tests/test_write.cpp')
| -rw-r--r-- | tests/test_write.cpp | 55 | 
1 files changed, 50 insertions, 5 deletions
diff --git a/tests/test_write.cpp b/tests/test_write.cpp index 59cdb3e..ad6c409 100644 --- a/tests/test_write.cpp +++ b/tests/test_write.cpp @@ -22,19 +22,19 @@ TEST_XML(write_indent, "<node attr='1'><child><sub>text</sub></child></node>")  TEST_XML(write_pcdata, "<node attr='1'><child><sub/>text</child></node>")  { -	CHECK_NODE_EX(doc, STR("<node attr=\"1\">\n\t<child>\n\t\t<sub />\n\t\ttext\n\t</child>\n</node>\n"), STR("\t"), format_indent); +	CHECK_NODE_EX(doc, STR("<node attr=\"1\">\n\t<child>\n\t\t<sub />text</child>\n</node>\n"), STR("\t"), format_indent);  }  TEST_XML_FLAGS(write_cdata, "<![CDATA[value]]>", parse_cdata | parse_fragment)  {  	CHECK_NODE(doc, STR("<![CDATA[value]]>")); -	CHECK_NODE_EX(doc, STR("<![CDATA[value]]>\n"), STR(""), 0); +	CHECK_NODE_EX(doc, STR("<![CDATA[value]]>"), STR(""), 0);  }  TEST_XML_FLAGS(write_cdata_empty, "<![CDATA[]]>", parse_cdata | parse_fragment)  {  	CHECK_NODE(doc, STR("<![CDATA[]]>")); -	CHECK_NODE_EX(doc, STR("<![CDATA[]]>\n"), STR(""), 0); +	CHECK_NODE_EX(doc, STR("<![CDATA[]]>"), STR(""), 0);  }  TEST_XML_FLAGS(write_cdata_escape, "<![CDATA[value]]>", parse_cdata | parse_fragment) @@ -123,7 +123,7 @@ TEST(write_pi_invalid)  	node.set_name(STR("test"));  	node.set_value(STR("?")); -	CHECK_NODE(doc, STR("<?test ?" "?>")); +	CHECK_NODE(doc, STR("<?test ?") STR("?>"));  	node.set_value(STR("?>")); @@ -527,5 +527,50 @@ TEST(write_pcdata_null)  	doc.first_child().append_child(node_pcdata); -	CHECK_NODE_EX(doc, STR("<node>\n\t\n\t\n</node>\n"), STR("\t"), format_indent); +	CHECK_NODE_EX(doc, STR("<node></node>\n"), STR("\t"), format_indent); +} + +TEST(write_pcdata_whitespace_fixedpoint) +{ +	const char_t* data = STR("<node>  test  <child>\n  <sub/>\n   </child>\n</node>"); + +	static const unsigned int flags_parse[] = +	{ +		0, +		parse_ws_pcdata, +		parse_ws_pcdata_single, +		parse_trim_pcdata +	}; + +	static const unsigned int flags_format[] = +	{ +		0, +		format_raw, +		format_indent +	}; + +	for (unsigned int i = 0; i < sizeof(flags_parse) / sizeof(flags_parse[0]); ++i) +	{ +		xml_document doc; +		CHECK(doc.load_string(data, flags_parse[i])); + +		for (unsigned int j = 0; j < sizeof(flags_format) / sizeof(flags_format[0]); ++j) +		{ +			std::string saved = write_narrow(doc, flags_format[j], encoding_auto); + +			xml_document rdoc; +			CHECK(rdoc.load_buffer(&saved[0], saved.size(), flags_parse[i])); + +			std::string rsaved = write_narrow(rdoc, flags_format[j], encoding_auto); + +			CHECK(saved == rsaved); +		} +	} +} + +TEST_XML_FLAGS(write_mixed, "<node><child1/><child2>pre<![CDATA[data]]>mid<!--comment--><test/>post<?pi value?>fin</child2><child3/></node>", parse_full) +{ +	CHECK_NODE(doc, STR("<node><child1 /><child2>pre<![CDATA[data]]>mid<!--comment--><test />post<?pi value?>fin</child2><child3 /></node>")); +	CHECK_NODE_EX(doc, STR("<node>\n<child1 />\n<child2>pre<![CDATA[data]]>mid<!--comment-->\n<test />post<?pi value?>fin</child2>\n<child3 />\n</node>\n"), STR("\t"), 0); +	CHECK_NODE_EX(doc, STR("<node>\n\t<child1 />\n\t<child2>pre<![CDATA[data]]>mid<!--comment-->\n\t\t<test />post<?pi value?>fin</child2>\n\t<child3 />\n</node>\n"), STR("\t"), format_indent);  }  | 
