Add .what() to error message when standard exception is raised in CHECK_CLOSE.
diff --git a/src/CheckMacros.h b/src/CheckMacros.h
index c8e6e34..65be97a 100644
--- a/src/CheckMacros.h
+++ b/src/CheckMacros.h
@@ -81,6 +81,13 @@
({ \
UnitTest::CheckClose(*UnitTest::CurrentTest::Results(), expected, actual, tolerance, UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__)); \
}) \
+ UT_CATCH (std::exception, e, \
+ { \
+ UnitTest::MemoryOutStream message; \
+ message << "Unhandled exception (" << e.what() << ") in CHECK_CLOSE(" #expected ", " #actual ")"; \
+ UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
+ message.GetText()); \
+ }) \
UT_CATCH_ALL \
({ \
UnitTest::CurrentTest::Results()->OnTestFailure(UnitTest::TestDetails(*UnitTest::CurrentTest::Details(), __LINE__), \
diff --git a/src/tests/TestExceptions.cpp b/src/tests/TestExceptions.cpp
index d8e1c6f..ff3b597 100644
--- a/src/tests/TestExceptions.cpp
+++ b/src/tests/TestExceptions.cpp
@@ -156,6 +156,18 @@
CHECK(strstr(reporter.lastFailedMessage, "1.0001f"));
}
+TEST(CheckCloseFailureBecauseOfStandardExceptionIncludesWhat)
+{
+ RecordingReporter reporter;
+ {
+ UnitTest::TestResults testResults(&reporter);
+ ScopedCurrentTest scopedResults(testResults);
+ CHECK_CLOSE((float)ThrowingFunction(), 1.0001f, 0.1f);
+ }
+
+ CHECK(strstr(reporter.lastFailedMessage, "exception (Doh)"));
+}
+
class ThrowingObject
{
public: