- #include "UnitTest++/Config.h" 
- #include "UnitTest++/UnitTestPP.h" 
-   
- #include "UnitTest++/ReportAssert.h" 
- #include "UnitTest++/ReportAssertImpl.h" 
- #include "UnitTest++/AssertException.h" 
-   
- #include "RecordingReporter.h" 
- #include <csetjmp> 
-   
- using namespace UnitTest; 
-   
- namespace { 
-   
-    TEST(CanSetAssertExpected) 
-    { 
-       Detail::ExpectAssert(true); 
-       CHECK(Detail::AssertExpected()); 
-   
-       Detail::ExpectAssert(false); 
-       CHECK(!Detail::AssertExpected()); 
-    } 
-   
- #ifndef UNITTEST_NO_EXCEPTIONS 
-   
-    TEST(ReportAssertThrowsAssertException) 
-    { 
-       bool caught = false; 
-   
-       try 
-       { 
-          TestResults testResults; 
-          TestDetails testDetails("", "", "", 0); 
-          Detail::ReportAssertEx(&testResults, &testDetails, "", "", 0); 
-       } 
-       catch(AssertException const&) 
-       { 
-          caught = true; 
-       } 
-   
-       CHECK(true == caught); 
-    } 
-   
-    TEST(ReportAssertClearsExpectAssertFlag) 
-    { 
-       RecordingReporter reporter; 
-       TestResults testResults(&reporter); 
-       TestDetails testDetails("", "", "", 0); 
-   
-       try 
-       { 
-          Detail::ExpectAssert(true); 
-          Detail::ReportAssertEx(&testResults, &testDetails, "", "", 0); 
-       } 
-       catch(AssertException const&) 
-       {} 
-   
-       CHECK(Detail::AssertExpected() == false); 
-       CHECK_EQUAL(0, reporter.testFailedCount); 
-    } 
-   
-    TEST(ReportAssertWritesFailureToResultsAndDetailsWhenAssertIsNotExpected) 
-    { 
-       const int lineNumber = 12345; 
-       const char* description = "description"; 
-       const char* filename = "filename"; 
-   
-       RecordingReporter reporter; 
-       TestResults testResults(&reporter); 
-       TestDetails testDetails("", "", "", 0); 
-   
-       try 
-       { 
-          Detail::ReportAssertEx(&testResults, &testDetails, description, filename, lineNumber); 
-       } 
-       catch(AssertException const&) 
-       {} 
-   
-       CHECK_EQUAL(description, reporter.lastFailedMessage); 
-       CHECK_EQUAL(filename, reporter.lastFailedFile); 
-       CHECK_EQUAL(lineNumber, reporter.lastFailedLine); 
-    } 
-   
-    TEST(ReportAssertReportsNoErrorsWhenAssertIsExpected) 
-    { 
-       Detail::ExpectAssert(true); 
-   
-       RecordingReporter reporter; 
-       TestResults testResults(&reporter); 
-       TestDetails testDetails("", "", "", 0); 
-   
-       try 
-       { 
-          Detail::ReportAssertEx(&testResults, &testDetails, "", "", 0); 
-       } 
-       catch(AssertException const&) 
-       {} 
-   
-       CHECK_EQUAL(0, reporter.testFailedCount); 
-    } 
-   
-    TEST(CheckAssertMacroSetsAssertExpectationToFalseAfterRunning) 
-    { 
-       Detail::ExpectAssert(true); 
-       CHECK_ASSERT(ReportAssert("", "", 0)); 
-       CHECK(!Detail::AssertExpected()); 
-       Detail::ExpectAssert(false); 
-    } 
-   
- #else 
-   
-    TEST(SetAssertJumpTargetReturnsFalseWhenSettingJumpTarget) 
-    { 
-       CHECK(UNITTEST_SET_ASSERT_JUMP_TARGET() == false); 
-    } 
-   
-    TEST(JumpToAssertJumpTarget_JumpsToSetPoint_ReturnsTrue) 
-    { 
-       const volatile bool taken = !!UNITTEST_SET_ASSERT_JUMP_TARGET(); 
-   
-       volatile bool set = false; 
-       if (taken == false) 
-       { 
-          UNITTEST_JUMP_TO_ASSERT_JUMP_TARGET(); 
-          set = true; 
-       } 
-   
-       CHECK(set == false); 
-    } 
-   
- #endif 
-   
- } 
-