summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/test_write.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/test_write.cpp b/tests/test_write.cpp
index 5cd92a5..e59b7ab 100644
--- a/tests/test_write.cpp
+++ b/tests/test_write.cpp
@@ -639,6 +639,30 @@ TEST_XML_FLAGS(write_roundtrip, "<node><child1 attr1='value1' attr2='value2'/><c
}
}
+TEST(write_flush_coverage)
+{
+ xml_document doc;
+
+ // this creates a node that uses short sequences of lengths 1-6 for output
+ xml_node n = doc.append_child(STR("n"));
+ n.text().set(STR("<&\""));
+ n.append_child(node_comment);
+
+ xml_attribute a = n.append_attribute(STR("a"));
+
+ size_t basel = save_narrow(doc, 0, encoding_auto).size();
+ size_t bufl = 10240;
+
+ for (size_t l = 0; l <= basel; ++l)
+ {
+ std::basic_string<pugi::char_t> pad(bufl - l, STR('v'));
+ a.set_value(pad.c_str());
+
+ std::string s = save_narrow(doc, 0, encoding_auto);
+ CHECK(s.size() == basel + bufl - l);
+ }
+}
+
#ifndef PUGIXML_NO_EXCEPTIONS
struct throwing_writer: pugi::xml_writer
{