mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Added CHECKED_IF and CHECKED_ELSE
This commit is contained in:
		| @@ -53,6 +53,8 @@ | ||||
|  | ||||
| #define CHECK( expr ) INTERNAL_CATCH_TEST( expr, false, false, "CHECK" ) | ||||
| #define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, true, false, "CHECK_FALSE" ) | ||||
| #define CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, false, false, "CHECKED_IF" ) | ||||
| #define CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, false, false, "CHECKED_ELSE" ) | ||||
|  | ||||
| #define CHECK_THROWS( expr )  INTERNAL_CATCH_THROWS( expr, ..., false, "CHECK_THROWS" ) | ||||
| #define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, false, "CHECK_THROWS_AS" ) | ||||
|   | ||||
| @@ -687,6 +687,16 @@ inline bool isTrue | ||||
|     INTERNAL_CATCH_ACCEPT_EXPR( ( Catch::ResultBuilder( __FILE__, __LINE__, macroName, #expr, isNot )->*expr ), stopOnFailure ); \ | ||||
|     if( Catch::isTrue( false ) ){ bool internal_catch_dummyResult = ( expr ); Catch::isTrue( internal_catch_dummyResult ); } | ||||
|  | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| #define INTERNAL_CATCH_IF( expr, isNot, stopOnFailure, macroName ) \ | ||||
|     INTERNAL_CATCH_TEST( expr, isNot, stopOnFailure, macroName ); \ | ||||
|     if( Catch::Hub::getResultCapture().getLastResult()->ok() ) | ||||
|  | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| #define INTERNAL_CATCH_ELSE( expr, isNot, stopOnFailure, macroName ) \ | ||||
|     INTERNAL_CATCH_TEST( expr, isNot, stopOnFailure, macroName ); \ | ||||
|     if( !Catch::Hub::getResultCapture().getLastResult()->ok() ) | ||||
|  | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| #define INTERNAL_CATCH_NO_THROW( expr, stopOnFailure, macroName ) \ | ||||
|     try \ | ||||
|   | ||||
| @@ -20,6 +20,7 @@ namespace Catch | ||||
|     class TestCaseInfo; | ||||
|     class ScopedInfo; | ||||
|     class MutableResultInfo; | ||||
|     class ResultInfo; | ||||
|  | ||||
|     struct IResultCapture | ||||
|     { | ||||
| @@ -66,6 +67,8 @@ namespace Catch | ||||
|             ) = 0; | ||||
|          | ||||
|         virtual std::string getCurrentTestName | ||||
|             () const = 0;         | ||||
|         virtual const ResultInfo* getLastResult | ||||
|             () const = 0; | ||||
|          | ||||
|     }; | ||||
|   | ||||
| @@ -63,10 +63,11 @@ namespace Catch | ||||
|         } | ||||
|          | ||||
|         /////////////////////////////////////////////////////////////////////////// | ||||
| 	virtual ~ResultInfo | ||||
|         virtual ~ResultInfo | ||||
|         () | ||||
| 	{ | ||||
| 	} | ||||
|         { | ||||
|         } | ||||
|          | ||||
|         /////////////////////////////////////////////////////////////////////////// | ||||
|         bool ok | ||||
|         () | ||||
|   | ||||
| @@ -548,6 +548,14 @@ namespace Catch | ||||
|                 ? m_runningTest->getTestCaseInfo().getName() | ||||
|                 : ""; | ||||
|         } | ||||
|  | ||||
|         /////////////////////////////////////////////////////////////////////////// | ||||
|         virtual const ResultInfo* getLastResult | ||||
|         () | ||||
|         const | ||||
|         { | ||||
|             return &m_lastResult;             | ||||
|         } | ||||
|          | ||||
|     private: | ||||
|          | ||||
| @@ -556,10 +564,10 @@ namespace Catch | ||||
|         () | ||||
|         { | ||||
|             testEnded( m_currentResult ); | ||||
|             m_lastResult = m_currentResult; | ||||
|              | ||||
|             bool ok = m_currentResult.ok(); | ||||
|             m_currentResult = MutableResultInfo(); | ||||
|             if( ok ) | ||||
|             if( m_lastResult.ok() ) | ||||
|                 return ResultAction::None; | ||||
|             else if( shouldDebugBreak() ) | ||||
|                 return ResultAction::DebugFailed; | ||||
| @@ -612,6 +620,7 @@ namespace Catch | ||||
|     private: | ||||
|         RunningTest* m_runningTest; | ||||
|         MutableResultInfo m_currentResult; | ||||
|         ResultInfo m_lastResult; | ||||
|  | ||||
|         const Config& m_config; | ||||
|         std::size_t m_successes; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash