diff options
| author | Phil Nash | 2013-06-28 17:09:57 +0100 |
|---|---|---|
| committer | Phil Nash | 2013-06-28 17:09:57 +0100 |
| commit | b5fd5a6496ddfbf4e44dea55398630c062a466f8 (patch) | |
| tree | 00dba2a19a8342098f48a6a2ee3ada892fcc8ef3 /include | |
| parent | 881c61b67fa6df2289ded0fe5a17dc21aeca7426 (diff) | |
| download | catch3-b5fd5a6496ddfbf4e44dea55398630c062a466f8.tar.gz | |
INFO and CAPTURE are now scoped
- SCOPED_INFO and SCOPED_CAPTURE are now just aliases
Diffstat (limited to 'include')
| -rw-r--r-- | include/catch.hpp | 8 | ||||
| -rw-r--r-- | include/internal/catch_capture.hpp | 11 | ||||
| -rw-r--r-- | include/internal/catch_interfaces_capture.h | 7 | ||||
| -rw-r--r-- | include/internal/catch_interfaces_reporter.h | 4 | ||||
| -rw-r--r-- | include/internal/catch_message.h | 35 | ||||
| -rw-r--r-- | include/internal/catch_message.hpp | 30 | ||||
| -rw-r--r-- | include/internal/catch_runner_impl.hpp | 12 |
7 files changed, 41 insertions, 66 deletions
diff --git a/include/catch.hpp b/include/catch.hpp index d2ebab64..600815f7 100644 --- a/include/catch.hpp +++ b/include/catch.hpp @@ -74,9 +74,9 @@ #define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "CATCH_WARN" ) #define CATCH_FAIL( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL" ) #define CATCH_SUCCEED( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED" ) -#define CATCH_SCOPED_INFO( msg ) INTERNAL_CATCH_SCOPED_INFO( msg, "CATCH_SCOPED_INFO" ) +#define CATCH_SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) #define CATCH_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) -#define CATCH_SCOPED_CAPTURE( msg ) INTERNAL_CATCH_SCOPED_INFO( #msg " := " << msg, "CATCH_SCOPED_CAPTURE" ) +#define CATCH_SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) #ifdef CATCH_CONFIG_VARIADIC_MACROS #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) @@ -135,9 +135,9 @@ #define WARN( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "WARN" ) #define FAIL( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL" ) #define SUCCEED( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED" ) -#define SCOPED_INFO( msg ) INTERNAL_CATCH_SCOPED_INFO( msg, "SCOPED_INFO" ) +#define SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) #define CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) -#define SCOPED_CAPTURE( msg ) INTERNAL_CATCH_SCOPED_INFO( #msg " := " << msg, "SCOPED_CAPTURE" ) +#define SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) #ifdef CATCH_CONFIG_VARIADIC_MACROS #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) diff --git a/include/internal/catch_capture.hpp b/include/internal/catch_capture.hpp index cf143244..4aa6bc8c 100644 --- a/include/internal/catch_capture.hpp +++ b/include/internal/catch_capture.hpp @@ -145,11 +145,6 @@ struct TestFailureException{}; } \ } while( Catch::isTrue( false ) ) -/////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_INFO( log, macroName ) \ - do { \ - Catch::getResultCapture().acceptMessage( Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log ); \ - } while( Catch::isTrue( false ) ) /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_MSG( log, messageType, resultDisposition, macroName ) \ @@ -159,10 +154,8 @@ struct TestFailureException{}; } while( Catch::isTrue( false ) ) /////////////////////////////////////////////////////////////////////////////// -#define INTERNAL_CATCH_SCOPED_INFO( log, macroName ) \ - Catch::ScopedMessageBuilder INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ); \ - INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) << log; \ - Catch::getResultCapture().pushScopedMessage( INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) ) +#define INTERNAL_CATCH_INFO( log, macroName ) \ + Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) = Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log; /////////////////////////////////////////////////////////////////////////////// diff --git a/include/internal/catch_interfaces_capture.h b/include/internal/catch_interfaces_capture.h index 8cc68cc7..5b1619ae 100644 --- a/include/internal/catch_interfaces_capture.h +++ b/include/internal/catch_interfaces_capture.h @@ -20,7 +20,7 @@ namespace Catch { class AssertionResult; struct AssertionInfo; struct SectionInfo; - class MessageBuilder; + struct MessageInfo; class ScopedMessageBuilder; struct IResultCapture { @@ -31,12 +31,11 @@ namespace Catch { virtual bool sectionStarted( SectionInfo const& sectionInfo, Counts& assertions ) = 0; virtual void sectionEnded( SectionInfo const& name, Counts const& assertions ) = 0; - virtual void pushScopedMessage( ScopedMessageBuilder const& _builder ) = 0; - virtual void popScopedMessage( ScopedMessageBuilder const& _builder ) = 0; + virtual void pushScopedMessage( MessageInfo const& message ) = 0; + virtual void popScopedMessage( MessageInfo const& message ) = 0; virtual bool shouldDebugBreak() const = 0; - virtual void acceptMessage( MessageBuilder const& messageBuilder ) = 0; virtual ResultAction::Value acceptExpression( ExpressionResultBuilder const& assertionResult, AssertionInfo const& assertionInfo ) = 0; virtual std::string getCurrentTestName() const = 0; diff --git a/include/internal/catch_interfaces_reporter.h b/include/internal/catch_interfaces_reporter.h index 654abf32..57db9d7b 100644 --- a/include/internal/catch_interfaces_reporter.h +++ b/include/internal/catch_interfaces_reporter.h @@ -102,7 +102,9 @@ namespace Catch // !TBD This should have been done earlier, somewhere MessageBuilder builder( assertionResult.getTestMacroName(), assertionResult.getSourceInfo(), assertionResult.getResultType() ); builder << assertionResult.getMessage(); - infoMessages.push_back( builder.build() ); + builder.m_info.message = builder.m_stream.str(); + + infoMessages.push_back( builder.m_info ); } } virtual ~AssertionStats(); diff --git a/include/internal/catch_message.h b/include/internal/catch_message.h index b3d4af1e..f90d64ce 100644 --- a/include/internal/catch_message.h +++ b/include/internal/catch_message.h @@ -35,30 +35,29 @@ namespace Catch { static unsigned int globalCount; }; - - class MessageBuilder : public MessageInfo { - public: - MessageBuilder( std::string const& _macroName, - SourceLineInfo const& _lineInfo, - ResultWas::OfType _type ); - - MessageInfo build() const; + struct MessageBuilder { + MessageBuilder( std::string const& macroName, + SourceLineInfo const& lineInfo, + ResultWas::OfType type ) + : m_info( macroName, lineInfo, type ) + {} template<typename T> - MessageBuilder& operator << ( T const& _value ) { - stream << _value; + MessageBuilder& operator << ( T const& value ) { + m_stream << value; return *this; } - private: - std::ostringstream stream; + + MessageInfo m_info; + std::ostringstream m_stream; }; - - class ScopedMessageBuilder : public MessageBuilder { + + class ScopedMessage { public: - ScopedMessageBuilder( std::string const& _macroName, - SourceLineInfo const& _lineInfo, - ResultWas::OfType _type ); - ~ScopedMessageBuilder(); + ScopedMessage( MessageBuilder const& builder ); + ~ScopedMessage(); + + MessageInfo m_info; }; } // end namespace Catch diff --git a/include/internal/catch_message.hpp b/include/internal/catch_message.hpp index c6996aa9..949391bf 100644 --- a/include/internal/catch_message.hpp +++ b/include/internal/catch_message.hpp @@ -24,31 +24,17 @@ namespace Catch { // This may need protecting if threading support is added unsigned int MessageInfo::globalCount = 0; - //////////////////////////////////////////////////////////////////////////// - - MessageBuilder::MessageBuilder( std::string const& _macroName, - SourceLineInfo const& _lineInfo, - ResultWas::OfType _type ) - : MessageInfo( _macroName, _lineInfo, _type ) - {} - MessageInfo MessageBuilder::build() const { - MessageInfo message = *this; - message.message = stream.str(); - return message; - } - //////////////////////////////////////////////////////////////////////////// - ScopedMessageBuilder::ScopedMessageBuilder - ( std::string const& _macroName, - SourceLineInfo const& _lineInfo, - ResultWas::OfType _type ) - : MessageBuilder( _macroName, _lineInfo, _type ) - {} - - ScopedMessageBuilder::~ScopedMessageBuilder() { - getResultCapture().popScopedMessage( *this ); + ScopedMessage::ScopedMessage( MessageBuilder const& builder ) + : m_info( builder.m_info ) + { + m_info.message = builder.m_stream.str(); + getResultCapture().pushScopedMessage( m_info ); + } + ScopedMessage::~ScopedMessage() { + getResultCapture().popScopedMessage( m_info ); } diff --git a/include/internal/catch_runner_impl.hpp b/include/internal/catch_runner_impl.hpp index 5191d7fa..b67f2eb0 100644 --- a/include/internal/catch_runner_impl.hpp +++ b/include/internal/catch_runner_impl.hpp @@ -154,10 +154,6 @@ namespace Catch { private: // IResultCapture - virtual void acceptMessage( MessageBuilder const& messageBuilder ) { - m_messages.push_back( messageBuilder.build() ); - } - virtual ResultAction::Value acceptExpression( ExpressionResultBuilder const& assertionResult, AssertionInfo const& assertionInfo ) { m_lastAssertionInfo = assertionInfo; return actOnCurrentResult( assertionResult.buildResult( assertionInfo ) ); @@ -221,12 +217,12 @@ namespace Catch { m_messages.clear(); } - virtual void pushScopedMessage( ScopedMessageBuilder const& _builder ) { - m_messages.push_back( _builder.build() ); + virtual void pushScopedMessage( MessageInfo const& message ) { + m_messages.push_back( message ); } - virtual void popScopedMessage( ScopedMessageBuilder const& _builder ) { - m_messages.erase( std::remove( m_messages.begin(), m_messages.end(), _builder ), m_messages.end() ); + virtual void popScopedMessage( MessageInfo const& message ) { + m_messages.erase( std::remove( m_messages.begin(), m_messages.end(), message ), m_messages.end() ); } virtual bool shouldDebugBreak() const { |