tests: Add a test for throwing from xml_writer::write

We currently don't allocate/modify any state so there are no issues with this.
This commit is contained in:
Arseny Kapoulkine 2015-04-11 22:44:42 -07:00
parent e2e5bc906a
commit 37467c13bf

View file

@ -574,3 +574,41 @@ TEST_XML_FLAGS(write_mixed, "<node><child1/><child2>pre<![CDATA[data]]>mid<!--co
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);
}
#ifndef PUGIXML_NO_EXCEPTIONS
struct throwing_writer: pugi::xml_writer
{
virtual void write(const void*, size_t)
{
throw std::runtime_error("write failed");
}
};
TEST_XML(write_throw_simple, "<node><child/></node>")
{
try
{
throwing_writer w;
doc.print(w);
CHECK_FORCE_FAIL("Expected exception");
}
catch (std::runtime_error&)
{
}
}
TEST_XML(write_throw_encoding, "<node><child/></node>")
{
try
{
throwing_writer w;
doc.print(w, STR("\t"), format_default, encoding_utf32_be);
CHECK_FORCE_FAIL("Expected exception");
}
catch (std::runtime_error&)
{
}
}
#endif