Add exception message and test name to std::cout when a test fails

-- '*' doesn't help much when debugging
This commit is contained in:
Crzyrndm 2018-06-18 18:43:36 +12:00
parent 92ae444791
commit cfef764ab9
2 changed files with 55 additions and 17 deletions

View File

@ -3,26 +3,55 @@
#include <cmath>
#include <exception>
#define xlnt_assert(expression) do\
{\
try { if (expression) break; }\
catch (...) {}\
throw xlnt::exception("test failed");\
#define XLNT_STRINGIFYX(x) #x
#define XLNT_STRINGIFY(x) XLNT_STRINGIFYX(x)
#define xlnt_assert(expression) \
do \
{ \
try \
{ \
if (expression) break; \
} \
catch (std::exception & ex) \
{ \
throw ex; \
} \
catch (...) \
{ \
} \
throw xlnt::exception("test failed -> " XLNT_STRINGIFY(expression)); \
} while (false)
#define xlnt_assert_throws_nothing(expression) do\
{\
try { expression; break; }\
catch (...) {}\
throw xlnt::exception("test failed");\
#define xlnt_assert_throws_nothing(expression) \
do \
{ \
try \
{ \
expression; \
break; \
} \
catch (...) \
{ \
} \
throw xlnt::exception("test failed -> " XLNT_STRINGIFY(expression)); \
} while (false)
#define xlnt_assert_throws(expression, exception_type) do\
{\
try { expression; }\
catch (exception_type) { break; }\
catch (...) {}\
throw xlnt::exception("test failed");\
#define xlnt_assert_throws(expression, exception_type) \
do \
{ \
try \
{ \
expression; \
} \
catch (exception_type) \
{ \
break; \
} \
catch (...) \
{ \
} \
throw xlnt::exception("test failed -> " XLNT_STRINGIFY(expression)); \
} while (false)
#define xlnt_assert_equals(left, right) xlnt_assert(left == right)

View File

@ -39,9 +39,18 @@ public:
std::cout << ".";
status.tests_passed++;
}
catch (std::exception &ex)
{
std::cout << "*\n"
<< test.second << " failed with:\n"
<< ex.what() << '\n';
status.tests_failed++;
status.failures.push_back(test.second);
}
catch (...)
{
std::cout << "*";
std::cout << "*\n"
<< test.second << " failed" << '\n';
status.tests_failed++;
status.failures.push_back(test.second);
}