mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Revirtualised IResultCapture methods
Didn't really impact runtime anyway, but will need to use interface for threading support.
This commit is contained in:
		| @@ -56,7 +56,7 @@ namespace Catch { | ||||
|             StringRef capturedExpression, | ||||
|             ResultDisposition::Flags resultDisposition ) | ||||
|     :   m_assertionInfo{ macroName, lineInfo, capturedExpression, resultDisposition }, | ||||
|         m_resultCapture( static_cast<RunContext&>( getResultCapture() ) ) | ||||
|         m_resultCapture( getResultCapture() ) | ||||
|     {} | ||||
|  | ||||
|     AssertionHandler::~AssertionHandler() { | ||||
|   | ||||
| @@ -44,7 +44,7 @@ namespace Catch { | ||||
|         AssertionInfo m_assertionInfo; | ||||
|         AssertionReaction m_reaction; | ||||
|         bool m_completed = false; | ||||
|         RunContext& m_resultCapture; | ||||
|         IResultCapture& m_resultCapture; | ||||
|  | ||||
|     public: | ||||
|         AssertionHandler | ||||
|   | ||||
| @@ -11,6 +11,7 @@ | ||||
| #include <string> | ||||
|  | ||||
| #include "catch_stringref.h" | ||||
| #include "catch_result_type.h" | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
| @@ -22,6 +23,9 @@ namespace Catch { | ||||
|     struct Counts; | ||||
|     struct BenchmarkInfo; | ||||
|     struct BenchmarkStats; | ||||
|     struct AssertionReaction; | ||||
|  | ||||
|     struct ITransientExpression; | ||||
|  | ||||
|     struct IResultCapture { | ||||
|  | ||||
| @@ -40,6 +44,31 @@ namespace Catch { | ||||
|  | ||||
|         virtual void handleFatalErrorCondition( StringRef message ) = 0; | ||||
|  | ||||
|         virtual void handleExpr | ||||
|                 (   AssertionInfo const& info, | ||||
|                     ITransientExpression const& expr, | ||||
|                     AssertionReaction& reaction ) = 0; | ||||
|         virtual void handleMessage | ||||
|                 (   AssertionInfo const& info, | ||||
|                     ResultWas::OfType resultType, | ||||
|                     StringRef const& message, | ||||
|                     AssertionReaction& reaction ) = 0; | ||||
|         virtual void handleUnexpectedExceptionNotThrown | ||||
|                 (   AssertionInfo const& info, | ||||
|                     AssertionReaction& reaction ) = 0; | ||||
|         virtual void handleUnexpectedInflightException | ||||
|                 (   AssertionInfo const& info, | ||||
|                     std::string const& message, | ||||
|                     AssertionReaction& reaction ) = 0; | ||||
|         virtual void handleIncomplete | ||||
|                 (   AssertionInfo const& info ) = 0; | ||||
|         virtual void handleNonExpr | ||||
|                 (   AssertionInfo const &info, | ||||
|                     ResultWas::OfType resultType, | ||||
|                     AssertionReaction &reaction ) = 0; | ||||
|  | ||||
|  | ||||
|  | ||||
|         virtual bool lastAssertionPassed() = 0; | ||||
|         virtual void assertionPassed() = 0; | ||||
|  | ||||
|   | ||||
| @@ -63,65 +63,54 @@ namespace Catch { | ||||
|         RunContext( RunContext const& ) = delete; | ||||
|         RunContext& operator =( RunContext const& ) = delete; | ||||
|  | ||||
|         explicit RunContext(IConfigPtr const& _config, IStreamingReporterPtr&& reporter); | ||||
|         explicit RunContext( IConfigPtr const& _config, IStreamingReporterPtr&& reporter ); | ||||
|  | ||||
|         ~RunContext() override; | ||||
|  | ||||
|         void testGroupStarting(std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount); | ||||
|         void testGroupEnded(std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount); | ||||
|         void testGroupStarting( std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount ); | ||||
|         void testGroupEnded( std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount ); | ||||
|  | ||||
|         Totals runTest(TestCase const& testCase); | ||||
|  | ||||
|         IConfigPtr config() const; | ||||
|         IStreamingReporter& reporter() const; | ||||
|  | ||||
|     public: // IResultCapture | ||||
|  | ||||
|         // Assertion handlers | ||||
|         void handleExpr | ||||
|                 (   AssertionInfo const& info, | ||||
|                     ITransientExpression const& expr, | ||||
|                     AssertionReaction& reaction ); | ||||
|                     AssertionReaction& reaction ) override; | ||||
|         void handleMessage | ||||
|                 (   AssertionInfo const& info, | ||||
|                     ResultWas::OfType resultType, | ||||
|                     StringRef const& message, | ||||
|                     AssertionReaction& reaction ); | ||||
|                     AssertionReaction& reaction ) override; | ||||
|         void handleUnexpectedExceptionNotThrown | ||||
|                 (   AssertionInfo const& info, | ||||
|                     AssertionReaction& reaction ); | ||||
|                     AssertionReaction& reaction ) override; | ||||
|         void handleUnexpectedInflightException | ||||
|                 (   AssertionInfo const& info, | ||||
|                     std::string const& message, | ||||
|                     AssertionReaction& reaction ); | ||||
|                     AssertionReaction& reaction ) override; | ||||
|         void handleIncomplete | ||||
|                 (   AssertionInfo const& info ); | ||||
|                 (   AssertionInfo const& info ) override; | ||||
|         void handleNonExpr | ||||
|                 (   AssertionInfo const &info, | ||||
|                     ResultWas::OfType resultType, | ||||
|                     AssertionReaction &reaction ); | ||||
|  | ||||
|         void reportExpr | ||||
|                 (AssertionInfo const &info, | ||||
|                  ResultWas::OfType resultType, | ||||
|                  ITransientExpression const *expr, | ||||
|                  bool negated ); | ||||
|  | ||||
|         void populateReaction( AssertionReaction& reaction ); | ||||
|  | ||||
|     public: // IResultCapture | ||||
|  | ||||
|         void assertionEnded(AssertionResult const& result); | ||||
|                     AssertionReaction &reaction ) override; | ||||
|  | ||||
|         bool sectionStarted( SectionInfo const& sectionInfo, Counts& assertions ) override; | ||||
|         bool testForMissingAssertions(Counts& assertions); | ||||
|  | ||||
|         void sectionEnded(SectionEndInfo const& endInfo) override; | ||||
|         void sectionEndedEarly(SectionEndInfo const& endInfo) override; | ||||
|         void sectionEnded( SectionEndInfo const& endInfo ) override; | ||||
|         void sectionEndedEarly( SectionEndInfo const& endInfo ) override; | ||||
|  | ||||
|         void benchmarkStarting( BenchmarkInfo const& info ) override; | ||||
|         void benchmarkEnded( BenchmarkStats const& stats ) override; | ||||
|  | ||||
|         void pushScopedMessage(MessageInfo const& message) override; | ||||
|         void popScopedMessage(MessageInfo const& message) override; | ||||
|         void pushScopedMessage( MessageInfo const& message ) override; | ||||
|         void popScopedMessage( MessageInfo const& message ) override; | ||||
|  | ||||
|         std::string getCurrentTestName() const override; | ||||
|  | ||||
| @@ -141,10 +130,20 @@ namespace Catch { | ||||
|  | ||||
|     private: | ||||
|  | ||||
|         void runCurrentTest(std::string& redirectedCout, std::string& redirectedCerr); | ||||
|         void runCurrentTest( std::string& redirectedCout, std::string& redirectedCerr ); | ||||
|         void invokeActiveTestCase(); | ||||
|  | ||||
|         void resetAssertionInfo(); | ||||
|         bool testForMissingAssertions( Counts& assertions ); | ||||
|  | ||||
|         void assertionEnded( AssertionResult const& result ); | ||||
|         void reportExpr | ||||
|                 (   AssertionInfo const &info, | ||||
|                     ResultWas::OfType resultType, | ||||
|                     ITransientExpression const *expr, | ||||
|                     bool negated ); | ||||
|  | ||||
|         void populateReaction( AssertionReaction& reaction ); | ||||
|  | ||||
|     private: | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash