mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-16 18:52:25 +01:00
Merge branch 'Integration' of https://github.com/philsquared/Catch into Integration
Conflicts: single_include/catch.hpp
This commit is contained in:
commit
4929d6dde8
@ -11,7 +11,10 @@ baselinesPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/approvedRe
|
|||||||
rawResultsPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/_rawResults.tmp' )
|
rawResultsPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/_rawResults.tmp' )
|
||||||
filteredResultsPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/unapprovedResults.txt' )
|
filteredResultsPath = os.path.join( catchPath, 'projects/SelfTest/Baselines/unapprovedResults.txt' )
|
||||||
|
|
||||||
|
if len(sys.argv) == 2:
|
||||||
cmdPath = sys.argv[1]
|
cmdPath = sys.argv[1]
|
||||||
|
else:
|
||||||
|
cmdPath = "projects/XCode4/CatchSelfTest/DerivedData/CatchSelfTest/Build/Products/Debug/CatchSelfTest"
|
||||||
|
|
||||||
f = open( rawResultsPath, 'w' )
|
f = open( rawResultsPath, 'w' )
|
||||||
subprocess.call([ cmdPath, "~dummy", "-s", "-w", "NoAssertions", "-r", "console" ], stdout=f, stderr=f )
|
subprocess.call([ cmdPath, "~dummy", "-s", "-w", "NoAssertions", "-r", "console" ], stdout=f, stderr=f )
|
||||||
|
@ -68,12 +68,12 @@
|
|||||||
#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" )
|
#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" )
|
||||||
#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" )
|
#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" )
|
||||||
|
|
||||||
#define CATCH_INFO( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Info, Catch::ResultDisposition::ContinueOnFailure, "CATCH_INFO" )
|
#define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" )
|
||||||
#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "CATCH_WARN" )
|
#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_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_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_SCOPED_INFO( msg, "CATCH_SCOPED_INFO" )
|
||||||
#define CATCH_CAPTURE( msg ) INTERNAL_CATCH_MSG( #msg " := " << msg, Catch::ResultWas::Info, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CAPTURE" )
|
#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_SCOPED_INFO( #msg " := " << msg, "CATCH_SCOPED_CAPTURE" )
|
||||||
|
|
||||||
#define CATCH_SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description )
|
#define CATCH_SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description )
|
||||||
@ -111,12 +111,12 @@
|
|||||||
#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" )
|
#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" )
|
||||||
#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" )
|
#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" )
|
||||||
|
|
||||||
#define INFO( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Info, Catch::ResultDisposition::ContinueOnFailure, "INFO" )
|
#define INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" )
|
||||||
#define WARN( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "WARN" )
|
#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 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 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_SCOPED_INFO( msg, "SCOPED_INFO" )
|
||||||
#define CAPTURE( msg ) INTERNAL_CATCH_MSG( #msg " := " << msg, Catch::ResultWas::Info, Catch::ResultDisposition::ContinueOnFailure, "CAPTURE" )
|
#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_SCOPED_INFO( #msg " := " << msg, "SCOPED_CAPTURE" )
|
||||||
|
|
||||||
#define SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description )
|
#define SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description )
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include "catch_expression_decomposer.hpp"
|
#include "catch_expression_decomposer.hpp"
|
||||||
#include "catch_expressionresult_builder.h"
|
#include "catch_expressionresult_builder.h"
|
||||||
|
#include "catch_message.h"
|
||||||
#include "catch_interfaces_capture.h"
|
#include "catch_interfaces_capture.h"
|
||||||
#include "catch_debugger.hpp"
|
#include "catch_debugger.hpp"
|
||||||
#include "catch_context.h"
|
#include "catch_context.h"
|
||||||
@ -54,26 +55,6 @@ namespace Catch {
|
|||||||
|
|
||||||
struct TestFailureException{};
|
struct TestFailureException{};
|
||||||
|
|
||||||
class ScopedInfo {
|
|
||||||
public:
|
|
||||||
ScopedInfo() : m_resultBuilder( ResultWas::Info ) {
|
|
||||||
getResultCapture().pushScopedInfo( this );
|
|
||||||
}
|
|
||||||
~ScopedInfo() {
|
|
||||||
getResultCapture().popScopedInfo( this );
|
|
||||||
}
|
|
||||||
template<typename T>
|
|
||||||
ScopedInfo& operator << ( const T& value ) {
|
|
||||||
m_resultBuilder << value;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
AssertionResult buildResult( const AssertionInfo& assertionInfo ) const {
|
|
||||||
return m_resultBuilder.buildResult( assertionInfo );
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
ExpressionResultBuilder m_resultBuilder;
|
|
||||||
};
|
|
||||||
|
|
||||||
// This is just here to avoid compiler warnings with macro constants and boolean literals
|
// This is just here to avoid compiler warnings with macro constants and boolean literals
|
||||||
inline bool isTrue( bool value ){ return value; }
|
inline bool isTrue( bool value ){ return value; }
|
||||||
@ -168,17 +149,24 @@ inline bool isTrue( bool value ){ return value; }
|
|||||||
} while( Catch::isTrue( false ) )
|
} while( Catch::isTrue( false ) )
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CATCH_MSG( reason, resultType, resultDisposition, macroName ) \
|
#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 ) \
|
||||||
do { \
|
do { \
|
||||||
INTERNAL_CATCH_ACCEPT_INFO( "", macroName, resultDisposition ); \
|
INTERNAL_CATCH_ACCEPT_INFO( "", macroName, resultDisposition ); \
|
||||||
INTERNAL_CATCH_ACCEPT_EXPR( Catch::ExpressionResultBuilder( resultType ) << reason, resultDisposition, true ) \
|
INTERNAL_CATCH_ACCEPT_EXPR( Catch::ExpressionResultBuilder( messageType ) << log, resultDisposition, true ) \
|
||||||
} while( Catch::isTrue( false ) )
|
} while( Catch::isTrue( false ) )
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CATCH_SCOPED_INFO( log, macroName ) \
|
#define INTERNAL_CATCH_SCOPED_INFO( log, macroName ) \
|
||||||
INTERNAL_CATCH_ACCEPT_INFO( "", macroName, Catch::ResultDisposition::Normal ); \
|
Catch::ScopedMessageBuilder INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ); \
|
||||||
Catch::ScopedInfo INTERNAL_CATCH_UNIQUE_NAME( info ); \
|
INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) << log; \
|
||||||
INTERNAL_CATCH_UNIQUE_NAME( info ) << log
|
Catch::getResultCapture().pushScopedMessage( INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) )
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \
|
#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \
|
||||||
|
@ -148,7 +148,7 @@ namespace Catch {
|
|||||||
virtual void parseIntoConfig( const Command& cmd, ConfigData& config ) = 0;
|
virtual void parseIntoConfig( const Command& cmd, ConfigData& config ) = 0;
|
||||||
virtual std::string argsSynopsis() const = 0;
|
virtual std::string argsSynopsis() const = 0;
|
||||||
virtual std::string optionSummary() const = 0;
|
virtual std::string optionSummary() const = 0;
|
||||||
virtual std::string optionDescription() const { return ""; };
|
virtual std::string optionDescription() const { return ""; }
|
||||||
|
|
||||||
std::string optionNames() const {
|
std::string optionNames() const {
|
||||||
std::string names;
|
std::string names;
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "catch_tags.hpp"
|
#include "catch_tags.hpp"
|
||||||
#include "catch_version.hpp"
|
#include "catch_version.hpp"
|
||||||
#include "catch_line_wrap.hpp"
|
#include "catch_line_wrap.hpp"
|
||||||
|
#include "catch_message.hpp"
|
||||||
|
|
||||||
#include "../reporters/catch_reporter_basic.hpp"
|
#include "../reporters/catch_reporter_basic.hpp"
|
||||||
#include "../reporters/catch_reporter_xml.hpp"
|
#include "../reporters/catch_reporter_xml.hpp"
|
||||||
|
@ -16,24 +16,27 @@
|
|||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
class TestCase;
|
class TestCase;
|
||||||
class ScopedInfo;
|
|
||||||
class ExpressionResultBuilder;
|
class ExpressionResultBuilder;
|
||||||
class AssertionResult;
|
class AssertionResult;
|
||||||
struct AssertionInfo;
|
struct AssertionInfo;
|
||||||
struct SectionInfo;
|
struct SectionInfo;
|
||||||
|
class MessageBuilder;
|
||||||
|
class ScopedMessageBuilder;
|
||||||
|
|
||||||
struct IResultCapture {
|
struct IResultCapture {
|
||||||
|
|
||||||
virtual ~IResultCapture();
|
virtual ~IResultCapture();
|
||||||
|
|
||||||
virtual void testEnded( AssertionResult const& result ) = 0;
|
virtual void assertionEnded( AssertionResult const& result ) = 0;
|
||||||
virtual bool sectionStarted( SectionInfo const& sectionInfo,
|
virtual bool sectionStarted( SectionInfo const& sectionInfo,
|
||||||
Counts& assertions ) = 0;
|
Counts& assertions ) = 0;
|
||||||
virtual void sectionEnded( SectionInfo const& name, Counts const& assertions ) = 0;
|
virtual void sectionEnded( SectionInfo const& name, Counts const& assertions ) = 0;
|
||||||
virtual void pushScopedInfo( ScopedInfo* scopedInfo ) = 0;
|
virtual void pushScopedMessage( ScopedMessageBuilder const& _builder ) = 0;
|
||||||
virtual void popScopedInfo( ScopedInfo* scopedInfo ) = 0;
|
virtual void popScopedMessage( ScopedMessageBuilder const& _builder ) = 0;
|
||||||
|
|
||||||
virtual bool shouldDebugBreak() const = 0;
|
virtual bool shouldDebugBreak() const = 0;
|
||||||
|
|
||||||
|
virtual void acceptMessage( const MessageBuilder& messageBuilder ) = 0;
|
||||||
virtual ResultAction::Value acceptExpression( ExpressionResultBuilder const& assertionResult, AssertionInfo const& assertionInfo ) = 0;
|
virtual ResultAction::Value acceptExpression( ExpressionResultBuilder const& assertionResult, AssertionInfo const& assertionInfo ) = 0;
|
||||||
|
|
||||||
virtual std::string getCurrentTestName() const = 0;
|
virtual std::string getCurrentTestName() const = 0;
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "catch_config.hpp"
|
#include "catch_config.hpp"
|
||||||
#include "catch_test_case_info.h"
|
#include "catch_test_case_info.h"
|
||||||
#include "catch_assertionresult.h"
|
#include "catch_assertionresult.h"
|
||||||
|
#include "catch_message.h"
|
||||||
#include "catch_option.hpp"
|
#include "catch_option.hpp"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -89,13 +90,24 @@ namespace Catch
|
|||||||
|
|
||||||
struct AssertionStats {
|
struct AssertionStats {
|
||||||
AssertionStats( AssertionResult const& _assertionResult,
|
AssertionStats( AssertionResult const& _assertionResult,
|
||||||
|
std::vector<MessageInfo> const& _infoMessages,
|
||||||
Totals const& _totals )
|
Totals const& _totals )
|
||||||
: assertionResult( _assertionResult ),
|
: assertionResult( _assertionResult ),
|
||||||
|
infoMessages( _infoMessages ),
|
||||||
totals( _totals )
|
totals( _totals )
|
||||||
{}
|
{
|
||||||
|
if( assertionResult.hasMessage() ) {
|
||||||
|
// Copy message into messages list.
|
||||||
|
// !TBD This should have been done earlier, somewhere
|
||||||
|
MessageBuilder builder( assertionResult.getTestMacroName(), assertionResult.getSourceInfo(), assertionResult.getResultType() );
|
||||||
|
builder << assertionResult.getMessage();
|
||||||
|
infoMessages.push_back( builder.build() );
|
||||||
|
}
|
||||||
|
}
|
||||||
virtual ~AssertionStats();
|
virtual ~AssertionStats();
|
||||||
|
|
||||||
AssertionResult assertionResult;
|
AssertionResult assertionResult;
|
||||||
|
std::vector<MessageInfo> infoMessages;
|
||||||
Totals totals;
|
Totals totals;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
66
include/internal/catch_message.h
Normal file
66
include/internal/catch_message.h
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Created by Phil Nash on 1/2/2013.
|
||||||
|
* Copyright 2013 Two Blue Cubes Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
*/
|
||||||
|
#ifndef TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED
|
||||||
|
#define TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include "catch_result_type.h"
|
||||||
|
#include "catch_common.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
struct MessageInfo {
|
||||||
|
MessageInfo( std::string const& _macroName,
|
||||||
|
SourceLineInfo const& _lineInfo,
|
||||||
|
ResultWas::OfType _type );
|
||||||
|
|
||||||
|
std::string macroName;
|
||||||
|
SourceLineInfo lineInfo;
|
||||||
|
ResultWas::OfType type;
|
||||||
|
std::string message;
|
||||||
|
unsigned int sequence;
|
||||||
|
|
||||||
|
bool operator == ( MessageInfo const& other ) const {
|
||||||
|
return sequence == other.sequence;
|
||||||
|
}
|
||||||
|
bool operator < ( MessageInfo const& other ) const {
|
||||||
|
return sequence < other.sequence;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
static unsigned int globalCount;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class MessageBuilder : public MessageInfo {
|
||||||
|
public:
|
||||||
|
MessageBuilder( std::string const& _macroName,
|
||||||
|
SourceLineInfo const& _lineInfo,
|
||||||
|
ResultWas::OfType _type );
|
||||||
|
|
||||||
|
MessageInfo build() const;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
MessageBuilder& operator << ( T const& _value ) {
|
||||||
|
stream << _value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
std::ostringstream stream;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ScopedMessageBuilder : public MessageBuilder {
|
||||||
|
public:
|
||||||
|
ScopedMessageBuilder( std::string const& _macroName,
|
||||||
|
SourceLineInfo const& _lineInfo,
|
||||||
|
ResultWas::OfType _type );
|
||||||
|
~ScopedMessageBuilder();
|
||||||
|
};
|
||||||
|
|
||||||
|
} // end namespace Catch
|
||||||
|
|
||||||
|
#endif // TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED
|
57
include/internal/catch_message.hpp
Normal file
57
include/internal/catch_message.hpp
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* Created by Phil Nash on 1/2/2013.
|
||||||
|
* Copyright 2013 Two Blue Cubes Ltd. All rights reserved.
|
||||||
|
*
|
||||||
|
* Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
*/
|
||||||
|
#ifndef TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED
|
||||||
|
#define TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED
|
||||||
|
|
||||||
|
#include "catch_message.h"
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
MessageInfo::MessageInfo( std::string const& _macroName,
|
||||||
|
SourceLineInfo const& _lineInfo,
|
||||||
|
ResultWas::OfType _type )
|
||||||
|
: macroName( _macroName ),
|
||||||
|
lineInfo( _lineInfo ),
|
||||||
|
type( _type ),
|
||||||
|
sequence( ++globalCount )
|
||||||
|
{}
|
||||||
|
|
||||||
|
// 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 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // end namespace Catch
|
||||||
|
|
||||||
|
#endif // TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED
|
@ -32,6 +32,9 @@ namespace Catch {
|
|||||||
inline bool isOk( ResultWas::OfType resultType ) {
|
inline bool isOk( ResultWas::OfType resultType ) {
|
||||||
return ( resultType & ResultWas::FailureBit ) == 0;
|
return ( resultType & ResultWas::FailureBit ) == 0;
|
||||||
}
|
}
|
||||||
|
inline bool isJustInfo( int flags ) {
|
||||||
|
return flags == ResultWas::Info;
|
||||||
|
}
|
||||||
|
|
||||||
// ResultAction::Value enum
|
// ResultAction::Value enum
|
||||||
struct ResultAction { enum Value {
|
struct ResultAction { enum Value {
|
||||||
|
@ -155,43 +155,28 @@ namespace Catch {
|
|||||||
|
|
||||||
private: // IResultCapture
|
private: // IResultCapture
|
||||||
|
|
||||||
|
virtual void acceptMessage( const MessageBuilder& messageBuilder ) {
|
||||||
|
m_messages.push_back( messageBuilder.build() );
|
||||||
|
}
|
||||||
|
|
||||||
virtual ResultAction::Value acceptExpression( const ExpressionResultBuilder& assertionResult, const AssertionInfo& assertionInfo ) {
|
virtual ResultAction::Value acceptExpression( const ExpressionResultBuilder& assertionResult, const AssertionInfo& assertionInfo ) {
|
||||||
m_lastAssertionInfo = assertionInfo;
|
m_lastAssertionInfo = assertionInfo;
|
||||||
return actOnCurrentResult( assertionResult.buildResult( assertionInfo ) );
|
return actOnCurrentResult( assertionResult.buildResult( assertionInfo ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void testEnded( const AssertionResult& result ) {
|
virtual void assertionEnded( const AssertionResult& result ) {
|
||||||
if( result.getResultType() == ResultWas::Ok ) {
|
if( result.getResultType() == ResultWas::Ok ) {
|
||||||
m_totals.assertions.passed++;
|
m_totals.assertions.passed++;
|
||||||
}
|
}
|
||||||
else if( !result.isOk() ) {
|
else if( !result.isOk() ) {
|
||||||
m_totals.assertions.failed++;
|
m_totals.assertions.failed++;
|
||||||
|
|
||||||
{
|
|
||||||
std::vector<ScopedInfo*>::const_iterator it = m_scopedInfos.begin();
|
|
||||||
std::vector<ScopedInfo*>::const_iterator itEnd = m_scopedInfos.end();
|
|
||||||
for(; it != itEnd; ++it )
|
|
||||||
m_reporter->assertionEnded( AssertionStats( (*it)->buildResult( m_lastAssertionInfo ), m_totals ) );
|
|
||||||
}
|
|
||||||
{
|
|
||||||
std::vector<AssertionResult>::const_iterator it = m_assertionResults.begin();
|
|
||||||
std::vector<AssertionResult>::const_iterator itEnd = m_assertionResults.end();
|
|
||||||
for(; it != itEnd; ++it )
|
|
||||||
m_reporter->assertionEnded( AssertionStats( *it, m_totals ) );
|
|
||||||
}
|
|
||||||
m_assertionResults.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( result.getResultType() == ResultWas::Info )
|
m_reporter->assertionEnded( AssertionStats( result, m_messages, m_totals ) );
|
||||||
{
|
|
||||||
m_assertionResults.push_back( result );
|
|
||||||
m_totals.assertions.info++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m_reporter->assertionEnded( AssertionStats( result, m_totals ) );
|
|
||||||
|
|
||||||
// Reset AssertionInfo
|
// Reset working state
|
||||||
m_lastAssertionInfo = AssertionInfo( "", m_lastAssertionInfo.lineInfo, "{Unknown expression after this line}" , m_lastAssertionInfo.resultDisposition );
|
m_lastAssertionInfo = AssertionInfo( "", m_lastAssertionInfo.lineInfo, "{Unknown expression after the reported line}" , m_lastAssertionInfo.resultDisposition );
|
||||||
|
m_messages.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool sectionStarted (
|
virtual bool sectionStarted (
|
||||||
@ -229,15 +214,15 @@ namespace Catch {
|
|||||||
m_runningTest->endSection( info.name );
|
m_runningTest->endSection( info.name );
|
||||||
|
|
||||||
m_reporter->sectionEnded( SectionStats( info, assertions, missingAssertions ) );
|
m_reporter->sectionEnded( SectionStats( info, assertions, missingAssertions ) );
|
||||||
|
m_messages.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void pushScopedInfo( ScopedInfo* scopedInfo ) {
|
virtual void pushScopedMessage( ScopedMessageBuilder const& _builder ) {
|
||||||
m_scopedInfos.push_back( scopedInfo );
|
m_messages.push_back( _builder.build() );
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void popScopedInfo( ScopedInfo* scopedInfo ) {
|
virtual void popScopedMessage( ScopedMessageBuilder const& _builder ) {
|
||||||
if( m_scopedInfos.back() == scopedInfo )
|
m_messages.erase( std::remove( m_messages.begin(), m_messages.end(), _builder ), m_messages.end() );
|
||||||
m_scopedInfos.pop_back();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool shouldDebugBreak() const {
|
virtual bool shouldDebugBreak() const {
|
||||||
@ -264,7 +249,7 @@ namespace Catch {
|
|||||||
|
|
||||||
ResultAction::Value actOnCurrentResult( const AssertionResult& result ) {
|
ResultAction::Value actOnCurrentResult( const AssertionResult& result ) {
|
||||||
m_lastResult = result;
|
m_lastResult = result;
|
||||||
testEnded( m_lastResult );
|
assertionEnded( m_lastResult );
|
||||||
|
|
||||||
ResultAction::Value action = ResultAction::None;
|
ResultAction::Value action = ResultAction::None;
|
||||||
|
|
||||||
@ -282,6 +267,7 @@ namespace Catch {
|
|||||||
try {
|
try {
|
||||||
m_lastAssertionInfo = AssertionInfo( "TEST_CASE", m_runningTest->getTestCase().getTestCaseInfo().lineInfo, "", ResultDisposition::Normal );
|
m_lastAssertionInfo = AssertionInfo( "TEST_CASE", m_runningTest->getTestCase().getTestCaseInfo().lineInfo, "", ResultDisposition::Normal );
|
||||||
m_runningTest->reset();
|
m_runningTest->reset();
|
||||||
|
|
||||||
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
||||||
StreamRedirect coutRedir( std::cout, redirectedCout );
|
StreamRedirect coutRedir( std::cout, redirectedCout );
|
||||||
StreamRedirect cerrRedir( std::cerr, redirectedCerr );
|
StreamRedirect cerrRedir( std::cerr, redirectedCerr );
|
||||||
@ -300,7 +286,7 @@ namespace Catch {
|
|||||||
exResult << translateActiveException();
|
exResult << translateActiveException();
|
||||||
actOnCurrentResult( exResult.buildResult( m_lastAssertionInfo ) );
|
actOnCurrentResult( exResult.buildResult( m_lastAssertionInfo ) );
|
||||||
}
|
}
|
||||||
m_assertionResults.clear();
|
m_messages.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -312,8 +298,7 @@ namespace Catch {
|
|||||||
const Config& m_config;
|
const Config& m_config;
|
||||||
Totals m_totals;
|
Totals m_totals;
|
||||||
Ptr<IStreamingReporter> m_reporter;
|
Ptr<IStreamingReporter> m_reporter;
|
||||||
std::vector<ScopedInfo*> m_scopedInfos;
|
std::vector<MessageInfo> m_messages;
|
||||||
std::vector<AssertionResult> m_assertionResults;
|
|
||||||
IRunner* m_prevRunner;
|
IRunner* m_prevRunner;
|
||||||
IResultCapture* m_prevResultCapture;
|
IResultCapture* m_prevResultCapture;
|
||||||
const IConfig* m_prevConfig;
|
const IConfig* m_prevConfig;
|
||||||
|
@ -13,19 +13,17 @@
|
|||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
struct Counts {
|
struct Counts {
|
||||||
Counts() : passed( 0 ), failed( 0 ), info( 0 ) {}
|
Counts() : passed( 0 ), failed( 0 ) {}
|
||||||
|
|
||||||
Counts operator - ( const Counts& other ) const {
|
Counts operator - ( const Counts& other ) const {
|
||||||
Counts diff;
|
Counts diff;
|
||||||
diff.passed = passed - other.passed;
|
diff.passed = passed - other.passed;
|
||||||
diff.failed = failed - other.failed;
|
diff.failed = failed - other.failed;
|
||||||
diff.info = info - other.info;
|
|
||||||
return diff;
|
return diff;
|
||||||
}
|
}
|
||||||
Counts& operator += ( const Counts& other ) {
|
Counts& operator += ( const Counts& other ) {
|
||||||
passed += other.passed;
|
passed += other.passed;
|
||||||
failed += other.failed;
|
failed += other.failed;
|
||||||
info += other.info;
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,7 +33,6 @@ namespace Catch {
|
|||||||
|
|
||||||
std::size_t passed;
|
std::size_t passed;
|
||||||
std::size_t failed;
|
std::size_t failed;
|
||||||
std::size_t info;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Totals {
|
struct Totals {
|
||||||
|
@ -98,14 +98,18 @@ namespace Catch {
|
|||||||
stats( _stats ),
|
stats( _stats ),
|
||||||
result( _stats.assertionResult ),
|
result( _stats.assertionResult ),
|
||||||
colour( TextColour::None ),
|
colour( TextColour::None ),
|
||||||
message( result.getMessage() )
|
message( result.getMessage() ),
|
||||||
|
messages( _stats.infoMessages )
|
||||||
{
|
{
|
||||||
switch( result.getResultType() ) {
|
switch( result.getResultType() ) {
|
||||||
case ResultWas::Ok:
|
case ResultWas::Ok:
|
||||||
colour = TextColour::Success;
|
colour = TextColour::Success;
|
||||||
passOrFail = "PASSED";
|
passOrFail = "PASSED";
|
||||||
if( result.hasMessage() )
|
//if( result.hasMessage() )
|
||||||
|
if( _stats.infoMessages.size() == 1 )
|
||||||
messageLabel = "with message";
|
messageLabel = "with message";
|
||||||
|
if( _stats.infoMessages.size() > 1 )
|
||||||
|
messageLabel = "with messages";
|
||||||
break;
|
break;
|
||||||
case ResultWas::ExpressionFailed:
|
case ResultWas::ExpressionFailed:
|
||||||
if( result.isOk() ) {
|
if( result.isOk() ) {
|
||||||
@ -116,9 +120,13 @@ namespace Catch {
|
|||||||
colour = TextColour::Error;
|
colour = TextColour::Error;
|
||||||
passOrFail = "FAILED";
|
passOrFail = "FAILED";
|
||||||
}
|
}
|
||||||
if( result.hasMessage() ){
|
if( _stats.infoMessages.size() == 1 )
|
||||||
messageLabel = "with message";
|
messageLabel = "with message";
|
||||||
}
|
if( _stats.infoMessages.size() > 1 )
|
||||||
|
messageLabel = "with messages";
|
||||||
|
// if( result.hasMessage() ){
|
||||||
|
// messageLabel = "with message";
|
||||||
|
// }
|
||||||
break;
|
break;
|
||||||
case ResultWas::ThrewException:
|
case ResultWas::ThrewException:
|
||||||
colour = TextColour::Error;
|
colour = TextColour::Error;
|
||||||
@ -139,13 +147,21 @@ namespace Catch {
|
|||||||
case ResultWas::ExplicitFailure:
|
case ResultWas::ExplicitFailure:
|
||||||
passOrFail = "FAILED";
|
passOrFail = "FAILED";
|
||||||
colour = TextColour::Error;
|
colour = TextColour::Error;
|
||||||
|
// messageLabel = "explicitly with message";
|
||||||
|
if( _stats.infoMessages.size() == 1 )
|
||||||
messageLabel = "explicitly with message";
|
messageLabel = "explicitly with message";
|
||||||
|
if( _stats.infoMessages.size() > 1 )
|
||||||
|
messageLabel = "explicitly with messages";
|
||||||
break;
|
break;
|
||||||
case ResultWas::Exception:
|
case ResultWas::Exception:
|
||||||
passOrFail = "FAILED";
|
passOrFail = "FAILED";
|
||||||
colour = TextColour::Error;
|
colour = TextColour::Error;
|
||||||
if( result.hasMessage() )
|
if( _stats.infoMessages.size() == 1 )
|
||||||
messageLabel = "with message";
|
messageLabel = "with message";
|
||||||
|
if( _stats.infoMessages.size() > 1 )
|
||||||
|
messageLabel = "with messages";
|
||||||
|
// if( result.hasMessage() )
|
||||||
|
// messageLabel = "with message";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// These cases are here to prevent compiler warnings
|
// These cases are here to prevent compiler warnings
|
||||||
@ -196,8 +212,13 @@ namespace Catch {
|
|||||||
void printMessage() const {
|
void printMessage() const {
|
||||||
if( !messageLabel.empty() )
|
if( !messageLabel.empty() )
|
||||||
stream << messageLabel << ":" << "\n";
|
stream << messageLabel << ":" << "\n";
|
||||||
if( !message.empty() )
|
for( std::vector<MessageInfo>::const_iterator it = messages.begin(), itEnd = messages.end();
|
||||||
stream << wrapLongStrings( message ) << "\n";
|
it != itEnd;
|
||||||
|
++it ) {
|
||||||
|
stream << wrapLongStrings( it->message ) << "\n";
|
||||||
|
}
|
||||||
|
// if( !message.empty() )
|
||||||
|
// stream << wrapLongStrings( message ) << "\n";
|
||||||
}
|
}
|
||||||
void printSourceInfo() const {
|
void printSourceInfo() const {
|
||||||
TextColour colourGuard( TextColour::FileName );
|
TextColour colourGuard( TextColour::FileName );
|
||||||
@ -215,6 +236,7 @@ namespace Catch {
|
|||||||
std::string passOrFail;
|
std::string passOrFail;
|
||||||
std::string messageLabel;
|
std::string messageLabel;
|
||||||
std::string message;
|
std::string message;
|
||||||
|
std::vector<MessageInfo> messages;
|
||||||
};
|
};
|
||||||
|
|
||||||
void lazyPrint() {
|
void lazyPrint() {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
CatchSelfTest is a CATCH v0.9 b15 (integration) host application.
|
CatchSelfTest is a CATCH v0.9 b17 (integration) host application.
|
||||||
Run with -? for options
|
Run with -? for options
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -1055,7 +1055,7 @@ PASSED:
|
|||||||
ExceptionTests.cpp:60:
|
ExceptionTests.cpp:60:
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
{Unknown expression after this line}
|
{Unknown expression after the reported line}
|
||||||
due to unexpected exception with message:
|
due to unexpected exception with message:
|
||||||
unexpected exception
|
unexpected exception
|
||||||
ExceptionTests.cpp:60:
|
ExceptionTests.cpp:60:
|
||||||
@ -2002,6 +2002,7 @@ GeneratorTests.cpp:40:
|
|||||||
...............................................................................
|
...............................................................................
|
||||||
|
|
||||||
warning:
|
warning:
|
||||||
|
this is a message
|
||||||
this is a warning
|
this is a warning
|
||||||
MessageTests.cpp:14:
|
MessageTests.cpp:14:
|
||||||
|
|
||||||
@ -2021,18 +2022,13 @@ MessageTests.cpp:18:
|
|||||||
./failing/message/info/1
|
./failing/message/info/1
|
||||||
...............................................................................
|
...............................................................................
|
||||||
|
|
||||||
info:
|
|
||||||
this message should be logged
|
|
||||||
MessageTests.cpp:23:
|
|
||||||
|
|
||||||
info:
|
|
||||||
so should this
|
|
||||||
MessageTests.cpp:24:
|
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
REQUIRE( a == 1 )
|
REQUIRE( a == 1 )
|
||||||
with expansion:
|
with expansion:
|
||||||
2 == 1
|
2 == 1
|
||||||
|
with messages:
|
||||||
|
this message should be logged
|
||||||
|
so should this
|
||||||
MessageTests.cpp:26:
|
MessageTests.cpp:26:
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -2043,36 +2039,32 @@ PASSED:
|
|||||||
CHECK( a == 2 )
|
CHECK( a == 2 )
|
||||||
with expansion:
|
with expansion:
|
||||||
2 == 2
|
2 == 2
|
||||||
|
with message:
|
||||||
|
this message should not be logged
|
||||||
MessageTests.cpp:33:
|
MessageTests.cpp:33:
|
||||||
|
|
||||||
info:
|
|
||||||
this message should be logged
|
|
||||||
MessageTests.cpp:31:
|
|
||||||
|
|
||||||
info:
|
|
||||||
this message should be logged, too
|
|
||||||
MessageTests.cpp:35:
|
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
CHECK( a == 1 )
|
CHECK( a == 1 )
|
||||||
with expansion:
|
with expansion:
|
||||||
2 == 1
|
2 == 1
|
||||||
|
with message:
|
||||||
|
this message should be logged
|
||||||
MessageTests.cpp:37:
|
MessageTests.cpp:37:
|
||||||
|
|
||||||
info:
|
|
||||||
and this, but later
|
|
||||||
MessageTests.cpp:39:
|
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
CHECK( a == 0 )
|
CHECK( a == 0 )
|
||||||
with expansion:
|
with expansion:
|
||||||
2 == 0
|
2 == 0
|
||||||
|
with message:
|
||||||
|
and this, but later
|
||||||
MessageTests.cpp:41:
|
MessageTests.cpp:41:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
CHECK( a == 2 )
|
CHECK( a == 2 )
|
||||||
with expansion:
|
with expansion:
|
||||||
2 == 2
|
2 == 2
|
||||||
|
with message:
|
||||||
|
but not this
|
||||||
MessageTests.cpp:45:
|
MessageTests.cpp:45:
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -2130,76 +2122,99 @@ PASSED:
|
|||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
0 < 10
|
0 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 0
|
||||||
|
i := 0
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
1 < 10
|
1 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 1
|
||||||
|
i := 1
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
2 < 10
|
2 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 2
|
||||||
|
i := 2
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
3 < 10
|
3 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 3
|
||||||
|
i := 3
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
4 < 10
|
4 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 4
|
||||||
|
i := 4
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
5 < 10
|
5 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 5
|
||||||
|
i := 5
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
6 < 10
|
6 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 6
|
||||||
|
i := 6
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
7 < 10
|
7 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 7
|
||||||
|
i := 7
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
8 < 10
|
8 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 8
|
||||||
|
i := 8
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
9 < 10
|
9 < 10
|
||||||
MessageTests.cpp:86:
|
with messages:
|
||||||
|
current counter 9
|
||||||
REQUIRE( i < 10 )
|
i := 9
|
||||||
info:
|
|
||||||
current counter 10
|
|
||||||
MessageTests.cpp:86:
|
|
||||||
|
|
||||||
REQUIRE( i < 10 )
|
|
||||||
info:
|
|
||||||
i := 10
|
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
REQUIRE( i < 10 )
|
REQUIRE( i < 10 )
|
||||||
with expansion:
|
with expansion:
|
||||||
10 < 10
|
10 < 10
|
||||||
|
with messages:
|
||||||
|
current counter 10
|
||||||
|
i := 10
|
||||||
MessageTests.cpp:86:
|
MessageTests.cpp:86:
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -2213,6 +2228,22 @@ MessageTests.cpp:92:
|
|||||||
|
|
||||||
No assertions in test case, './succeeding/nofail'
|
No assertions in test case, './succeeding/nofail'
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
just info
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
|
||||||
|
No assertions in test case, 'just info'
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
just failure
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
FAILED:
|
||||||
|
explicitly with message:
|
||||||
|
Previous info should not be seen
|
||||||
|
MessageTests.cpp:101:
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
./succeeding/Misc/Sections
|
./succeeding/Misc/Sections
|
||||||
s1
|
s1
|
||||||
@ -2347,84 +2378,68 @@ MiscTests.cpp:103:
|
|||||||
./mixed/Misc/loops
|
./mixed/Misc/loops
|
||||||
...............................................................................
|
...............................................................................
|
||||||
|
|
||||||
info:
|
FAILED:
|
||||||
|
CHECK( ( fib[i] % 2 ) == 0 )
|
||||||
|
with expansion:
|
||||||
|
1 == 0
|
||||||
|
with message:
|
||||||
Testing if fib[0] (1) is even
|
Testing if fib[0] (1) is even
|
||||||
MiscTests.cpp:114:
|
MiscTests.cpp:115:
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
CHECK( ( fib[i] % 2 ) == 0 )
|
CHECK( ( fib[i] % 2 ) == 0 )
|
||||||
with expansion:
|
with expansion:
|
||||||
1 == 0
|
1 == 0
|
||||||
MiscTests.cpp:115:
|
with message:
|
||||||
|
|
||||||
info:
|
|
||||||
Testing if fib[1] (1) is even
|
Testing if fib[1] (1) is even
|
||||||
MiscTests.cpp:114:
|
|
||||||
|
|
||||||
FAILED:
|
|
||||||
CHECK( ( fib[i] % 2 ) == 0 )
|
|
||||||
with expansion:
|
|
||||||
1 == 0
|
|
||||||
MiscTests.cpp:115:
|
MiscTests.cpp:115:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
CHECK( ( fib[i] % 2 ) == 0 )
|
CHECK( ( fib[i] % 2 ) == 0 )
|
||||||
with expansion:
|
with expansion:
|
||||||
0 == 0
|
0 == 0
|
||||||
MiscTests.cpp:115:
|
with message:
|
||||||
|
|
||||||
info:
|
|
||||||
Testing if fib[2] (2) is even
|
Testing if fib[2] (2) is even
|
||||||
MiscTests.cpp:114:
|
|
||||||
|
|
||||||
info:
|
|
||||||
Testing if fib[3] (3) is even
|
|
||||||
MiscTests.cpp:114:
|
|
||||||
|
|
||||||
FAILED:
|
|
||||||
CHECK( ( fib[i] % 2 ) == 0 )
|
|
||||||
with expansion:
|
|
||||||
1 == 0
|
|
||||||
MiscTests.cpp:115:
|
MiscTests.cpp:115:
|
||||||
|
|
||||||
info:
|
FAILED:
|
||||||
Testing if fib[4] (5) is even
|
CHECK( ( fib[i] % 2 ) == 0 )
|
||||||
MiscTests.cpp:114:
|
with expansion:
|
||||||
|
1 == 0
|
||||||
|
with message:
|
||||||
|
Testing if fib[3] (3) is even
|
||||||
|
MiscTests.cpp:115:
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
CHECK( ( fib[i] % 2 ) == 0 )
|
CHECK( ( fib[i] % 2 ) == 0 )
|
||||||
with expansion:
|
with expansion:
|
||||||
1 == 0
|
1 == 0
|
||||||
|
with message:
|
||||||
|
Testing if fib[4] (5) is even
|
||||||
MiscTests.cpp:115:
|
MiscTests.cpp:115:
|
||||||
|
|
||||||
PASSED:
|
PASSED:
|
||||||
CHECK( ( fib[i] % 2 ) == 0 )
|
CHECK( ( fib[i] % 2 ) == 0 )
|
||||||
with expansion:
|
with expansion:
|
||||||
0 == 0
|
0 == 0
|
||||||
MiscTests.cpp:115:
|
with message:
|
||||||
|
|
||||||
info:
|
|
||||||
Testing if fib[5] (8) is even
|
Testing if fib[5] (8) is even
|
||||||
MiscTests.cpp:114:
|
|
||||||
|
|
||||||
info:
|
|
||||||
Testing if fib[6] (13) is even
|
|
||||||
MiscTests.cpp:114:
|
|
||||||
|
|
||||||
FAILED:
|
|
||||||
CHECK( ( fib[i] % 2 ) == 0 )
|
|
||||||
with expansion:
|
|
||||||
1 == 0
|
|
||||||
MiscTests.cpp:115:
|
MiscTests.cpp:115:
|
||||||
|
|
||||||
info:
|
FAILED:
|
||||||
Testing if fib[7] (21) is even
|
CHECK( ( fib[i] % 2 ) == 0 )
|
||||||
MiscTests.cpp:114:
|
with expansion:
|
||||||
|
1 == 0
|
||||||
|
with message:
|
||||||
|
Testing if fib[6] (13) is even
|
||||||
|
MiscTests.cpp:115:
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
CHECK( ( fib[i] % 2 ) == 0 )
|
CHECK( ( fib[i] % 2 ) == 0 )
|
||||||
with expansion:
|
with expansion:
|
||||||
1 == 0
|
1 == 0
|
||||||
|
with message:
|
||||||
|
Testing if fib[7] (21) is even
|
||||||
MiscTests.cpp:115:
|
MiscTests.cpp:115:
|
||||||
|
|
||||||
Some information
|
Some information
|
||||||
@ -2456,16 +2471,11 @@ MiscTests.cpp:134:
|
|||||||
./failing/info
|
./failing/info
|
||||||
...............................................................................
|
...............................................................................
|
||||||
|
|
||||||
info:
|
|
||||||
hi
|
|
||||||
MiscTests.cpp:139:
|
|
||||||
|
|
||||||
info:
|
|
||||||
i := 7
|
|
||||||
MiscTests.cpp:141:
|
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
REQUIRE( false )
|
REQUIRE( false )
|
||||||
|
with messages:
|
||||||
|
hi
|
||||||
|
i := 7
|
||||||
MiscTests.cpp:142:
|
MiscTests.cpp:142:
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -2552,12 +2562,10 @@ No assertions in section, 'encoded chars'
|
|||||||
./manual/onechar
|
./manual/onechar
|
||||||
...............................................................................
|
...............................................................................
|
||||||
|
|
||||||
info:
|
|
||||||
3
|
|
||||||
MiscTests.cpp:195:
|
|
||||||
|
|
||||||
FAILED:
|
FAILED:
|
||||||
REQUIRE( false )
|
REQUIRE( false )
|
||||||
|
with message:
|
||||||
|
3
|
||||||
MiscTests.cpp:196:
|
MiscTests.cpp:196:
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -4243,10 +4251,10 @@ with expansion:
|
|||||||
BDDTests.cpp:29:
|
BDDTests.cpp:29:
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
96 test cases - 45 failed (610 assertions - 102 failed)
|
98 test cases - 47 failed (612 assertions - 104 failed)
|
||||||
|
|
||||||
|
|
||||||
CatchSelfTest is a CATCH v0.9 b15 (integration) host application.
|
CatchSelfTest is a CATCH v0.9 b17 (integration) host application.
|
||||||
Run with -? for options
|
Run with -? for options
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -4525,7 +4533,7 @@ ConditionTests.cpp:72:
|
|||||||
12 test cases - 3 failed (38 assertions - 4 failed)
|
12 test cases - 3 failed (38 assertions - 4 failed)
|
||||||
|
|
||||||
<testsuites>
|
<testsuites>
|
||||||
<testsuite name="~dummy" errors="8" failures="77" tests="610" hostname="tbd" time="tbd" timestamp="tbd">
|
<testsuite name="~dummy" errors="8" failures="78" tests="612" hostname="tbd" time="tbd" timestamp="tbd">
|
||||||
<testcase classname="global" name="./succeeding/Approx/simple" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Approx/simple" time="tbd"/>
|
||||||
<testcase classname="global" name="./succeeding/Approx/epsilon" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Approx/epsilon" time="tbd"/>
|
||||||
<testcase classname="global" name="./succeeding/Approx/float" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Approx/float" time="tbd"/>
|
||||||
@ -4715,7 +4723,7 @@ ExceptionTests.cpp:52
|
|||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./failing/exceptions/implicit/2" time="tbd">
|
<testcase classname="global" name="./failing/exceptions/implicit/2" time="tbd">
|
||||||
<error message="{Unknown expression after this line}">
|
<error message="{Unknown expression after the reported line}">
|
||||||
ExceptionTests.cpp:60
|
ExceptionTests.cpp:60
|
||||||
</error>
|
</error>
|
||||||
</testcase>
|
</testcase>
|
||||||
@ -4750,29 +4758,14 @@ MessageTests.cpp:14
|
|||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/succeed" time="tbd"/>
|
<testcase classname="global" name="./succeeding/succeed" time="tbd"/>
|
||||||
<testcase classname="global" name="./failing/message/info/1" time="tbd">
|
<testcase classname="global" name="./failing/message/info/1" time="tbd">
|
||||||
<info type="INFO">
|
|
||||||
MessageTests.cpp:23
|
|
||||||
</info>
|
|
||||||
<info type="INFO">
|
|
||||||
MessageTests.cpp:24
|
|
||||||
</info>
|
|
||||||
<failure message="2 == 1" type="REQUIRE">
|
<failure message="2 == 1" type="REQUIRE">
|
||||||
MessageTests.cpp:26
|
MessageTests.cpp:26
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./mixed/message/info/2" time="tbd">
|
<testcase classname="global" name="./mixed/message/info/2" time="tbd">
|
||||||
<info type="INFO">
|
|
||||||
MessageTests.cpp:31
|
|
||||||
</info>
|
|
||||||
<info type="INFO">
|
|
||||||
MessageTests.cpp:35
|
|
||||||
</info>
|
|
||||||
<failure message="2 == 1" type="CHECK">
|
<failure message="2 == 1" type="CHECK">
|
||||||
MessageTests.cpp:37
|
MessageTests.cpp:37
|
||||||
</failure>
|
</failure>
|
||||||
<info type="INFO">
|
|
||||||
MessageTests.cpp:39
|
|
||||||
</info>
|
|
||||||
<failure message="2 == 0" type="CHECK">
|
<failure message="2 == 0" type="CHECK">
|
||||||
MessageTests.cpp:41
|
MessageTests.cpp:41
|
||||||
</failure>
|
</failure>
|
||||||
@ -4797,12 +4790,6 @@ Message from section two
|
|||||||
</system-out>
|
</system-out>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./mixed/message/scoped" time="tbd">
|
<testcase classname="global" name="./mixed/message/scoped" time="tbd">
|
||||||
<info message="i < 10" type="REQUIRE">
|
|
||||||
MessageTests.cpp:86
|
|
||||||
</info>
|
|
||||||
<info message="i < 10" type="REQUIRE">
|
|
||||||
MessageTests.cpp:86
|
|
||||||
</info>
|
|
||||||
<failure message="10 < 10" type="REQUIRE">
|
<failure message="10 < 10" type="REQUIRE">
|
||||||
MessageTests.cpp:86
|
MessageTests.cpp:86
|
||||||
</failure>
|
</failure>
|
||||||
@ -4812,6 +4799,12 @@ MessageTests.cpp:86
|
|||||||
MessageTests.cpp:92
|
MessageTests.cpp:92
|
||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
|
<testcase classname="global" name="just info" time="tbd"/>
|
||||||
|
<testcase classname="global" name="just failure" time="tbd">
|
||||||
|
<failure type="FAIL">
|
||||||
|
MessageTests.cpp:101
|
||||||
|
</failure>
|
||||||
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/Misc/Sections" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Misc/Sections" time="tbd"/>
|
||||||
<testcase classname="global" name="./succeeding/Misc/Sections/nested" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Misc/Sections/nested" time="tbd"/>
|
||||||
<testcase classname="global" name="./mixed/Misc/Sections/nested2" time="tbd">
|
<testcase classname="global" name="./mixed/Misc/Sections/nested2" time="tbd">
|
||||||
@ -4826,45 +4819,21 @@ MiscTests.cpp:103
|
|||||||
</failure>
|
</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./mixed/Misc/loops" time="tbd">
|
<testcase classname="global" name="./mixed/Misc/loops" time="tbd">
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:114
|
|
||||||
</info>
|
|
||||||
<failure message="1 == 0" type="CHECK">
|
<failure message="1 == 0" type="CHECK">
|
||||||
MiscTests.cpp:115
|
MiscTests.cpp:115
|
||||||
</failure>
|
</failure>
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:114
|
|
||||||
</info>
|
|
||||||
<failure message="1 == 0" type="CHECK">
|
<failure message="1 == 0" type="CHECK">
|
||||||
MiscTests.cpp:115
|
MiscTests.cpp:115
|
||||||
</failure>
|
</failure>
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:114
|
|
||||||
</info>
|
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:114
|
|
||||||
</info>
|
|
||||||
<failure message="1 == 0" type="CHECK">
|
<failure message="1 == 0" type="CHECK">
|
||||||
MiscTests.cpp:115
|
MiscTests.cpp:115
|
||||||
</failure>
|
</failure>
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:114
|
|
||||||
</info>
|
|
||||||
<failure message="1 == 0" type="CHECK">
|
<failure message="1 == 0" type="CHECK">
|
||||||
MiscTests.cpp:115
|
MiscTests.cpp:115
|
||||||
</failure>
|
</failure>
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:114
|
|
||||||
</info>
|
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:114
|
|
||||||
</info>
|
|
||||||
<failure message="1 == 0" type="CHECK">
|
<failure message="1 == 0" type="CHECK">
|
||||||
MiscTests.cpp:115
|
MiscTests.cpp:115
|
||||||
</failure>
|
</failure>
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:114
|
|
||||||
</info>
|
|
||||||
<failure message="1 == 0" type="CHECK">
|
<failure message="1 == 0" type="CHECK">
|
||||||
MiscTests.cpp:115
|
MiscTests.cpp:115
|
||||||
</failure>
|
</failure>
|
||||||
@ -4879,12 +4848,6 @@ An error
|
|||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./succeeding/Misc/null strings" time="tbd"/>
|
<testcase classname="global" name="./succeeding/Misc/null strings" time="tbd"/>
|
||||||
<testcase classname="global" name="./failing/info" time="tbd">
|
<testcase classname="global" name="./failing/info" time="tbd">
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:139
|
|
||||||
</info>
|
|
||||||
<info type="CAPTURE">
|
|
||||||
MiscTests.cpp:141
|
|
||||||
</info>
|
|
||||||
<failure message="false" type="REQUIRE">
|
<failure message="false" type="REQUIRE">
|
||||||
MiscTests.cpp:142
|
MiscTests.cpp:142
|
||||||
</failure>
|
</failure>
|
||||||
@ -4909,9 +4872,6 @@ MiscTests.cpp:178
|
|||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="global" name="./misc/xmlentitycheck" time="tbd"/>
|
<testcase classname="global" name="./misc/xmlentitycheck" time="tbd"/>
|
||||||
<testcase classname="global" name="./manual/onechar" time="tbd">
|
<testcase classname="global" name="./manual/onechar" time="tbd">
|
||||||
<info type="INFO">
|
|
||||||
MiscTests.cpp:195
|
|
||||||
</info>
|
|
||||||
<failure message="false" type="REQUIRE">
|
<failure message="false" type="REQUIRE">
|
||||||
MiscTests.cpp:196
|
MiscTests.cpp:196
|
||||||
</failure>
|
</failure>
|
||||||
@ -6403,10 +6363,10 @@ ExceptionTests.cpp" line="60">
|
|||||||
</Expression>
|
</Expression>
|
||||||
ExceptionTests.cpp" line="60">
|
ExceptionTests.cpp" line="60">
|
||||||
<Original>
|
<Original>
|
||||||
{Unknown expression after this line}
|
{Unknown expression after the reported line}
|
||||||
</Original>
|
</Original>
|
||||||
<Expanded>
|
<Expanded>
|
||||||
{Unknown expression after this line}
|
{Unknown expression after the reported line}
|
||||||
</Expanded>
|
</Expanded>
|
||||||
ExceptionTests.cpp" line="60">
|
ExceptionTests.cpp" line="60">
|
||||||
unexpected exception
|
unexpected exception
|
||||||
@ -7652,12 +7612,6 @@ GeneratorTests.cpp" line="40">
|
|||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="./failing/message/info/1">
|
<TestCase name="./failing/message/info/1">
|
||||||
<Info>
|
|
||||||
this message should be logged
|
|
||||||
</Info>
|
|
||||||
<Info>
|
|
||||||
so should this
|
|
||||||
</Info>
|
|
||||||
MessageTests.cpp" line="26">
|
MessageTests.cpp" line="26">
|
||||||
<Original>
|
<Original>
|
||||||
a == 1
|
a == 1
|
||||||
@ -7677,12 +7631,6 @@ MessageTests.cpp" line="33">
|
|||||||
2 == 2
|
2 == 2
|
||||||
</Expanded>
|
</Expanded>
|
||||||
</Expression>
|
</Expression>
|
||||||
<Info>
|
|
||||||
this message should be logged
|
|
||||||
</Info>
|
|
||||||
<Info>
|
|
||||||
this message should be logged, too
|
|
||||||
</Info>
|
|
||||||
MessageTests.cpp" line="37">
|
MessageTests.cpp" line="37">
|
||||||
<Original>
|
<Original>
|
||||||
a == 1
|
a == 1
|
||||||
@ -7691,9 +7639,6 @@ MessageTests.cpp" line="37">
|
|||||||
2 == 1
|
2 == 1
|
||||||
</Expanded>
|
</Expanded>
|
||||||
</Expression>
|
</Expression>
|
||||||
<Info>
|
|
||||||
and this, but later
|
|
||||||
</Info>
|
|
||||||
MessageTests.cpp" line="41">
|
MessageTests.cpp" line="41">
|
||||||
<Original>
|
<Original>
|
||||||
a == 0
|
a == 0
|
||||||
@ -7823,28 +7768,6 @@ MessageTests.cpp" line="86">
|
|||||||
9 < 10
|
9 < 10
|
||||||
</Expanded>
|
</Expanded>
|
||||||
</Expression>
|
</Expression>
|
||||||
MessageTests.cpp" line="86">
|
|
||||||
<Original>
|
|
||||||
i < 10
|
|
||||||
</Original>
|
|
||||||
<Expanded>
|
|
||||||
i < 10
|
|
||||||
</Expanded>
|
|
||||||
<Info>
|
|
||||||
current counter 10
|
|
||||||
</Info>
|
|
||||||
</Expression>
|
|
||||||
MessageTests.cpp" line="86">
|
|
||||||
<Original>
|
|
||||||
i < 10
|
|
||||||
</Original>
|
|
||||||
<Expanded>
|
|
||||||
i < 10
|
|
||||||
</Expanded>
|
|
||||||
<Info>
|
|
||||||
i := 10
|
|
||||||
</Info>
|
|
||||||
</Expression>
|
|
||||||
MessageTests.cpp" line="86">
|
MessageTests.cpp" line="86">
|
||||||
<Original>
|
<Original>
|
||||||
i < 10
|
i < 10
|
||||||
@ -7866,6 +7789,15 @@ MessageTests.cpp" line="92">
|
|||||||
</Expression>
|
</Expression>
|
||||||
<OverallResult success="false"/>
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
|
<TestCase name="just info">
|
||||||
|
<OverallResult success="true"/>
|
||||||
|
</TestCase>
|
||||||
|
<TestCase name="just failure">
|
||||||
|
<Failure>
|
||||||
|
Previous info should not be seen
|
||||||
|
</Failure>
|
||||||
|
<OverallResult success="false"/>
|
||||||
|
</TestCase>
|
||||||
<TestCase name="./succeeding/Misc/Sections">
|
<TestCase name="./succeeding/Misc/Sections">
|
||||||
<Section name="s1" description="doesn't equal">
|
<Section name="s1" description="doesn't equal">
|
||||||
MiscTests.cpp" line="25">
|
MiscTests.cpp" line="25">
|
||||||
@ -8013,9 +7945,6 @@ MiscTests.cpp" line="103">
|
|||||||
<OverallResult success="false"/>
|
<OverallResult success="false"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="./mixed/Misc/loops">
|
<TestCase name="./mixed/Misc/loops">
|
||||||
<Info>
|
|
||||||
Testing if fib[0] (1) is even
|
|
||||||
</Info>
|
|
||||||
MiscTests.cpp" line="115">
|
MiscTests.cpp" line="115">
|
||||||
<Original>
|
<Original>
|
||||||
( fib[i] % 2 ) == 0
|
( fib[i] % 2 ) == 0
|
||||||
@ -8024,9 +7953,6 @@ MiscTests.cpp" line="115">
|
|||||||
1 == 0
|
1 == 0
|
||||||
</Expanded>
|
</Expanded>
|
||||||
</Expression>
|
</Expression>
|
||||||
<Info>
|
|
||||||
Testing if fib[1] (1) is even
|
|
||||||
</Info>
|
|
||||||
MiscTests.cpp" line="115">
|
MiscTests.cpp" line="115">
|
||||||
<Original>
|
<Original>
|
||||||
( fib[i] % 2 ) == 0
|
( fib[i] % 2 ) == 0
|
||||||
@ -8043,12 +7969,6 @@ MiscTests.cpp" line="115">
|
|||||||
0 == 0
|
0 == 0
|
||||||
</Expanded>
|
</Expanded>
|
||||||
</Expression>
|
</Expression>
|
||||||
<Info>
|
|
||||||
Testing if fib[2] (2) is even
|
|
||||||
</Info>
|
|
||||||
<Info>
|
|
||||||
Testing if fib[3] (3) is even
|
|
||||||
</Info>
|
|
||||||
MiscTests.cpp" line="115">
|
MiscTests.cpp" line="115">
|
||||||
<Original>
|
<Original>
|
||||||
( fib[i] % 2 ) == 0
|
( fib[i] % 2 ) == 0
|
||||||
@ -8057,9 +7977,6 @@ MiscTests.cpp" line="115">
|
|||||||
1 == 0
|
1 == 0
|
||||||
</Expanded>
|
</Expanded>
|
||||||
</Expression>
|
</Expression>
|
||||||
<Info>
|
|
||||||
Testing if fib[4] (5) is even
|
|
||||||
</Info>
|
|
||||||
MiscTests.cpp" line="115">
|
MiscTests.cpp" line="115">
|
||||||
<Original>
|
<Original>
|
||||||
( fib[i] % 2 ) == 0
|
( fib[i] % 2 ) == 0
|
||||||
@ -8076,12 +7993,6 @@ MiscTests.cpp" line="115">
|
|||||||
0 == 0
|
0 == 0
|
||||||
</Expanded>
|
</Expanded>
|
||||||
</Expression>
|
</Expression>
|
||||||
<Info>
|
|
||||||
Testing if fib[5] (8) is even
|
|
||||||
</Info>
|
|
||||||
<Info>
|
|
||||||
Testing if fib[6] (13) is even
|
|
||||||
</Info>
|
|
||||||
MiscTests.cpp" line="115">
|
MiscTests.cpp" line="115">
|
||||||
<Original>
|
<Original>
|
||||||
( fib[i] % 2 ) == 0
|
( fib[i] % 2 ) == 0
|
||||||
@ -8090,9 +8001,6 @@ MiscTests.cpp" line="115">
|
|||||||
1 == 0
|
1 == 0
|
||||||
</Expanded>
|
</Expanded>
|
||||||
</Expression>
|
</Expression>
|
||||||
<Info>
|
|
||||||
Testing if fib[7] (21) is even
|
|
||||||
</Info>
|
|
||||||
MiscTests.cpp" line="115">
|
MiscTests.cpp" line="115">
|
||||||
<Original>
|
<Original>
|
||||||
( fib[i] % 2 ) == 0
|
( fib[i] % 2 ) == 0
|
||||||
@ -8126,12 +8034,6 @@ MiscTests.cpp" line="134">
|
|||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="./failing/info">
|
<TestCase name="./failing/info">
|
||||||
<Info>
|
|
||||||
hi
|
|
||||||
</Info>
|
|
||||||
<Info>
|
|
||||||
i := 7
|
|
||||||
</Info>
|
|
||||||
MiscTests.cpp" line="142">
|
MiscTests.cpp" line="142">
|
||||||
<Original>
|
<Original>
|
||||||
false
|
false
|
||||||
@ -8228,9 +8130,6 @@ MiscTests.cpp" line="178">
|
|||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<TestCase name="./manual/onechar">
|
<TestCase name="./manual/onechar">
|
||||||
<Info>
|
|
||||||
3
|
|
||||||
</Info>
|
|
||||||
MiscTests.cpp" line="196">
|
MiscTests.cpp" line="196">
|
||||||
<Original>
|
<Original>
|
||||||
false
|
false
|
||||||
@ -9886,9 +9785,9 @@ BDDTests.cpp" line="29">
|
|||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<OverallResults successes="508" failures="102"/>
|
<OverallResults successes="508" failures="104"/>
|
||||||
</Group>
|
</Group>
|
||||||
<OverallResults successes="508" failures="102"/>
|
<OverallResults successes="508" failures="104"/>
|
||||||
</Catch>
|
</Catch>
|
||||||
[Started testing: CatchSelfTest]
|
[Started testing: CatchSelfTest]
|
||||||
[Started group: '~dummy']
|
[Started group: '~dummy']
|
||||||
@ -10136,7 +10035,7 @@ ExceptionTests.cpp:52: Unexpected exception with message: 'unexpected exception'
|
|||||||
|
|
||||||
[Running: ./failing/exceptions/implicit/2]
|
[Running: ./failing/exceptions/implicit/2]
|
||||||
ExceptionTests.cpp:60: 1 == 1 succeeded
|
ExceptionTests.cpp:60: 1 == 1 succeeded
|
||||||
ExceptionTests.cpp:60: {Unknown expression after this line} failed with unexpected exception with message: 'unexpected exception'
|
ExceptionTests.cpp:60: {Unknown expression after the reported line} failed with unexpected exception with message: 'unexpected exception'
|
||||||
[Finished: './failing/exceptions/implicit/2' 1 test case failed (1 of 2 assertions failed)]
|
[Finished: './failing/exceptions/implicit/2' 1 test case failed (1 of 2 assertions failed)]
|
||||||
|
|
||||||
[Running: ./succeeding/exceptions/implicit]
|
[Running: ./succeeding/exceptions/implicit]
|
||||||
@ -10330,17 +10229,12 @@ MessageTests.cpp:18: succeeded
|
|||||||
[Finished: './succeeding/succeed' All tests passed (1 assertion in 1 test case)]
|
[Finished: './succeeding/succeed' All tests passed (1 assertion in 1 test case)]
|
||||||
|
|
||||||
[Running: ./failing/message/info/1]
|
[Running: ./failing/message/info/1]
|
||||||
MessageTests.cpp:23: [info: this message should be logged]
|
|
||||||
MessageTests.cpp:24: [info: so should this]
|
|
||||||
MessageTests.cpp:26: a == 1 failed for: 2 == 1
|
MessageTests.cpp:26: a == 1 failed for: 2 == 1
|
||||||
[Finished: './failing/message/info/1' 1 test case failed (1 assertion failed)]
|
[Finished: './failing/message/info/1' 1 test case failed (1 assertion failed)]
|
||||||
|
|
||||||
[Running: ./mixed/message/info/2]
|
[Running: ./mixed/message/info/2]
|
||||||
MessageTests.cpp:33: a == 2 succeeded for: 2 == 2
|
MessageTests.cpp:33: a == 2 succeeded for: 2 == 2
|
||||||
MessageTests.cpp:31: [info: this message should be logged]
|
|
||||||
MessageTests.cpp:35: [info: this message should be logged, too]
|
|
||||||
MessageTests.cpp:37: a == 1 failed for: 2 == 1
|
MessageTests.cpp:37: a == 1 failed for: 2 == 1
|
||||||
MessageTests.cpp:39: [info: and this, but later]
|
|
||||||
MessageTests.cpp:41: a == 0 failed for: 2 == 0
|
MessageTests.cpp:41: a == 0 failed for: 2 == 0
|
||||||
MessageTests.cpp:45: a == 2 succeeded for: 2 == 2
|
MessageTests.cpp:45: a == 2 succeeded for: 2 == 2
|
||||||
[Finished: './mixed/message/info/2' 1 test case failed (2 of 4 assertions failed)]
|
[Finished: './mixed/message/info/2' 1 test case failed (2 of 4 assertions failed)]
|
||||||
@ -10389,8 +10283,6 @@ MessageTests.cpp:86: i < 10 succeeded for: 6 < 10
|
|||||||
MessageTests.cpp:86: i < 10 succeeded for: 7 < 10
|
MessageTests.cpp:86: i < 10 succeeded for: 7 < 10
|
||||||
MessageTests.cpp:86: i < 10 succeeded for: 8 < 10
|
MessageTests.cpp:86: i < 10 succeeded for: 8 < 10
|
||||||
MessageTests.cpp:86: i < 10 succeeded for: 9 < 10
|
MessageTests.cpp:86: i < 10 succeeded for: 9 < 10
|
||||||
MessageTests.cpp:86: i < 10 succeeded[info: current counter 10]
|
|
||||||
MessageTests.cpp:86: i < 10 succeeded[info: i := 10]
|
|
||||||
MessageTests.cpp:86: i < 10 failed for: 10 < 10
|
MessageTests.cpp:86: i < 10 failed for: 10 < 10
|
||||||
[Finished: './mixed/message/scoped' 1 test case failed (1 of 11 assertions failed)]
|
[Finished: './mixed/message/scoped' 1 test case failed (1 of 11 assertions failed)]
|
||||||
|
|
||||||
@ -10401,6 +10293,16 @@ No assertions in test case, './succeeding/nofail'
|
|||||||
|
|
||||||
[Finished: './succeeding/nofail' 1 test case failed (1 assertion failed)]
|
[Finished: './succeeding/nofail' 1 test case failed (1 assertion failed)]
|
||||||
|
|
||||||
|
[Running: just info]
|
||||||
|
|
||||||
|
No assertions in test case, 'just info'
|
||||||
|
|
||||||
|
[Finished: 'just info' 1 test case failed (1 assertion failed)]
|
||||||
|
|
||||||
|
[Running: just failure]
|
||||||
|
MessageTests.cpp:101: failed with message: 'Previous info should not be seen'
|
||||||
|
[Finished: 'just failure' 1 test case failed (1 assertion failed)]
|
||||||
|
|
||||||
[Running: ./succeeding/Misc/Sections]
|
[Running: ./succeeding/Misc/Sections]
|
||||||
[Started section: 's1']
|
[Started section: 's1']
|
||||||
MiscTests.cpp:25: a != b succeeded for: 1 != 2
|
MiscTests.cpp:25: a != b succeeded for: 1 != 2
|
||||||
@ -10484,21 +10386,13 @@ MiscTests.cpp:103: b > a failed for: 0 > 1
|
|||||||
[Finished: './mixed/Misc/Sections/loops' 1 test case failed (1 assertion failed)]
|
[Finished: './mixed/Misc/Sections/loops' 1 test case failed (1 assertion failed)]
|
||||||
|
|
||||||
[Running: ./mixed/Misc/loops]
|
[Running: ./mixed/Misc/loops]
|
||||||
MiscTests.cpp:114: [info: Testing if fib[0] (1) is even]
|
|
||||||
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
||||||
MiscTests.cpp:114: [info: Testing if fib[1] (1) is even]
|
|
||||||
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
||||||
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 succeeded for: 0 == 0
|
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 succeeded for: 0 == 0
|
||||||
MiscTests.cpp:114: [info: Testing if fib[2] (2) is even]
|
|
||||||
MiscTests.cpp:114: [info: Testing if fib[3] (3) is even]
|
|
||||||
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
||||||
MiscTests.cpp:114: [info: Testing if fib[4] (5) is even]
|
|
||||||
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
||||||
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 succeeded for: 0 == 0
|
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 succeeded for: 0 == 0
|
||||||
MiscTests.cpp:114: [info: Testing if fib[5] (8) is even]
|
|
||||||
MiscTests.cpp:114: [info: Testing if fib[6] (13) is even]
|
|
||||||
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
||||||
MiscTests.cpp:114: [info: Testing if fib[7] (21) is even]
|
|
||||||
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
MiscTests.cpp:115: ( fib[i] % 2 ) == 0 failed for: 1 == 0
|
||||||
[Finished: './mixed/Misc/loops' 1 test case failed (6 of 8 assertions failed)]
|
[Finished: './mixed/Misc/loops' 1 test case failed (6 of 8 assertions failed)]
|
||||||
Some information
|
Some information
|
||||||
@ -10516,8 +10410,6 @@ MiscTests.cpp:134: makeString( true ) == static_cast<char*>(__null) succeeded fo
|
|||||||
[Finished: './succeeding/Misc/null strings' All tests passed (2 assertions in 1 test case)]
|
[Finished: './succeeding/Misc/null strings' All tests passed (2 assertions in 1 test case)]
|
||||||
|
|
||||||
[Running: ./failing/info]
|
[Running: ./failing/info]
|
||||||
MiscTests.cpp:139: [info: hi]
|
|
||||||
MiscTests.cpp:141: [info: i := 7]
|
|
||||||
MiscTests.cpp:142: false failed
|
MiscTests.cpp:142: false failed
|
||||||
[Finished: './failing/info' 1 test case failed (1 assertion failed)]
|
[Finished: './failing/info' 1 test case failed (1 assertion failed)]
|
||||||
|
|
||||||
@ -10557,7 +10449,6 @@ No assertions in section, 'encoded chars'
|
|||||||
[Finished: './misc/xmlentitycheck' 1 test case failed (All 2 assertions failed)]
|
[Finished: './misc/xmlentitycheck' 1 test case failed (All 2 assertions failed)]
|
||||||
|
|
||||||
[Running: ./manual/onechar]
|
[Running: ./manual/onechar]
|
||||||
MiscTests.cpp:195: [info: 3]
|
|
||||||
MiscTests.cpp:196: false failed
|
MiscTests.cpp:196: false failed
|
||||||
[Finished: './manual/onechar' 1 test case failed (1 assertion failed)]
|
[Finished: './manual/onechar' 1 test case failed (1 assertion failed)]
|
||||||
|
|
||||||
@ -11234,10 +11125,10 @@ BDDTests.cpp:29: itDoesThis() succeeded for: true
|
|||||||
[End of section: ' Given: This stuff exists' 1 assertion passed]
|
[End of section: ' Given: This stuff exists' 1 assertion passed]
|
||||||
|
|
||||||
[Finished: 'Scenario: Do that thing with the thing' All tests passed (1 assertion in 1 test case)]
|
[Finished: 'Scenario: Do that thing with the thing' All tests passed (1 assertion in 1 test case)]
|
||||||
[End of group: '~dummy'. 45 of 96 test cases failed (102 of 610 assertions failed)]
|
[End of group: '~dummy'. 47 of 98 test cases failed (104 of 612 assertions failed)]
|
||||||
|
|
||||||
|
|
||||||
[Testing completed. 45 of 96 test cases failed (102 of 610 assertions failed)]
|
[Testing completed. 47 of 98 test cases failed (104 of 612 assertions failed)]
|
||||||
|
|
||||||
[Started testing: CatchSelfTest]
|
[Started testing: CatchSelfTest]
|
||||||
[Started group: '~dummy']
|
[Started group: '~dummy']
|
||||||
|
@ -28,11 +28,11 @@ TEST_CASE( "./failing/message/info/1", "INFO gets logged on failure" )
|
|||||||
|
|
||||||
TEST_CASE( "./mixed/message/info/2", "INFO gets logged on failure" )
|
TEST_CASE( "./mixed/message/info/2", "INFO gets logged on failure" )
|
||||||
{
|
{
|
||||||
INFO( "this message should be logged" );
|
INFO( "this message should not be logged" );
|
||||||
int a = 2;
|
int a = 2;
|
||||||
CHECK( a == 2 );
|
CHECK( a == 2 );
|
||||||
|
|
||||||
INFO( "this message should be logged, too" );
|
INFO( "this message should be logged" );
|
||||||
|
|
||||||
CHECK( a == 1 );
|
CHECK( a == 1 );
|
||||||
|
|
||||||
@ -91,3 +91,12 @@ TEST_CASE( "./succeeding/nofail", "The NO_FAIL macro reports a failure but does
|
|||||||
{
|
{
|
||||||
CHECK_NOFAIL( 1 == 2 );
|
CHECK_NOFAIL( 1 == 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE( "just info", "[info][isolated info]" )
|
||||||
|
{
|
||||||
|
INFO( "this should never be seen" );
|
||||||
|
}
|
||||||
|
TEST_CASE( "just failure", "[fail][isolated info]" )
|
||||||
|
{
|
||||||
|
FAIL( "Previous info should not be seen" );
|
||||||
|
}
|
||||||
|
2
projects/SelfTest/SurrogateCpps/catch_message.cpp
Normal file
2
projects/SelfTest/SurrogateCpps/catch_message.cpp
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
// This file is only here to verify (to the extent possible) the self sufficiency of the header
|
||||||
|
#include "catch_message.h"
|
@ -115,7 +115,7 @@ namespace Catch {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Expected::Result m_expectedResult;
|
Expected::Result m_expectedResult;
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
|
26847E5F16BBADB40043B9C1 /* catch_message.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26847E5D16BBADB40043B9C1 /* catch_message.cpp */; };
|
||||||
2694A1FD16A0000E004816E3 /* catch_line_wrap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2694A1FB16A0000E004816E3 /* catch_line_wrap.cpp */; };
|
2694A1FD16A0000E004816E3 /* catch_line_wrap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2694A1FB16A0000E004816E3 /* catch_line_wrap.cpp */; };
|
||||||
4A45DA2416161EF9004F8D6B /* catch_console_colour.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A45DA2316161EF9004F8D6B /* catch_console_colour.cpp */; };
|
4A45DA2416161EF9004F8D6B /* catch_console_colour.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A45DA2316161EF9004F8D6B /* catch_console_colour.cpp */; };
|
||||||
4A45DA2716161F1F004F8D6B /* catch_ptr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A45DA2616161F1F004F8D6B /* catch_ptr.cpp */; };
|
4A45DA2716161F1F004F8D6B /* catch_ptr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A45DA2616161F1F004F8D6B /* catch_ptr.cpp */; };
|
||||||
@ -53,6 +54,9 @@
|
|||||||
/* End PBXCopyFilesBuildPhase section */
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
|
26847E5B16BBAB790043B9C1 /* catch_message.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_message.h; sourceTree = "<group>"; };
|
||||||
|
26847E5C16BBACB60043B9C1 /* catch_message.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_message.hpp; sourceTree = "<group>"; };
|
||||||
|
26847E5D16BBADB40043B9C1 /* catch_message.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = catch_message.cpp; path = ../../../SelfTest/SurrogateCpps/catch_message.cpp; sourceTree = "<group>"; };
|
||||||
2694A1F8169FFF9B004816E3 /* catch_line_wrap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_line_wrap.h; sourceTree = "<group>"; };
|
2694A1F8169FFF9B004816E3 /* catch_line_wrap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = catch_line_wrap.h; sourceTree = "<group>"; };
|
||||||
2694A1FA169FFFEC004816E3 /* catch_line_wrap.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_line_wrap.hpp; sourceTree = "<group>"; };
|
2694A1FA169FFFEC004816E3 /* catch_line_wrap.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = catch_line_wrap.hpp; sourceTree = "<group>"; };
|
||||||
2694A1FB16A0000E004816E3 /* catch_line_wrap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = catch_line_wrap.cpp; sourceTree = "<group>"; };
|
2694A1FB16A0000E004816E3 /* catch_line_wrap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = catch_line_wrap.cpp; sourceTree = "<group>"; };
|
||||||
@ -275,6 +279,7 @@
|
|||||||
4AB3D9A1161621B500C9A0F8 /* catch_interfaces_generators.cpp */,
|
4AB3D9A1161621B500C9A0F8 /* catch_interfaces_generators.cpp */,
|
||||||
4ACE21CA166CA1B300FB5509 /* catch_option.cpp */,
|
4ACE21CA166CA1B300FB5509 /* catch_option.cpp */,
|
||||||
2694A1FB16A0000E004816E3 /* catch_line_wrap.cpp */,
|
2694A1FB16A0000E004816E3 /* catch_line_wrap.cpp */,
|
||||||
|
26847E5D16BBADB40043B9C1 /* catch_message.cpp */,
|
||||||
);
|
);
|
||||||
name = SurrogateCpps;
|
name = SurrogateCpps;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -294,6 +299,7 @@
|
|||||||
4A90B59E15D2521E00EF71BC /* catch_expressionresult_builder.hpp */,
|
4A90B59E15D2521E00EF71BC /* catch_expressionresult_builder.hpp */,
|
||||||
4A084F1C15DACEEA0027E631 /* catch_test_case_info.hpp */,
|
4A084F1C15DACEEA0027E631 /* catch_test_case_info.hpp */,
|
||||||
2694A1FA169FFFEC004816E3 /* catch_line_wrap.hpp */,
|
2694A1FA169FFFEC004816E3 /* catch_line_wrap.hpp */,
|
||||||
|
26847E5C16BBACB60043B9C1 /* catch_message.hpp */,
|
||||||
);
|
);
|
||||||
name = impl;
|
name = impl;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -314,6 +320,7 @@
|
|||||||
4AC91CCE155CF02800DC5117 /* catch_expression_lhs.hpp */,
|
4AC91CCE155CF02800DC5117 /* catch_expression_lhs.hpp */,
|
||||||
4AC91CD0155D8DA600DC5117 /* catch_expression_decomposer.hpp */,
|
4AC91CD0155D8DA600DC5117 /* catch_expression_decomposer.hpp */,
|
||||||
4A4B0F9A15CEF84800AE2392 /* catch_notimplemented_exception.h */,
|
4A4B0F9A15CEF84800AE2392 /* catch_notimplemented_exception.h */,
|
||||||
|
26847E5B16BBAB790043B9C1 /* catch_message.h */,
|
||||||
);
|
);
|
||||||
name = Assertions;
|
name = Assertions;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -473,6 +480,7 @@
|
|||||||
4AB3D9A2161621B500C9A0F8 /* catch_interfaces_generators.cpp in Sources */,
|
4AB3D9A2161621B500C9A0F8 /* catch_interfaces_generators.cpp in Sources */,
|
||||||
4ACE21CC166CA1B300FB5509 /* catch_option.cpp in Sources */,
|
4ACE21CC166CA1B300FB5509 /* catch_option.cpp in Sources */,
|
||||||
2694A1FD16A0000E004816E3 /* catch_line_wrap.cpp in Sources */,
|
2694A1FD16A0000E004816E3 /* catch_line_wrap.cpp in Sources */,
|
||||||
|
26847E5F16BBADB40043B9C1 /* catch_message.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* CATCH v0.9 build 17 (integration branch)
|
* CATCH v0.9 build 18 (integration branch)
|
||||||
* Generated: 2013-01-31 12:14:41.781000
|
* Generated: 2013-02-04 00:03:53.198397
|
||||||
* ----------------------------------------------------------
|
* ----------------------------------------------------------
|
||||||
* This file has been merged from multiple headers. Please don't edit it directly
|
* This file has been merged from multiple headers. Please don't edit it directly
|
||||||
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
|
* Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved.
|
||||||
@ -656,6 +656,9 @@ namespace Catch {
|
|||||||
inline bool isOk( ResultWas::OfType resultType ) {
|
inline bool isOk( ResultWas::OfType resultType ) {
|
||||||
return ( resultType & ResultWas::FailureBit ) == 0;
|
return ( resultType & ResultWas::FailureBit ) == 0;
|
||||||
}
|
}
|
||||||
|
inline bool isJustInfo( int flags ) {
|
||||||
|
return flags == ResultWas::Info;
|
||||||
|
}
|
||||||
|
|
||||||
// ResultAction::Value enum
|
// ResultAction::Value enum
|
||||||
struct ResultAction { enum Value {
|
struct ResultAction { enum Value {
|
||||||
@ -1036,6 +1039,61 @@ public:
|
|||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
|
// #included from: catch_message.h
|
||||||
|
#define TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
struct MessageInfo {
|
||||||
|
MessageInfo( std::string const& _macroName,
|
||||||
|
SourceLineInfo const& _lineInfo,
|
||||||
|
ResultWas::OfType _type );
|
||||||
|
|
||||||
|
std::string macroName;
|
||||||
|
SourceLineInfo lineInfo;
|
||||||
|
ResultWas::OfType type;
|
||||||
|
std::string message;
|
||||||
|
unsigned int sequence;
|
||||||
|
|
||||||
|
bool operator == ( MessageInfo const& other ) const {
|
||||||
|
return sequence == other.sequence;
|
||||||
|
}
|
||||||
|
bool operator < ( MessageInfo const& other ) const {
|
||||||
|
return sequence < other.sequence;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
static unsigned int globalCount;
|
||||||
|
};
|
||||||
|
|
||||||
|
class MessageBuilder : public MessageInfo {
|
||||||
|
public:
|
||||||
|
MessageBuilder( std::string const& _macroName,
|
||||||
|
SourceLineInfo const& _lineInfo,
|
||||||
|
ResultWas::OfType _type );
|
||||||
|
|
||||||
|
MessageInfo build() const;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
MessageBuilder& operator << ( T const& _value ) {
|
||||||
|
stream << _value;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
std::ostringstream stream;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ScopedMessageBuilder : public MessageBuilder {
|
||||||
|
public:
|
||||||
|
ScopedMessageBuilder( std::string const& _macroName,
|
||||||
|
SourceLineInfo const& _lineInfo,
|
||||||
|
ResultWas::OfType _type );
|
||||||
|
~ScopedMessageBuilder();
|
||||||
|
};
|
||||||
|
|
||||||
|
} // end namespace Catch
|
||||||
|
|
||||||
// #included from: catch_interfaces_capture.h
|
// #included from: catch_interfaces_capture.h
|
||||||
#define TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED
|
#define TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED
|
||||||
|
|
||||||
@ -1048,19 +1106,17 @@ public:
|
|||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
struct Counts {
|
struct Counts {
|
||||||
Counts() : passed( 0 ), failed( 0 ), info( 0 ) {}
|
Counts() : passed( 0 ), failed( 0 ) {}
|
||||||
|
|
||||||
Counts operator - ( const Counts& other ) const {
|
Counts operator - ( const Counts& other ) const {
|
||||||
Counts diff;
|
Counts diff;
|
||||||
diff.passed = passed - other.passed;
|
diff.passed = passed - other.passed;
|
||||||
diff.failed = failed - other.failed;
|
diff.failed = failed - other.failed;
|
||||||
diff.info = info - other.info;
|
|
||||||
return diff;
|
return diff;
|
||||||
}
|
}
|
||||||
Counts& operator += ( const Counts& other ) {
|
Counts& operator += ( const Counts& other ) {
|
||||||
passed += other.passed;
|
passed += other.passed;
|
||||||
failed += other.failed;
|
failed += other.failed;
|
||||||
info += other.info;
|
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1070,7 +1126,6 @@ namespace Catch {
|
|||||||
|
|
||||||
std::size_t passed;
|
std::size_t passed;
|
||||||
std::size_t failed;
|
std::size_t failed;
|
||||||
std::size_t info;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Totals {
|
struct Totals {
|
||||||
@ -1106,24 +1161,27 @@ namespace Catch {
|
|||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
class TestCase;
|
class TestCase;
|
||||||
class ScopedInfo;
|
|
||||||
class ExpressionResultBuilder;
|
class ExpressionResultBuilder;
|
||||||
class AssertionResult;
|
class AssertionResult;
|
||||||
struct AssertionInfo;
|
struct AssertionInfo;
|
||||||
struct SectionInfo;
|
struct SectionInfo;
|
||||||
|
class MessageBuilder;
|
||||||
|
class ScopedMessageBuilder;
|
||||||
|
|
||||||
struct IResultCapture {
|
struct IResultCapture {
|
||||||
|
|
||||||
virtual ~IResultCapture();
|
virtual ~IResultCapture();
|
||||||
|
|
||||||
virtual void testEnded( AssertionResult const& result ) = 0;
|
virtual void assertionEnded( AssertionResult const& result ) = 0;
|
||||||
virtual bool sectionStarted( SectionInfo const& sectionInfo,
|
virtual bool sectionStarted( SectionInfo const& sectionInfo,
|
||||||
Counts& assertions ) = 0;
|
Counts& assertions ) = 0;
|
||||||
virtual void sectionEnded( SectionInfo const& name, Counts const& assertions ) = 0;
|
virtual void sectionEnded( SectionInfo const& name, Counts const& assertions ) = 0;
|
||||||
virtual void pushScopedInfo( ScopedInfo* scopedInfo ) = 0;
|
virtual void pushScopedMessage( ScopedMessageBuilder const& _builder ) = 0;
|
||||||
virtual void popScopedInfo( ScopedInfo* scopedInfo ) = 0;
|
virtual void popScopedMessage( ScopedMessageBuilder const& _builder ) = 0;
|
||||||
|
|
||||||
virtual bool shouldDebugBreak() const = 0;
|
virtual bool shouldDebugBreak() const = 0;
|
||||||
|
|
||||||
|
virtual void acceptMessage( const MessageBuilder& messageBuilder ) = 0;
|
||||||
virtual ResultAction::Value acceptExpression( ExpressionResultBuilder const& assertionResult, AssertionInfo const& assertionInfo ) = 0;
|
virtual ResultAction::Value acceptExpression( ExpressionResultBuilder const& assertionResult, AssertionInfo const& assertionInfo ) = 0;
|
||||||
|
|
||||||
virtual std::string getCurrentTestName() const = 0;
|
virtual std::string getCurrentTestName() const = 0;
|
||||||
@ -2034,13 +2092,24 @@ namespace Catch
|
|||||||
|
|
||||||
struct AssertionStats {
|
struct AssertionStats {
|
||||||
AssertionStats( AssertionResult const& _assertionResult,
|
AssertionStats( AssertionResult const& _assertionResult,
|
||||||
|
std::vector<MessageInfo> const& _infoMessages,
|
||||||
Totals const& _totals )
|
Totals const& _totals )
|
||||||
: assertionResult( _assertionResult ),
|
: assertionResult( _assertionResult ),
|
||||||
|
infoMessages( _infoMessages ),
|
||||||
totals( _totals )
|
totals( _totals )
|
||||||
{}
|
{
|
||||||
|
if( assertionResult.hasMessage() ) {
|
||||||
|
// Copy message into messages list.
|
||||||
|
// !TBD This should have been done earlier, somewhere
|
||||||
|
MessageBuilder builder( assertionResult.getTestMacroName(), assertionResult.getSourceInfo(), assertionResult.getResultType() );
|
||||||
|
builder << assertionResult.getMessage();
|
||||||
|
infoMessages.push_back( builder.build() );
|
||||||
|
}
|
||||||
|
}
|
||||||
virtual ~AssertionStats();
|
virtual ~AssertionStats();
|
||||||
|
|
||||||
AssertionResult assertionResult;
|
AssertionResult assertionResult;
|
||||||
|
std::vector<MessageInfo> infoMessages;
|
||||||
Totals totals;
|
Totals totals;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2458,27 +2527,6 @@ namespace Catch {
|
|||||||
|
|
||||||
struct TestFailureException{};
|
struct TestFailureException{};
|
||||||
|
|
||||||
class ScopedInfo {
|
|
||||||
public:
|
|
||||||
ScopedInfo() : m_resultBuilder( ResultWas::Info ) {
|
|
||||||
getResultCapture().pushScopedInfo( this );
|
|
||||||
}
|
|
||||||
~ScopedInfo() {
|
|
||||||
getResultCapture().popScopedInfo( this );
|
|
||||||
}
|
|
||||||
template<typename T>
|
|
||||||
ScopedInfo& operator << ( const T& value ) {
|
|
||||||
m_resultBuilder << value;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
AssertionResult buildResult( const AssertionInfo& assertionInfo ) const {
|
|
||||||
return m_resultBuilder.buildResult( assertionInfo );
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
ExpressionResultBuilder m_resultBuilder;
|
|
||||||
};
|
|
||||||
|
|
||||||
// This is just here to avoid compiler warnings with macro constants and boolean literals
|
// This is just here to avoid compiler warnings with macro constants and boolean literals
|
||||||
inline bool isTrue( bool value ){ return value; }
|
inline bool isTrue( bool value ){ return value; }
|
||||||
|
|
||||||
@ -2572,17 +2620,23 @@ inline bool isTrue( bool value ){ return value; }
|
|||||||
} while( Catch::isTrue( false ) )
|
} while( Catch::isTrue( false ) )
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CATCH_MSG( reason, resultType, resultDisposition, macroName ) \
|
#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 ) \
|
||||||
do { \
|
do { \
|
||||||
INTERNAL_CATCH_ACCEPT_INFO( "", macroName, resultDisposition ); \
|
INTERNAL_CATCH_ACCEPT_INFO( "", macroName, resultDisposition ); \
|
||||||
INTERNAL_CATCH_ACCEPT_EXPR( Catch::ExpressionResultBuilder( resultType ) << reason, resultDisposition, true ) \
|
INTERNAL_CATCH_ACCEPT_EXPR( Catch::ExpressionResultBuilder( messageType ) << log, resultDisposition, true ) \
|
||||||
} while( Catch::isTrue( false ) )
|
} while( Catch::isTrue( false ) )
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CATCH_SCOPED_INFO( log, macroName ) \
|
#define INTERNAL_CATCH_SCOPED_INFO( log, macroName ) \
|
||||||
INTERNAL_CATCH_ACCEPT_INFO( "", macroName, Catch::ResultDisposition::Normal ); \
|
Catch::ScopedMessageBuilder INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ); \
|
||||||
Catch::ScopedInfo INTERNAL_CATCH_UNIQUE_NAME( info ); \
|
INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) << log; \
|
||||||
INTERNAL_CATCH_UNIQUE_NAME( info ) << log
|
Catch::getResultCapture().pushScopedMessage( INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) )
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \
|
#define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \
|
||||||
@ -3522,7 +3576,7 @@ namespace Catch {
|
|||||||
virtual void parseIntoConfig( const Command& cmd, ConfigData& config ) = 0;
|
virtual void parseIntoConfig( const Command& cmd, ConfigData& config ) = 0;
|
||||||
virtual std::string argsSynopsis() const = 0;
|
virtual std::string argsSynopsis() const = 0;
|
||||||
virtual std::string optionSummary() const = 0;
|
virtual std::string optionSummary() const = 0;
|
||||||
virtual std::string optionDescription() const { return ""; };
|
virtual std::string optionDescription() const { return ""; }
|
||||||
|
|
||||||
std::string optionNames() const {
|
std::string optionNames() const {
|
||||||
std::string names;
|
std::string names;
|
||||||
@ -4446,43 +4500,28 @@ namespace Catch {
|
|||||||
|
|
||||||
private: // IResultCapture
|
private: // IResultCapture
|
||||||
|
|
||||||
|
virtual void acceptMessage( const MessageBuilder& messageBuilder ) {
|
||||||
|
m_messages.push_back( messageBuilder.build() );
|
||||||
|
}
|
||||||
|
|
||||||
virtual ResultAction::Value acceptExpression( const ExpressionResultBuilder& assertionResult, const AssertionInfo& assertionInfo ) {
|
virtual ResultAction::Value acceptExpression( const ExpressionResultBuilder& assertionResult, const AssertionInfo& assertionInfo ) {
|
||||||
m_lastAssertionInfo = assertionInfo;
|
m_lastAssertionInfo = assertionInfo;
|
||||||
return actOnCurrentResult( assertionResult.buildResult( assertionInfo ) );
|
return actOnCurrentResult( assertionResult.buildResult( assertionInfo ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void testEnded( const AssertionResult& result ) {
|
virtual void assertionEnded( const AssertionResult& result ) {
|
||||||
if( result.getResultType() == ResultWas::Ok ) {
|
if( result.getResultType() == ResultWas::Ok ) {
|
||||||
m_totals.assertions.passed++;
|
m_totals.assertions.passed++;
|
||||||
}
|
}
|
||||||
else if( !result.isOk() ) {
|
else if( !result.isOk() ) {
|
||||||
m_totals.assertions.failed++;
|
m_totals.assertions.failed++;
|
||||||
|
|
||||||
{
|
|
||||||
std::vector<ScopedInfo*>::const_iterator it = m_scopedInfos.begin();
|
|
||||||
std::vector<ScopedInfo*>::const_iterator itEnd = m_scopedInfos.end();
|
|
||||||
for(; it != itEnd; ++it )
|
|
||||||
m_reporter->assertionEnded( AssertionStats( (*it)->buildResult( m_lastAssertionInfo ), m_totals ) );
|
|
||||||
}
|
|
||||||
{
|
|
||||||
std::vector<AssertionResult>::const_iterator it = m_assertionResults.begin();
|
|
||||||
std::vector<AssertionResult>::const_iterator itEnd = m_assertionResults.end();
|
|
||||||
for(; it != itEnd; ++it )
|
|
||||||
m_reporter->assertionEnded( AssertionStats( *it, m_totals ) );
|
|
||||||
}
|
|
||||||
m_assertionResults.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( result.getResultType() == ResultWas::Info )
|
m_reporter->assertionEnded( AssertionStats( result, m_messages, m_totals ) );
|
||||||
{
|
|
||||||
m_assertionResults.push_back( result );
|
|
||||||
m_totals.assertions.info++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
m_reporter->assertionEnded( AssertionStats( result, m_totals ) );
|
|
||||||
|
|
||||||
// Reset AssertionInfo
|
// Reset working state
|
||||||
m_lastAssertionInfo = AssertionInfo( "", m_lastAssertionInfo.lineInfo, "{Unknown expression after this line}" , m_lastAssertionInfo.resultDisposition );
|
m_lastAssertionInfo = AssertionInfo( "", m_lastAssertionInfo.lineInfo, "{Unknown expression after the reported line}" , m_lastAssertionInfo.resultDisposition );
|
||||||
|
m_messages.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool sectionStarted (
|
virtual bool sectionStarted (
|
||||||
@ -4519,15 +4558,15 @@ namespace Catch {
|
|||||||
m_runningTest->endSection( info.name );
|
m_runningTest->endSection( info.name );
|
||||||
|
|
||||||
m_reporter->sectionEnded( SectionStats( info, assertions, missingAssertions ) );
|
m_reporter->sectionEnded( SectionStats( info, assertions, missingAssertions ) );
|
||||||
|
m_messages.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void pushScopedInfo( ScopedInfo* scopedInfo ) {
|
virtual void pushScopedMessage( ScopedMessageBuilder const& _builder ) {
|
||||||
m_scopedInfos.push_back( scopedInfo );
|
m_messages.push_back( _builder.build() );
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void popScopedInfo( ScopedInfo* scopedInfo ) {
|
virtual void popScopedMessage( ScopedMessageBuilder const& _builder ) {
|
||||||
if( m_scopedInfos.back() == scopedInfo )
|
m_messages.erase( std::remove( m_messages.begin(), m_messages.end(), _builder ), m_messages.end() );
|
||||||
m_scopedInfos.pop_back();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool shouldDebugBreak() const {
|
virtual bool shouldDebugBreak() const {
|
||||||
@ -4554,7 +4593,7 @@ namespace Catch {
|
|||||||
|
|
||||||
ResultAction::Value actOnCurrentResult( const AssertionResult& result ) {
|
ResultAction::Value actOnCurrentResult( const AssertionResult& result ) {
|
||||||
m_lastResult = result;
|
m_lastResult = result;
|
||||||
testEnded( m_lastResult );
|
assertionEnded( m_lastResult );
|
||||||
|
|
||||||
ResultAction::Value action = ResultAction::None;
|
ResultAction::Value action = ResultAction::None;
|
||||||
|
|
||||||
@ -4572,6 +4611,7 @@ namespace Catch {
|
|||||||
try {
|
try {
|
||||||
m_lastAssertionInfo = AssertionInfo( "TEST_CASE", m_runningTest->getTestCase().getTestCaseInfo().lineInfo, "", ResultDisposition::Normal );
|
m_lastAssertionInfo = AssertionInfo( "TEST_CASE", m_runningTest->getTestCase().getTestCaseInfo().lineInfo, "", ResultDisposition::Normal );
|
||||||
m_runningTest->reset();
|
m_runningTest->reset();
|
||||||
|
|
||||||
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
if( m_reporter->getPreferences().shouldRedirectStdOut ) {
|
||||||
StreamRedirect coutRedir( std::cout, redirectedCout );
|
StreamRedirect coutRedir( std::cout, redirectedCout );
|
||||||
StreamRedirect cerrRedir( std::cerr, redirectedCerr );
|
StreamRedirect cerrRedir( std::cerr, redirectedCerr );
|
||||||
@ -4590,7 +4630,7 @@ namespace Catch {
|
|||||||
exResult << translateActiveException();
|
exResult << translateActiveException();
|
||||||
actOnCurrentResult( exResult.buildResult( m_lastAssertionInfo ) );
|
actOnCurrentResult( exResult.buildResult( m_lastAssertionInfo ) );
|
||||||
}
|
}
|
||||||
m_assertionResults.clear();
|
m_messages.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -4602,8 +4642,7 @@ namespace Catch {
|
|||||||
const Config& m_config;
|
const Config& m_config;
|
||||||
Totals m_totals;
|
Totals m_totals;
|
||||||
Ptr<IStreamingReporter> m_reporter;
|
Ptr<IStreamingReporter> m_reporter;
|
||||||
std::vector<ScopedInfo*> m_scopedInfos;
|
std::vector<MessageInfo> m_messages;
|
||||||
std::vector<AssertionResult> m_assertionResults;
|
|
||||||
IRunner* m_prevRunner;
|
IRunner* m_prevRunner;
|
||||||
IResultCapture* m_prevResultCapture;
|
IResultCapture* m_prevResultCapture;
|
||||||
const IConfig* m_prevConfig;
|
const IConfig* m_prevConfig;
|
||||||
@ -5794,7 +5833,7 @@ namespace Catch {
|
|||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
// These numbers are maintained by a script
|
// These numbers are maintained by a script
|
||||||
Version libraryVersion( 0, 9, 17, "integration" );
|
Version libraryVersion( 0, 9, 18, "integration" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// #included from: catch_line_wrap.hpp
|
// #included from: catch_line_wrap.hpp
|
||||||
@ -5854,6 +5893,52 @@ namespace Catch {
|
|||||||
|
|
||||||
} // end namespace Catch
|
} // end namespace Catch
|
||||||
|
|
||||||
|
// #included from: catch_message.hpp
|
||||||
|
#define TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED
|
||||||
|
|
||||||
|
namespace Catch {
|
||||||
|
|
||||||
|
MessageInfo::MessageInfo( std::string const& _macroName,
|
||||||
|
SourceLineInfo const& _lineInfo,
|
||||||
|
ResultWas::OfType _type )
|
||||||
|
: macroName( _macroName ),
|
||||||
|
lineInfo( _lineInfo ),
|
||||||
|
type( _type ),
|
||||||
|
sequence( ++globalCount )
|
||||||
|
{}
|
||||||
|
|
||||||
|
// 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 );
|
||||||
|
}
|
||||||
|
|
||||||
|
} // end namespace Catch
|
||||||
|
|
||||||
// #included from: ../reporters/catch_reporter_basic.hpp
|
// #included from: ../reporters/catch_reporter_basic.hpp
|
||||||
#define TWOBLUECUBES_CATCH_REPORTER_BASIC_HPP_INCLUDED
|
#define TWOBLUECUBES_CATCH_REPORTER_BASIC_HPP_INCLUDED
|
||||||
|
|
||||||
@ -6917,14 +7002,18 @@ namespace Catch {
|
|||||||
stats( _stats ),
|
stats( _stats ),
|
||||||
result( _stats.assertionResult ),
|
result( _stats.assertionResult ),
|
||||||
colour( TextColour::None ),
|
colour( TextColour::None ),
|
||||||
message( result.getMessage() )
|
message( result.getMessage() ),
|
||||||
|
messages( _stats.infoMessages )
|
||||||
{
|
{
|
||||||
switch( result.getResultType() ) {
|
switch( result.getResultType() ) {
|
||||||
case ResultWas::Ok:
|
case ResultWas::Ok:
|
||||||
colour = TextColour::Success;
|
colour = TextColour::Success;
|
||||||
passOrFail = "PASSED";
|
passOrFail = "PASSED";
|
||||||
if( result.hasMessage() )
|
//if( result.hasMessage() )
|
||||||
|
if( _stats.infoMessages.size() == 1 )
|
||||||
messageLabel = "with message";
|
messageLabel = "with message";
|
||||||
|
if( _stats.infoMessages.size() > 1 )
|
||||||
|
messageLabel = "with messages";
|
||||||
break;
|
break;
|
||||||
case ResultWas::ExpressionFailed:
|
case ResultWas::ExpressionFailed:
|
||||||
if( result.isOk() ) {
|
if( result.isOk() ) {
|
||||||
@ -6935,9 +7024,13 @@ namespace Catch {
|
|||||||
colour = TextColour::Error;
|
colour = TextColour::Error;
|
||||||
passOrFail = "FAILED";
|
passOrFail = "FAILED";
|
||||||
}
|
}
|
||||||
if( result.hasMessage() ){
|
if( _stats.infoMessages.size() == 1 )
|
||||||
messageLabel = "with message";
|
messageLabel = "with message";
|
||||||
}
|
if( _stats.infoMessages.size() > 1 )
|
||||||
|
messageLabel = "with messages";
|
||||||
|
// if( result.hasMessage() ){
|
||||||
|
// messageLabel = "with message";
|
||||||
|
// }
|
||||||
break;
|
break;
|
||||||
case ResultWas::ThrewException:
|
case ResultWas::ThrewException:
|
||||||
colour = TextColour::Error;
|
colour = TextColour::Error;
|
||||||
@ -6958,13 +7051,21 @@ namespace Catch {
|
|||||||
case ResultWas::ExplicitFailure:
|
case ResultWas::ExplicitFailure:
|
||||||
passOrFail = "FAILED";
|
passOrFail = "FAILED";
|
||||||
colour = TextColour::Error;
|
colour = TextColour::Error;
|
||||||
|
// messageLabel = "explicitly with message";
|
||||||
|
if( _stats.infoMessages.size() == 1 )
|
||||||
messageLabel = "explicitly with message";
|
messageLabel = "explicitly with message";
|
||||||
|
if( _stats.infoMessages.size() > 1 )
|
||||||
|
messageLabel = "explicitly with messages";
|
||||||
break;
|
break;
|
||||||
case ResultWas::Exception:
|
case ResultWas::Exception:
|
||||||
passOrFail = "FAILED";
|
passOrFail = "FAILED";
|
||||||
colour = TextColour::Error;
|
colour = TextColour::Error;
|
||||||
if( result.hasMessage() )
|
if( _stats.infoMessages.size() == 1 )
|
||||||
messageLabel = "with message";
|
messageLabel = "with message";
|
||||||
|
if( _stats.infoMessages.size() > 1 )
|
||||||
|
messageLabel = "with messages";
|
||||||
|
// if( result.hasMessage() )
|
||||||
|
// messageLabel = "with message";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// These cases are here to prevent compiler warnings
|
// These cases are here to prevent compiler warnings
|
||||||
@ -7015,8 +7116,13 @@ namespace Catch {
|
|||||||
void printMessage() const {
|
void printMessage() const {
|
||||||
if( !messageLabel.empty() )
|
if( !messageLabel.empty() )
|
||||||
stream << messageLabel << ":" << "\n";
|
stream << messageLabel << ":" << "\n";
|
||||||
if( !message.empty() )
|
for( std::vector<MessageInfo>::const_iterator it = messages.begin(), itEnd = messages.end();
|
||||||
stream << wrapLongStrings( message ) << "\n";
|
it != itEnd;
|
||||||
|
++it ) {
|
||||||
|
stream << wrapLongStrings( it->message ) << "\n";
|
||||||
|
}
|
||||||
|
// if( !message.empty() )
|
||||||
|
// stream << wrapLongStrings( message ) << "\n";
|
||||||
}
|
}
|
||||||
void printSourceInfo() const {
|
void printSourceInfo() const {
|
||||||
TextColour colourGuard( TextColour::FileName );
|
TextColour colourGuard( TextColour::FileName );
|
||||||
@ -7034,6 +7140,7 @@ namespace Catch {
|
|||||||
std::string passOrFail;
|
std::string passOrFail;
|
||||||
std::string messageLabel;
|
std::string messageLabel;
|
||||||
std::string message;
|
std::string message;
|
||||||
|
std::vector<MessageInfo> messages;
|
||||||
};
|
};
|
||||||
|
|
||||||
void lazyPrint() {
|
void lazyPrint() {
|
||||||
@ -7296,12 +7403,12 @@ int main (int argc, char * const argv[]) {
|
|||||||
#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" )
|
#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" )
|
||||||
#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" )
|
#define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" )
|
||||||
|
|
||||||
#define CATCH_INFO( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Info, Catch::ResultDisposition::ContinueOnFailure, "CATCH_INFO" )
|
#define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" )
|
||||||
#define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "CATCH_WARN" )
|
#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_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_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_SCOPED_INFO( msg, "CATCH_SCOPED_INFO" )
|
||||||
#define CATCH_CAPTURE( msg ) INTERNAL_CATCH_MSG( #msg " := " << msg, Catch::ResultWas::Info, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CAPTURE" )
|
#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_SCOPED_INFO( #msg " := " << msg, "CATCH_SCOPED_CAPTURE" )
|
||||||
|
|
||||||
#define CATCH_SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description )
|
#define CATCH_SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description )
|
||||||
@ -7339,12 +7446,12 @@ int main (int argc, char * const argv[]) {
|
|||||||
#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" )
|
#define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" )
|
||||||
#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" )
|
#define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" )
|
||||||
|
|
||||||
#define INFO( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Info, Catch::ResultDisposition::ContinueOnFailure, "INFO" )
|
#define INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" )
|
||||||
#define WARN( msg ) INTERNAL_CATCH_MSG( msg, Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "WARN" )
|
#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 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 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_SCOPED_INFO( msg, "SCOPED_INFO" )
|
||||||
#define CAPTURE( msg ) INTERNAL_CATCH_MSG( #msg " := " << msg, Catch::ResultWas::Info, Catch::ResultDisposition::ContinueOnFailure, "CAPTURE" )
|
#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_SCOPED_INFO( #msg " := " << msg, "SCOPED_CAPTURE" )
|
||||||
|
|
||||||
#define SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description )
|
#define SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description )
|
||||||
|
Loading…
Reference in New Issue
Block a user