summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/unittest-cpp/UnitTest++/ExecuteTest.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/unittest-cpp/UnitTest++/ExecuteTest.h')
-rw-r--r--3rdparty/unittest-cpp/UnitTest++/ExecuteTest.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/3rdparty/unittest-cpp/UnitTest++/ExecuteTest.h b/3rdparty/unittest-cpp/UnitTest++/ExecuteTest.h
new file mode 100644
index 00000000000..d683dc0c172
--- /dev/null
+++ b/3rdparty/unittest-cpp/UnitTest++/ExecuteTest.h
@@ -0,0 +1,59 @@
+#ifndef UNITTEST_EXECUTE_TEST_H
+#define UNITTEST_EXECUTE_TEST_H
+
+#include "Config.h"
+#include "ExceptionMacros.h"
+#include "TestDetails.h"
+#include "TestResults.h"
+#include "MemoryOutStream.h"
+#include "AssertException.h"
+#include "CurrentTest.h"
+
+#ifdef UNITTEST_NO_EXCEPTIONS
+ #include "ReportAssertImpl.h"
+#endif
+
+#ifdef UNITTEST_POSIX
+ #include "Posix/SignalTranslator.h"
+#endif
+
+namespace UnitTest {
+
+template< typename T >
+void ExecuteTest(T& testObject, TestDetails const& details, bool isMockTest)
+{
+ if (isMockTest == false)
+ CurrentTest::Details() = &details;
+
+#ifdef UNITTEST_NO_EXCEPTIONS
+ if (UNITTEST_SET_ASSERT_JUMP_TARGET() == 0)
+ {
+#endif
+#ifndef UNITTEST_POSIX
+ UT_TRY({ testObject.RunImpl(); })
+#else
+ UT_TRY
+ ({
+ UNITTEST_THROW_SIGNALS_POSIX_ONLY
+ testObject.RunImpl();
+ })
+#endif
+ UT_CATCH(AssertException, e, { (void)e; })
+ UT_CATCH(std::exception, e,
+ {
+ MemoryOutStream stream;
+ stream << "Unhandled exception: " << e.what();
+ CurrentTest::Results()->OnTestFailure(details, stream.GetText());
+ })
+ UT_CATCH_ALL
+ ({
+ CurrentTest::Results()->OnTestFailure(details, "Unhandled exception: test crashed");
+ })
+#ifdef UNITTEST_NO_EXCEPTIONS
+ }
+#endif
+}
+
+}
+
+#endif