mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Added DYNAMIC_SECTION and implemented GIVEN/ WHEN/ THEN in terms of it
This commit is contained in:
		| @@ -135,6 +135,7 @@ | ||||
| #define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | ||||
| #define CATCH_REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) | ||||
| #define CATCH_SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) | ||||
| #define CATCH_DYNAMIC_SECTION( ... ) INTERNAL_CATCH_DYNAMIC_SECTION( __VA_ARGS__ ) | ||||
| #define CATCH_FAIL( ... ) INTERNAL_CATCH_MSG( "CATCH_FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ ) | ||||
| #define CATCH_FAIL_CHECK( ... ) INTERNAL_CATCH_MSG( "CATCH_FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) | ||||
| #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( "CATCH_SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) | ||||
| @@ -144,11 +145,11 @@ | ||||
| // "BDD-style" convenience wrappers | ||||
| #define CATCH_SCENARIO( ... ) CATCH_TEST_CASE( "Scenario: " __VA_ARGS__ ) | ||||
| #define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) | ||||
| #define CATCH_GIVEN( desc )    CATCH_SECTION( std::string( "Given: ") + desc ) | ||||
| #define CATCH_WHEN( desc )     CATCH_SECTION( std::string( " When: ") + desc ) | ||||
| #define CATCH_AND_WHEN( desc ) CATCH_SECTION( std::string( "  And: ") + desc ) | ||||
| #define CATCH_THEN( desc )     CATCH_SECTION( std::string( " Then: ") + desc ) | ||||
| #define CATCH_AND_THEN( desc ) CATCH_SECTION( std::string( "  And: ") + desc ) | ||||
| #define CATCH_GIVEN( desc )    INTERNAL_CATCH_DYNAMIC_SECTION( "   Given: " << desc ) | ||||
| #define CATCH_WHEN( desc )     INTERNAL_CATCH_DYNAMIC_SECTION( "    When: " << desc ) | ||||
| #define CATCH_AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And when: " << desc ) | ||||
| #define CATCH_THEN( desc )     INTERNAL_CATCH_DYNAMIC_SECTION( "    Then: " << desc ) | ||||
| #define CATCH_AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "     And: " << desc ) | ||||
|  | ||||
| // If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required | ||||
| #else | ||||
| @@ -194,6 +195,7 @@ | ||||
| #define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | ||||
| #define REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) | ||||
| #define SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) | ||||
| #define DYNAMIC_SECTION( ... ) INTERNAL_CATCH_DYNAMIC_SECTION( __VA_ARGS__ ) | ||||
| #define FAIL( ... ) INTERNAL_CATCH_MSG( "FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ ) | ||||
| #define FAIL_CHECK( ... ) INTERNAL_CATCH_MSG( "FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) | ||||
| #define SUCCEED( ... ) INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ ) | ||||
| @@ -207,11 +209,11 @@ | ||||
| #define SCENARIO( ... ) TEST_CASE( "Scenario: " __VA_ARGS__ ) | ||||
| #define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) | ||||
|  | ||||
| #define GIVEN( desc )    SECTION( std::string("   Given: ") + desc ) | ||||
| #define WHEN( desc )     SECTION( std::string("    When: ") + desc ) | ||||
| #define AND_WHEN( desc ) SECTION( std::string("And when: ") + desc ) | ||||
| #define THEN( desc )     SECTION( std::string("    Then: ") + desc ) | ||||
| #define AND_THEN( desc ) SECTION( std::string("     And: ") + desc ) | ||||
| #define GIVEN( desc )    INTERNAL_CATCH_DYNAMIC_SECTION( "   Given: " << desc ) | ||||
| #define WHEN( desc )     INTERNAL_CATCH_DYNAMIC_SECTION( "    When: " << desc ) | ||||
| #define AND_WHEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "And when: " << desc ) | ||||
| #define THEN( desc )     INTERNAL_CATCH_DYNAMIC_SECTION( "    Then: " << desc ) | ||||
| #define AND_THEN( desc ) INTERNAL_CATCH_DYNAMIC_SECTION( "     And: " << desc ) | ||||
|  | ||||
| using Catch::Detail::Approx; | ||||
|  | ||||
|   | ||||
| @@ -38,4 +38,7 @@ namespace Catch { | ||||
| #define INTERNAL_CATCH_SECTION( ... ) \ | ||||
|     if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) | ||||
|  | ||||
| #define INTERNAL_CATCH_DYNAMIC_SECTION( ... ) \ | ||||
|     if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, (Catch::ReusableStringStream() << __VA_ARGS__).str() ) ) | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_SECTION_H_INCLUDED | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash