From 1fdd096c8011446935396baf447bfed9331f3ff3 Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Thu, 29 Oct 2009 08:11:22 +0000 Subject: tests: Tests can work without exceptions now git-svn-id: http://pugixml.googlecode.com/svn/trunk@194 99668b35-9821-0410-8761-19e4c4f06640 --- tests/test.hpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'tests/test.hpp') diff --git a/tests/test.hpp b/tests/test.hpp index b1e470e..c59bb1c 100644 --- a/tests/test.hpp +++ b/tests/test.hpp @@ -1,12 +1,18 @@ #ifndef HEADER_TEST_HPP #define HEADER_TEST_HPP +#include "../src/pugixml.hpp" + +#if (defined(_MSC_VER) && _MSC_VER==1200) || defined(__DMC__) +typedef int intptr_t; +#endif + #include #include #include -#include +#include -#include "../src/pugixml.hpp" +#include inline bool test_string_equal(const char* lhs, const char* rhs) { @@ -103,6 +109,7 @@ struct test_runner static test_runner* _tests; static size_t _memory_fail_threshold; + static jmp_buf _failure; }; struct dummy_fixture {}; @@ -147,7 +154,7 @@ struct dummy_fixture {}; #define CHECK_JOIN(text, file, line) text file #line #define CHECK_JOIN2(text, file, line) CHECK_JOIN(text, file, line) -#define CHECK_TEXT(condition, text) if (condition) ; else throw CHECK_JOIN2(text, " at "__FILE__ ":", __LINE__) +#define CHECK_TEXT(condition, text) if (condition) ; else longjmp(test_runner::_failure, (int)(intptr_t)(CHECK_JOIN2(text, " at "__FILE__ ":", __LINE__))) #if defined(_MSC_VER) && _MSC_VER == 1200 # define STR(value) "??" // MSVC 6.0 has troubles stringizing stuff with strings w/escaping inside -- cgit v1.2.3