diff options
author | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2017-06-15 23:52:56 -0700 |
---|---|---|
committer | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2017-06-15 23:52:56 -0700 |
commit | d2892be902b9cabe6e3f5732b82f6f2bef8e7d2f (patch) | |
tree | 3504f7e343f12e53e7dc8f5f7b34b3d14f324aae /tests | |
parent | 95f013ba80fbe5a6c7423771d9c7715397f7585d (diff) |
tests: Add xml_buffered_writer coverage test
This test triggers flush() condition for each optimized write() method.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_write.cpp | 24 |
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 { |