diff options
author | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2015-04-11 22:46:08 -0700 |
---|---|---|
committer | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2015-04-11 22:46:08 -0700 |
commit | 4e004176bacb0160007102742ec62e79a9d958bb (patch) | |
tree | e903e77b67e3a24c50238b7b60b223340fc52b8e /tests/test_xpath_parse.cpp | |
parent | 37467c13bfdfbdbee7cc5176a8755e04353a9deb (diff) |
tests: Improve out-of-memory tests
Previously there was no guarantee that the tests that check for out of memory
handling behavior are actually correct - e.g. that they correctly simulate out
of memory conditions.
Now every simulated out of memory condition has to be "guarded" using
CHECK_ALLOC_FAIL. It makes sure that every piece of code that is supposed to
cause out-of-memory does so, and that no other code runs out of memory
unnoticed.
Diffstat (limited to 'tests/test_xpath_parse.cpp')
-rw-r--r-- | tests/test_xpath_parse.cpp | 25 |
1 files changed, 3 insertions, 22 deletions
diff --git a/tests/test_xpath_parse.cpp b/tests/test_xpath_parse.cpp index 2c2af5a..b6de42e 100644 --- a/tests/test_xpath_parse.cpp +++ b/tests/test_xpath_parse.cpp @@ -272,44 +272,25 @@ TEST_XML(xpath_parse_absolute, "<div><s/></div>") CHECK_XPATH_NODESET(doc, STR("/*[/]")) % 2; } -#ifdef PUGIXML_NO_EXCEPTIONS -# define CHECK_XPATH_FAIL_OOM(query) CHECK_XPATH_FAIL(query) -#else -static void test_xpath_fail_oom(const char_t* query) -{ - try - { - pugi::xpath_query q(query); - - CHECK_FORCE_FAIL("Expected out of memory exception"); - } - catch (const std::bad_alloc&) - { - } -} - -# define CHECK_XPATH_FAIL_OOM(query) test_xpath_fail_oom(query) -#endif - TEST(xpath_parse_out_of_memory_first_page) { test_runner::_memory_fail_threshold = 1; - CHECK_XPATH_FAIL_OOM(STR("1")); + CHECK_ALLOC_FAIL(CHECK_XPATH_FAIL(STR("1"))); } TEST(xpath_parse_out_of_memory_second_page_node) { test_runner::_memory_fail_threshold = 8192; - CHECK_XPATH_FAIL_OOM(STR("1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1")); + CHECK_ALLOC_FAIL(CHECK_XPATH_FAIL(STR("1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"))); } TEST(xpath_parse_out_of_memory_string_to_number) { test_runner::_memory_fail_threshold = 4096 + 128; - CHECK_XPATH_FAIL_OOM(STR("0.11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111")); + CHECK_ALLOC_FAIL(CHECK_XPATH_FAIL(STR("0.11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"))); } TEST(xpath_parse_qname_error) |