diff --git a/tests/test_write.cpp b/tests/test_write.cpp
index 5cd92a552e07bee8b545c8aace5d16e335ae2951..e59b7ab16a4ecb20e485f4768639ca9d4bf1d20a 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
 {