mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 04:07:10 +01:00 
			
		
		
		
	Refactored internal interfaces to use Totals instead of success/ fail
This commit is contained in:
		| @@ -57,7 +57,7 @@ namespace Catch | ||||
|         { | ||||
|             config.getReporter()->StartGroup( "" ); | ||||
|             runner.runAll(); | ||||
|             config.getReporter()->EndGroup( "", runner.getSuccessCount(), runner.getFailureCount() ); | ||||
|             config.getReporter()->EndGroup( "", runner.getTotals().assertions.passed, runner.getTotals().assertions.failed ); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
| @@ -67,19 +67,19 @@ namespace Catch | ||||
|             std::vector<std::string>::const_iterator itEnd = config.getTestSpecs().end(); | ||||
|             for(; it != itEnd; ++it ) | ||||
|             { | ||||
|                 size_t prevSuccess = runner.getSuccessCount(); | ||||
|                 size_t prevFail = runner.getFailureCount(); | ||||
|                 Totals prevTotals = runner.getTotals(); | ||||
|                 config.getReporter()->StartGroup( *it ); | ||||
|                 if( runner.runMatching( *it ) == 0 ) | ||||
|                 { | ||||
|                     // Use reporter? | ||||
| //                    std::cerr << "\n[Unable to match any test cases with: " << *it << "]" << std::endl; | ||||
|                 } | ||||
|                 config.getReporter()->EndGroup( *it, runner.getSuccessCount()-prevSuccess, runner.getFailureCount()-prevFail ); | ||||
|                 Totals diffTotals = runner.getTotals() - prevTotals; | ||||
|                 config.getReporter()->EndGroup( *it, diffTotals.assertions.passed, diffTotals.assertions.failed ); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return static_cast<int>( runner.getFailureCount() ); | ||||
|         return static_cast<int>( runner.getTotals().assertions.failed ); | ||||
|     } | ||||
|  | ||||
|     ////////////////////////////////////////////////////////////////////////// | ||||
|   | ||||
| @@ -12,6 +12,8 @@ | ||||
| #ifndef TWOBLUECUBES_INTERNAL_CATCH_INTERFACES_RUNNER_H_INCLUDED | ||||
| #define TWOBLUECUBES_INTERNAL_CATCH_INTERFACES_RUNNER_H_INCLUDED | ||||
|  | ||||
| #include "catch_totals.hpp" | ||||
|  | ||||
| #include <string> | ||||
|  | ||||
| namespace Catch | ||||
| @@ -32,10 +34,7 @@ namespace Catch | ||||
|             ( const std::string& rawTestSpec  | ||||
|             ) = 0; | ||||
|          | ||||
|         virtual std::size_t getSuccessCount | ||||
|             () const = 0; | ||||
|          | ||||
|         virtual std:: size_t getFailureCount | ||||
|         virtual Totals getTotals | ||||
|             () const = 0; | ||||
|          | ||||
|     }; | ||||
|   | ||||
| @@ -391,21 +391,13 @@ namespace Catch | ||||
|         } | ||||
|  | ||||
|         /////////////////////////////////////////////////////////////////////////// | ||||
|         virtual std::size_t getSuccessCount | ||||
|         virtual Totals getTotals | ||||
|         () | ||||
|         const | ||||
|         { | ||||
|             return m_totals.assertions.passed; | ||||
|             return m_totals; | ||||
|         } | ||||
|          | ||||
|         /////////////////////////////////////////////////////////////////////////// | ||||
|         virtual std:: size_t getFailureCount | ||||
|         () | ||||
|         const | ||||
|         { | ||||
|             return m_totals.assertions.failed; | ||||
|         } | ||||
|  | ||||
|     private: // IResultCapture | ||||
|  | ||||
|         /////////////////////////////////////////////////////////////////////////// | ||||
|   | ||||
| @@ -21,6 +21,14 @@ namespace Catch | ||||
|         :   passed( 0 ),  | ||||
|             failed( 0 ) | ||||
|         {} | ||||
|  | ||||
|         Counts operator - ( const Counts& other ) const | ||||
|         { | ||||
|             Counts diff; | ||||
|             diff.passed = passed - other.passed; | ||||
|             diff.failed = failed - other.failed; | ||||
|             return diff; | ||||
|         } | ||||
|          | ||||
|         std::size_t passed; | ||||
|         std::size_t failed; | ||||
| @@ -28,6 +36,14 @@ namespace Catch | ||||
|      | ||||
|     struct Totals | ||||
|     { | ||||
|         Totals operator - ( const Totals& other ) const | ||||
|         { | ||||
|             Totals diff; | ||||
|             diff.assertions = assertions - other.assertions; | ||||
|             diff.testCases = testCases - other.testCases; | ||||
|             return diff; | ||||
|         } | ||||
|          | ||||
|         Counts assertions; | ||||
|         Counts testCases; | ||||
|     }; | ||||
|   | ||||
| @@ -43,16 +43,16 @@ TEST_CASE( "selftest/main", "Runs all Catch self tests and checks their results" | ||||
|                     "Number of 'succeeding' tests is fixed" ) | ||||
|         { | ||||
|             runner.runMatching( "./succeeding/*" ); | ||||
|             CHECK( runner.getSuccessCount() == 267 ); | ||||
|             CHECK( runner.getFailureCount() == 0 ); | ||||
|             CHECK( runner.getTotals().assertions.passed == 267 ); | ||||
|             CHECK( runner.getTotals().assertions.failed == 0 ); | ||||
|         } | ||||
|  | ||||
|         SECTION(    "selftest/test counts/failing tests",  | ||||
|                     "Number of 'failing' tests is fixed" ) | ||||
|         { | ||||
|             runner.runMatching( "./failing/*" );         | ||||
|             CHECK( runner.getSuccessCount() == 0 ); | ||||
|             CHECK( runner.getFailureCount() == 68 ); | ||||
|             CHECK( runner.getTotals().assertions.passed == 0 ); | ||||
|             CHECK( runner.getTotals().assertions.failed == 68 ); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -62,7 +62,7 @@ TEST_CASE( "meta/Misc/Sections", "looped tests" ) | ||||
|     Catch::EmbeddedRunner runner; | ||||
|      | ||||
|     runner.runMatching( "./mixed/Misc/Sections/nested2" ); | ||||
|     CHECK( runner.getSuccessCount() == 2 ); | ||||
|     CHECK( runner.getFailureCount() == 1 ); | ||||
|     CHECK( runner.getTotals().assertions.passed == 2 ); | ||||
|     CHECK( runner.getTotals().assertions.failed == 1 ); | ||||
|      | ||||
| } | ||||
|   | ||||
| @@ -18,8 +18,8 @@ namespace Catch | ||||
|     /////////////////////////////////////////////////////////////////////////// | ||||
|     std::size_t EmbeddedRunner::runMatching | ||||
|     ( | ||||
|      const std::string& rawTestSpec | ||||
|      ) | ||||
|         const std::string& rawTestSpec | ||||
|     ) | ||||
|     { | ||||
|         std::ostringstream oss; | ||||
|         Config config; | ||||
| @@ -32,8 +32,7 @@ namespace Catch | ||||
|         { | ||||
|             Runner runner( config ); | ||||
|             result = runner.runMatching( rawTestSpec ); | ||||
|             m_successes = runner.getSuccessCount(); | ||||
|             m_failures = runner.getFailureCount(); | ||||
|             m_totals = runner.getTotals(); | ||||
|         } | ||||
|         m_output = oss.str(); | ||||
|         return result; | ||||
|   | ||||
| @@ -36,24 +36,15 @@ namespace Catch | ||||
|         } | ||||
|          | ||||
|         /////////////////////////////////////////////////////////////////////////// | ||||
|         std::size_t getSuccessCount | ||||
|         const Totals& getTotals | ||||
|         () | ||||
|         const | ||||
|         { | ||||
|             return m_successes; | ||||
|             return m_totals; | ||||
|         } | ||||
|          | ||||
|         /////////////////////////////////////////////////////////////////////////// | ||||
|         std:: size_t getFailureCount | ||||
|         () | ||||
|         const | ||||
|         { | ||||
|             return m_failures; | ||||
|         } | ||||
|  | ||||
|     private: | ||||
|         std::size_t m_successes; | ||||
|         std::size_t m_failures; | ||||
|         Totals m_totals; | ||||
|         std::string m_output; | ||||
|     }; | ||||
|  | ||||
| @@ -97,26 +88,27 @@ namespace Catch | ||||
|         { | ||||
|             EmbeddedRunner runner; | ||||
|             runner.runMatching( testCase.getName() ); | ||||
|             Totals totals = runner.getTotals(); | ||||
|             switch( m_expectedResult ) | ||||
|             { | ||||
|                 case Expected::ToSucceed: | ||||
|                     if( runner.getFailureCount() > 0 ) | ||||
|                     if( totals.assertions.failed > 0 ) | ||||
|                     { | ||||
|                         INFO( runner.getOutput() ); | ||||
|                         FAIL( "Expected test case '"  | ||||
|                              << testCase.getName()  | ||||
|                              << "' to succeed but there was/ were "  | ||||
|                              << runner.getFailureCount() << " failure(s)" ); | ||||
|                              << totals.assertions.failed << " failure(s)" ); | ||||
|                     } | ||||
|                     break; | ||||
|                 case Expected::ToFail: | ||||
|                     if( runner.getSuccessCount() > 0 ) | ||||
|                     if( totals.assertions.passed > 0 ) | ||||
|                     { | ||||
|                         INFO( runner.getOutput() ); | ||||
|                         FAIL( "Expected test case '"  | ||||
|                              << testCase.getName()  | ||||
|                              << "' to fail but there was/ were "  | ||||
|                              << runner.getSuccessCount() << " success(es)" ); | ||||
|                              << totals.assertions.passed << " success(es)" ); | ||||
|                     } | ||||
|                     break; | ||||
|             }         | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash