summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArseny Kapoulkine <arseny.kapoulkine@gmail.com>2017-06-16 17:08:00 -0700
committerArseny Kapoulkine <arseny.kapoulkine@gmail.com>2017-06-16 17:08:00 -0700
commit86593c0999a6652be8e93556149cdbfdf410512b (patch)
tree3bf9883b3f39687c462f5fcd7d0ecceb5cabf665
parent3aa2b40354208fd4171f5e4b2ddddaeb6ec881fb (diff)
tests: Add more stream coverage tests
Cover both char and wchar_t stream loading in a single run instead of using pugi::char_t.
-rw-r--r--tests/test_document.cpp36
1 files changed, 26 insertions, 10 deletions
diff --git a/tests/test_document.cpp b/tests/test_document.cpp
index 81c9014..bb5ed63 100644
--- a/tests/test_document.cpp
+++ b/tests/test_document.cpp
@@ -237,15 +237,27 @@ TEST(document_load_stream_nonseekable_out_of_memory)
CHECK_ALLOC_FAIL(CHECK(doc.load(in).status == status_out_of_memory));
}
+TEST(document_load_stream_wide_nonseekable_out_of_memory)
+{
+ wchar_t contents[] = L"<node />";
+ char_array_buffer<wchar_t> buffer(contents, contents + sizeof(contents) / sizeof(contents[0]));
+ std::basic_istream<wchar_t> in(&buffer);
+
+ test_runner::_memory_fail_threshold = 1;
+
+ pugi::xml_document doc;
+ CHECK_ALLOC_FAIL(CHECK(doc.load(in).status == status_out_of_memory));
+}
+
TEST(document_load_stream_nonseekable_out_of_memory_large)
{
- std::basic_string<pugi::char_t> str;
- str += STR("<node>");
- for (int i = 0; i < 10000; ++i) str += STR("<node />");
- str += STR("</node>");
+ std::basic_string<char> str;
+ str += "<node>";
+ for (int i = 0; i < 10000; ++i) str += "<node />";
+ str += "</node>";
- char_array_buffer<pugi::char_t> buffer(&str[0], &str[0] + str.length());
- std::basic_istream<pugi::char_t> in(&buffer);
+ char_array_buffer<char> buffer(&str[0], &str[0] + str.length());
+ std::basic_istream<char> in(&buffer);
test_runner::_memory_fail_threshold = 10000 * 8 * 3 / 2;
@@ -253,13 +265,17 @@ TEST(document_load_stream_nonseekable_out_of_memory_large)
CHECK_ALLOC_FAIL(CHECK(doc.load(in).status == status_out_of_memory));
}
-TEST(document_load_stream_wide_nonseekable_out_of_memory)
+TEST(document_load_stream_wide_nonseekable_out_of_memory_large)
{
- wchar_t contents[] = L"<node />";
- char_array_buffer<wchar_t> buffer(contents, contents + sizeof(contents) / sizeof(contents[0]));
+ std::basic_string<wchar_t> str;
+ str += L"<node>";
+ for (int i = 0; i < 10000; ++i) str += L"<node />";
+ str += L"</node>";
+
+ char_array_buffer<wchar_t> buffer(&str[0], &str[0] + str.length());
std::basic_istream<wchar_t> in(&buffer);
- test_runner::_memory_fail_threshold = 1;
+ test_runner::_memory_fail_threshold = 10000 * 8 * 3 / 2;
pugi::xml_document doc;
CHECK_ALLOC_FAIL(CHECK(doc.load(in).status == status_out_of_memory));