summaryrefslogtreecommitdiffstats
path: root/tests/auto/exceptionsafety_objects/tst_exceptionsafety_objects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/exceptionsafety_objects/tst_exceptionsafety_objects.cpp')
-rw-r--r--tests/auto/exceptionsafety_objects/tst_exceptionsafety_objects.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/auto/exceptionsafety_objects/tst_exceptionsafety_objects.cpp b/tests/auto/exceptionsafety_objects/tst_exceptionsafety_objects.cpp
index 4433c7a..91d1a44 100644
--- a/tests/auto/exceptionsafety_objects/tst_exceptionsafety_objects.cpp
+++ b/tests/auto/exceptionsafety_objects/tst_exceptionsafety_objects.cpp
@@ -43,6 +43,7 @@
#include <QtTest/QtTest>
#include <stddef.h>
+#include <exception>
QT_USE_NAMESPACE
@@ -285,8 +286,26 @@ void tst_ExceptionSafetyObjects::safeMessageHandler(QtMsgType type, const char *
allocFailer.reactivateAt(currentIndex);
}
+typedef void (*PVF)();
+PVF defaultTerminate;
+void debugTerminate()
+{
+ // you can detect uncaught exceptions with a breakpoint in here
+ (*defaultTerminate)();
+}
+
+PVF defaultUnexpected;
+void debugUnexpected()
+{
+ // you can detect unexpected exceptions with a breakpoint in here
+ (*defaultUnexpected)();
+}
+
void tst_ExceptionSafetyObjects::initTestCase()
{
+ // set handlers for bad exception cases, you might want to step in and breakpoint the default handlers too
+ defaultTerminate = std::set_terminate(&debugTerminate);
+ defaultUnexpected = std::set_unexpected(&debugUnexpected);
testMessageHandler = qInstallMsgHandler(safeMessageHandler);
QVERIFY(AllocFailer::initialize());