- #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 "RequiredCheckException.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 
-       UNITTEST_IMPL_TRY({ testObject.RunImpl(); }) 
- #else 
-       UNITTEST_IMPL_TRY 
-          ({ 
-          UNITTEST_THROW_SIGNALS_POSIX_ONLY 
-          testObject.RunImpl(); 
-       }) 
- #endif 
-       UNITTEST_IMPL_CATCH(RequiredCheckException, e, { (void)e; }) 
-       UNITTEST_IMPL_CATCH(AssertException, e, { (void)e; }) 
-       UNITTEST_IMPL_CATCH(std::exception, e, 
-       { 
-          MemoryOutStream stream; 
-          stream << "Unhandled exception: " << e.what(); 
-          CurrentTest::Results()->OnTestFailure(details, stream.GetText()); 
-       }) 
-       UNITTEST_IMPL_CATCH_ALL 
-          ({ 
-          CurrentTest::Results()->OnTestFailure(details, "Unhandled exception: test crashed"); 
-       }) 
- #ifdef UNITTEST_NO_EXCEPTIONS 
-    } 
- #endif 
-    } 
-   
- } 
-   
- #endif 
-