summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArseny Kapoulkine <arseny.kapoulkine@gmail.com>2014-10-26 03:46:28 +0000
committerArseny Kapoulkine <arseny.kapoulkine@gmail.com>2014-10-26 03:46:28 +0000
commit0e59ea8234e8365a67cd7c35d9cf6eaaec41996b (patch)
tree61f9f82a3c3504656ed14c49843ac0e55d554130
parent0b7964917cbfd9d007c8a017eaced636f53ddeb3 (diff)
tests: Add a way for tests to verify allocation failure
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1081 99668b35-9821-0410-8761-19e4c4f06640
-rw-r--r--tests/main.cpp6
-rw-r--r--tests/test.hpp1
2 files changed, 7 insertions, 0 deletions
diff --git a/tests/main.cpp b/tests/main.cpp
index 75b0108..c4c9341 100644
--- a/tests/main.cpp
+++ b/tests/main.cpp
@@ -20,6 +20,7 @@
test_runner* test_runner::_tests = 0;
size_t test_runner::_memory_fail_threshold = 0;
+bool test_runner::_memory_fail_triggered = false;
jmp_buf test_runner::_failure_buffer;
const char* test_runner::_failure_message;
const char* test_runner::_temp_path;
@@ -30,7 +31,11 @@ static size_t g_memory_total_count = 0;
static void* custom_allocate(size_t size)
{
if (test_runner::_memory_fail_threshold > 0 && test_runner::_memory_fail_threshold < g_memory_total_size + size)
+ {
+ test_runner::_memory_fail_triggered = true;
+
return 0;
+ }
else
{
void* ptr = memory_allocate(size);
@@ -84,6 +89,7 @@ static bool run_test(test_runner* test)
g_memory_total_size = 0;
g_memory_total_count = 0;
test_runner::_memory_fail_threshold = 0;
+ test_runner::_memory_fail_triggered = false;
pugi::set_memory_management_functions(custom_allocate, custom_deallocate);
diff --git a/tests/test.hpp b/tests/test.hpp
index 26260ad..509b0cd 100644
--- a/tests/test.hpp
+++ b/tests/test.hpp
@@ -23,6 +23,7 @@ struct test_runner
static test_runner* _tests;
static size_t _memory_fail_threshold;
+ static bool _memory_fail_triggered;
static jmp_buf _failure_buffer;
static const char* _failure_message;