# By gnzlbg
# Via gnzlbg
* 'master' of https://github.com/gnzlbg/Catch:
  Conditionally removes usage of deprecated features

Conflicts (resolved):
	include/internal/catch_common.h
	include/internal/catch_section.hpp
This commit is contained in:
Phil Nash 2014-04-18 08:49:35 +01:00
commit d7e1790347
16 changed files with 213 additions and 25 deletions

View File

@ -1,6 +1,6 @@
![catch logo](catch-logo-small.png) ![catch logo](catch-logo-small.png)
*v1.0 build 37 (master branch)* *v1.0 build 38 (master branch)*
Build status (on Travis CI) [![Build Status](https://travis-ci.org/philsquared/Catch.png)](https://travis-ci.org/philsquared/Catch) Build status (on Travis CI) [![Build Status](https://travis-ci.org/philsquared/Catch.png)](https://travis-ci.org/philsquared/Catch)

View File

@ -251,6 +251,10 @@ namespace Clara {
template<typename ConfigT> template<typename ConfigT>
struct IArgFunction { struct IArgFunction {
virtual ~IArgFunction() {} virtual ~IArgFunction() {}
# ifdef CATCH_CPP11_OR_GREATER
IArgFunction() = default;
IArgFunction( IArgFunction const& ) = default;
# endif
virtual void set( ConfigT& config, std::string const& value ) const = 0; virtual void set( ConfigT& config, std::string const& value ) const = 0;
virtual void setFlag( ConfigT& config ) const = 0; virtual void setFlag( ConfigT& config ) const = 0;
virtual bool takesArg() const = 0; virtual bool takesArg() const = 0;

View File

@ -41,6 +41,12 @@ namespace Catch {
AssertionResult(); AssertionResult();
AssertionResult( AssertionInfo const& info, AssertionResultData const& data ); AssertionResult( AssertionInfo const& info, AssertionResultData const& data );
~AssertionResult(); ~AssertionResult();
# ifdef CATCH_CPP11_OR_GREATER
AssertionResult( AssertionResult const& ) = default;
AssertionResult( AssertionResult && ) = default;
AssertionResult& operator = ( AssertionResult const& ) = default;
AssertionResult& operator = ( AssertionResult && ) = default;
# endif
bool isOk() const; bool isOk() const;
bool succeeded() const; bool succeeded() const;

View File

@ -78,6 +78,11 @@ namespace Catch {
SourceLineInfo(); SourceLineInfo();
SourceLineInfo( char const* _file, std::size_t _line ); SourceLineInfo( char const* _file, std::size_t _line );
SourceLineInfo( SourceLineInfo const& other ); SourceLineInfo( SourceLineInfo const& other );
# ifdef CATCH_CPP11_OR_GREATER
SourceLineInfo( SourceLineInfo && ) = default;
SourceLineInfo& operator = ( SourceLineInfo const& ) = default;
SourceLineInfo& operator = ( SourceLineInfo && ) = default;
# endif
bool empty() const; bool empty() const;
bool operator == ( SourceLineInfo const& other ) const; bool operator == ( SourceLineInfo const& other ) const;

View File

@ -96,5 +96,28 @@
#endif #endif
////////////////////////////////////////////////////////////////////////////////
// C++ language feature support
// detect language version:
#if (__cplusplus == 201103L)
# define CATCH_CPP11
# define CATCH_CPP11_OR_GREATER
#elif (__cplusplus >= 201103L)
# define CATCH_CPP11_OR_GREATER
#endif
// noexcept support:
#ifdef CATCH_CPP11_OR_GREATER
# if (__has_feature(cxx_noexcept))
# define CATCH_NOEXCEPT noexcept
# define CATCH_NOEXCEPT_IS(x) noexcept(x)
# endif
#endif
#ifndef CATCH_NO_EXCEPT
# define CATCH_NOEXCEPT throw()
# define CATCH_NOEXCEPT_IS(x)
#endif
#endif // TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED #endif // TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED

View File

@ -14,14 +14,21 @@
namespace Catch { namespace Catch {
// Wraps the LHS of an expression and captures the operator and RHS (if any) - wrapping them all // Wraps the LHS of an expression and captures the operator and RHS (if any) -
// in an ExpressionResultBuilder object // wrapping them all in an ExpressionResultBuilder object
template<typename T> template<typename T>
class ExpressionLhs { class ExpressionLhs {
void operator = ( ExpressionLhs const& ); ExpressionLhs& operator = ( ExpressionLhs const& );
# ifdef CATCH_CPP11_OR_GREATER
ExpressionLhs& operator = ( ExpressionLhs && ) = delete;
# endif
public: public:
ExpressionLhs( T lhs ) : m_lhs( lhs ) {} ExpressionLhs( T lhs ) : m_lhs( lhs ) {}
# ifdef CATCH_CPP11_OR_GREATER
ExpressionLhs( ExpressionLhs const& ) = default;
ExpressionLhs( ExpressionLhs && ) = default;
# endif
template<typename RhsT> template<typename RhsT>
ExpressionResultBuilder& operator == ( RhsT const& rhs ) { ExpressionResultBuilder& operator == ( RhsT const& rhs ) {

View File

@ -42,7 +42,7 @@
namespace Catch { namespace Catch {
NonCopyable::~NonCopyable() {} NonCopyable::~NonCopyable() {}
IShared::~IShared() {} IShared::~IShared() {}
StreamBufBase::~StreamBufBase() throw() {} StreamBufBase::~StreamBufBase() CATCH_NOEXCEPT {}
IContext::~IContext() {} IContext::~IContext() {}
IResultCapture::~IResultCapture() {} IResultCapture::~IResultCapture() {}
ITestCase::~ITestCase() {} ITestCase::~ITestCase() {}

View File

@ -101,6 +101,13 @@ namespace Catch
} }
virtual ~AssertionStats(); virtual ~AssertionStats();
# ifdef CATCH_CPP11_OR_GREATER
AssertionStats( AssertionStats const& ) = default;
AssertionStats( AssertionStats && ) = default;
AssertionStats& operator = ( AssertionStats const& ) = default;
AssertionStats& operator = ( AssertionStats && ) = default;
# endif
AssertionResult assertionResult; AssertionResult assertionResult;
std::vector<MessageInfo> infoMessages; std::vector<MessageInfo> infoMessages;
Totals totals; Totals totals;
@ -117,6 +124,12 @@ namespace Catch
missingAssertions( _missingAssertions ) missingAssertions( _missingAssertions )
{} {}
virtual ~SectionStats(); virtual ~SectionStats();
# ifdef CATCH_CPP11_OR_GREATER
SectionStats( SectionStats const& ) = default;
SectionStats( SectionStats && ) = default;
SectionStats& operator = ( SectionStats const& ) = default;
SectionStats& operator = ( SectionStats && ) = default;
# endif
SectionInfo sectionInfo; SectionInfo sectionInfo;
Counts assertions; Counts assertions;
@ -138,6 +151,13 @@ namespace Catch
{} {}
virtual ~TestCaseStats(); virtual ~TestCaseStats();
# ifdef CATCH_CPP11_OR_GREATER
TestCaseStats( TestCaseStats const& ) = default;
TestCaseStats( TestCaseStats && ) = default;
TestCaseStats& operator = ( TestCaseStats const& ) = default;
TestCaseStats& operator = ( TestCaseStats && ) = default;
# endif
TestCaseInfo testInfo; TestCaseInfo testInfo;
Totals totals; Totals totals;
std::string stdOut; std::string stdOut;
@ -159,6 +179,13 @@ namespace Catch
{} {}
virtual ~TestGroupStats(); virtual ~TestGroupStats();
# ifdef CATCH_CPP11_OR_GREATER
TestGroupStats( TestGroupStats const& ) = default;
TestGroupStats( TestGroupStats && ) = default;
TestGroupStats& operator = ( TestGroupStats const& ) = default;
TestGroupStats& operator = ( TestGroupStats && ) = default;
# endif
GroupInfo groupInfo; GroupInfo groupInfo;
Totals totals; Totals totals;
bool aborting; bool aborting;
@ -172,12 +199,20 @@ namespace Catch
totals( _totals ), totals( _totals ),
aborting( _aborting ) aborting( _aborting )
{} {}
virtual ~TestRunStats();
# ifndef CATCH_CPP11_OR_GREATER
TestRunStats( TestRunStats const& _other ) TestRunStats( TestRunStats const& _other )
: runInfo( _other.runInfo ), : runInfo( _other.runInfo ),
totals( _other.totals ), totals( _other.totals ),
aborting( _other.aborting ) aborting( _other.aborting )
{} {}
virtual ~TestRunStats(); # else
TestRunStats( TestRunStats const& ) = default;
TestRunStats( TestRunStats && ) = default;
TestRunStats& operator = ( TestRunStats const& ) = default;
TestRunStats& operator = ( TestRunStats && ) = default;
# endif
TestRunInfo runInfo; TestRunInfo runInfo;
Totals totals; Totals totals;

View File

@ -18,9 +18,9 @@ namespace Catch {
public: public:
NotImplementedException( SourceLineInfo const& lineInfo ); NotImplementedException( SourceLineInfo const& lineInfo );
virtual ~NotImplementedException() throw() {} virtual ~NotImplementedException() CATCH_NOEXCEPT {}
virtual const char* what() const throw(); virtual const char* what() const CATCH_NOEXCEPT;
private: private:
std::string m_what; std::string m_what;

View File

@ -21,7 +21,7 @@ namespace Catch {
m_what = oss.str(); m_what = oss.str();
} }
const char* NotImplementedException::what() const throw() { const char* NotImplementedException::what() const CATCH_NOEXCEPT {
return m_what.c_str(); return m_what.c_str();
} }

View File

@ -22,6 +22,12 @@ namespace Catch {
std::string const& name, std::string const& name,
std::string const& description = "" ); std::string const& description = "" );
~Section(); ~Section();
# ifdef CATCH_CPP11_OR_GREATER
Section( Section const& ) = default;
Section( Section && ) = default;
Section& operator = ( Section const& ) = default;
Section& operator = ( Section && ) = default;
# endif
// This indicates whether the section should be executed or not // This indicates whether the section should be executed or not
operator bool(); operator bool();

View File

@ -28,7 +28,7 @@ namespace Catch {
setp( data, data + sizeof(data) ); setp( data, data + sizeof(data) );
} }
~StreamBufImpl() throw() { ~StreamBufImpl() CATCH_NOEXCEPT {
sync(); sync();
} }

View File

@ -8,13 +8,15 @@
#ifndef TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED #ifndef TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED
#define TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED #define TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED
#include "catch_compiler_capabilities.h"
#include <streambuf> #include <streambuf>
namespace Catch { namespace Catch {
class StreamBufBase : public std::streambuf { class StreamBufBase : public std::streambuf {
public: public:
virtual ~StreamBufBase() throw(); virtual ~StreamBufBase() CATCH_NOEXCEPT;
}; };
} }

View File

@ -13,7 +13,7 @@
namespace Catch { namespace Catch {
// These numbers are maintained by a script // These numbers are maintained by a script
Version libraryVersion( 1, 0, 37, "master" ); Version libraryVersion( 1, 0, 38, "master" );
} }
#endif // TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED #endif // TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED

View File

@ -66,11 +66,18 @@ namespace Catch {
endElement(); endElement();
} }
# ifndef CATCH_CPP11_OR_GREATER
XmlWriter& operator = ( XmlWriter const& other ) { XmlWriter& operator = ( XmlWriter const& other ) {
XmlWriter temp( other ); XmlWriter temp( other );
swap( temp ); swap( temp );
return *this; return *this;
} }
# else
XmlWriter( XmlWriter const& ) = default;
XmlWriter( XmlWriter && ) = default;
XmlWriter& operator = ( XmlWriter const& ) = default;
XmlWriter& operator = ( XmlWriter && ) = default;
# endif
void swap( XmlWriter& other ) { void swap( XmlWriter& other ) {
std::swap( m_tagIsOpen, other.m_tagIsOpen ); std::swap( m_tagIsOpen, other.m_tagIsOpen );

View File

@ -1,6 +1,6 @@
/* /*
* CATCH v1.0 build 37 (master branch) * CATCH v1.0 build 38 (master branch)
* Generated: 2014-04-18 08:30:06.534609 * Generated: 2014-04-18 08:47:21.504017
* ---------------------------------------------------------- * ----------------------------------------------------------
* 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.
@ -139,6 +139,29 @@
#endif #endif
////////////////////////////////////////////////////////////////////////////////
// C++ language feature support
// detect language version:
#if (__cplusplus == 201103L)
# define CATCH_CPP11
# define CATCH_CPP11_OR_GREATER
#elif (__cplusplus >= 201103L)
# define CATCH_CPP11_OR_GREATER
#endif
// noexcept support:
#ifdef CATCH_CPP11_OR_GREATER
# if (__has_feature(cxx_noexcept))
# define CATCH_NOEXCEPT noexcept
# define CATCH_NOEXCEPT_IS(x) noexcept(x)
# endif
#endif
#ifndef CATCH_NO_EXCEPT
# define CATCH_NOEXCEPT throw()
# define CATCH_NOEXCEPT_IS(x)
#endif
namespace Catch { namespace Catch {
class NonCopyable { class NonCopyable {
@ -196,6 +219,11 @@ namespace Catch {
SourceLineInfo(); SourceLineInfo();
SourceLineInfo( char const* _file, std::size_t _line ); SourceLineInfo( char const* _file, std::size_t _line );
SourceLineInfo( SourceLineInfo const& other ); SourceLineInfo( SourceLineInfo const& other );
# ifdef CATCH_CPP11_OR_GREATER
SourceLineInfo( SourceLineInfo && ) = default;
SourceLineInfo& operator = ( SourceLineInfo const& ) = default;
SourceLineInfo& operator = ( SourceLineInfo && ) = default;
# endif
bool empty() const; bool empty() const;
bool operator == ( SourceLineInfo const& other ) const; bool operator == ( SourceLineInfo const& other ) const;
@ -237,9 +265,9 @@ namespace Catch {
public: public:
NotImplementedException( SourceLineInfo const& lineInfo ); NotImplementedException( SourceLineInfo const& lineInfo );
virtual ~NotImplementedException() throw() {} virtual ~NotImplementedException() CATCH_NOEXCEPT {}
virtual const char* what() const throw(); virtual const char* what() const CATCH_NOEXCEPT;
private: private:
std::string m_what; std::string m_what;
@ -982,6 +1010,12 @@ namespace Catch {
AssertionResult(); AssertionResult();
AssertionResult( AssertionInfo const& info, AssertionResultData const& data ); AssertionResult( AssertionInfo const& info, AssertionResultData const& data );
~AssertionResult(); ~AssertionResult();
# ifdef CATCH_CPP11_OR_GREATER
AssertionResult( AssertionResult const& ) = default;
AssertionResult( AssertionResult && ) = default;
AssertionResult& operator = ( AssertionResult const& ) = default;
AssertionResult& operator = ( AssertionResult && ) = default;
# endif
bool isOk() const; bool isOk() const;
bool succeeded() const; bool succeeded() const;
@ -1220,14 +1254,21 @@ private:
namespace Catch { namespace Catch {
// Wraps the LHS of an expression and captures the operator and RHS (if any) - wrapping them all // Wraps the LHS of an expression and captures the operator and RHS (if any) -
// in an ExpressionResultBuilder object // wrapping them all in an ExpressionResultBuilder object
template<typename T> template<typename T>
class ExpressionLhs { class ExpressionLhs {
void operator = ( ExpressionLhs const& ); ExpressionLhs& operator = ( ExpressionLhs const& );
# ifdef CATCH_CPP11_OR_GREATER
ExpressionLhs& operator = ( ExpressionLhs && ) = delete;
# endif
public: public:
ExpressionLhs( T lhs ) : m_lhs( lhs ) {} ExpressionLhs( T lhs ) : m_lhs( lhs ) {}
# ifdef CATCH_CPP11_OR_GREATER
ExpressionLhs( ExpressionLhs const& ) = default;
ExpressionLhs( ExpressionLhs && ) = default;
# endif
template<typename RhsT> template<typename RhsT>
ExpressionResultBuilder& operator == ( RhsT const& rhs ) { ExpressionResultBuilder& operator == ( RhsT const& rhs ) {
@ -1810,6 +1851,12 @@ namespace Catch {
std::string const& name, std::string const& name,
std::string const& description = "" ); std::string const& description = "" );
~Section(); ~Section();
# ifdef CATCH_CPP11_OR_GREATER
Section( Section const& ) = default;
Section( Section && ) = default;
Section& operator = ( Section const& ) = default;
Section& operator = ( Section && ) = default;
# endif
// This indicates whether the section should be executed or not // This indicates whether the section should be executed or not
operator bool(); operator bool();
@ -3265,6 +3312,10 @@ namespace Clara {
template<typename ConfigT> template<typename ConfigT>
struct IArgFunction { struct IArgFunction {
virtual ~IArgFunction() {} virtual ~IArgFunction() {}
# ifdef CATCH_CPP11_OR_GREATER
IArgFunction() = default;
IArgFunction( IArgFunction const& ) = default;
# endif
virtual void set( ConfigT& config, std::string const& value ) const = 0; virtual void set( ConfigT& config, std::string const& value ) const = 0;
virtual void setFlag( ConfigT& config ) const = 0; virtual void setFlag( ConfigT& config ) const = 0;
virtual bool takesArg() const = 0; virtual bool takesArg() const = 0;
@ -4379,6 +4430,13 @@ namespace Catch
} }
virtual ~AssertionStats(); virtual ~AssertionStats();
# ifdef CATCH_CPP11_OR_GREATER
AssertionStats( AssertionStats const& ) = default;
AssertionStats( AssertionStats && ) = default;
AssertionStats& operator = ( AssertionStats const& ) = default;
AssertionStats& operator = ( AssertionStats && ) = default;
# endif
AssertionResult assertionResult; AssertionResult assertionResult;
std::vector<MessageInfo> infoMessages; std::vector<MessageInfo> infoMessages;
Totals totals; Totals totals;
@ -4395,6 +4453,12 @@ namespace Catch
missingAssertions( _missingAssertions ) missingAssertions( _missingAssertions )
{} {}
virtual ~SectionStats(); virtual ~SectionStats();
# ifdef CATCH_CPP11_OR_GREATER
SectionStats( SectionStats const& ) = default;
SectionStats( SectionStats && ) = default;
SectionStats& operator = ( SectionStats const& ) = default;
SectionStats& operator = ( SectionStats && ) = default;
# endif
SectionInfo sectionInfo; SectionInfo sectionInfo;
Counts assertions; Counts assertions;
@ -4416,6 +4480,13 @@ namespace Catch
{} {}
virtual ~TestCaseStats(); virtual ~TestCaseStats();
# ifdef CATCH_CPP11_OR_GREATER
TestCaseStats( TestCaseStats const& ) = default;
TestCaseStats( TestCaseStats && ) = default;
TestCaseStats& operator = ( TestCaseStats const& ) = default;
TestCaseStats& operator = ( TestCaseStats && ) = default;
# endif
TestCaseInfo testInfo; TestCaseInfo testInfo;
Totals totals; Totals totals;
std::string stdOut; std::string stdOut;
@ -4437,6 +4508,13 @@ namespace Catch
{} {}
virtual ~TestGroupStats(); virtual ~TestGroupStats();
# ifdef CATCH_CPP11_OR_GREATER
TestGroupStats( TestGroupStats const& ) = default;
TestGroupStats( TestGroupStats && ) = default;
TestGroupStats& operator = ( TestGroupStats const& ) = default;
TestGroupStats& operator = ( TestGroupStats && ) = default;
# endif
GroupInfo groupInfo; GroupInfo groupInfo;
Totals totals; Totals totals;
bool aborting; bool aborting;
@ -4450,12 +4528,20 @@ namespace Catch
totals( _totals ), totals( _totals ),
aborting( _aborting ) aborting( _aborting )
{} {}
virtual ~TestRunStats();
# ifndef CATCH_CPP11_OR_GREATER
TestRunStats( TestRunStats const& _other ) TestRunStats( TestRunStats const& _other )
: runInfo( _other.runInfo ), : runInfo( _other.runInfo ),
totals( _other.totals ), totals( _other.totals ),
aborting( _other.aborting ) aborting( _other.aborting )
{} {}
virtual ~TestRunStats(); # else
TestRunStats( TestRunStats const& ) = default;
TestRunStats( TestRunStats && ) = default;
TestRunStats& operator = ( TestRunStats const& ) = default;
TestRunStats& operator = ( TestRunStats && ) = default;
# endif
TestRunInfo runInfo; TestRunInfo runInfo;
Totals totals; Totals totals;
@ -5625,7 +5711,7 @@ namespace Catch {
m_what = oss.str(); m_what = oss.str();
} }
const char* NotImplementedException::what() const throw() { const char* NotImplementedException::what() const CATCH_NOEXCEPT {
return m_what.c_str(); return m_what.c_str();
} }
@ -5646,7 +5732,7 @@ namespace Catch {
class StreamBufBase : public std::streambuf { class StreamBufBase : public std::streambuf {
public: public:
virtual ~StreamBufBase() throw(); virtual ~StreamBufBase() CATCH_NOEXCEPT;
}; };
} }
@ -5665,7 +5751,7 @@ namespace Catch {
setp( data, data + sizeof(data) ); setp( data, data + sizeof(data) );
} }
~StreamBufImpl() throw() { ~StreamBufImpl() CATCH_NOEXCEPT {
sync(); sync();
} }
@ -6616,7 +6702,7 @@ namespace Catch {
namespace Catch { namespace Catch {
// These numbers are maintained by a script // These numbers are maintained by a script
Version libraryVersion( 1, 0, 37, "master" ); Version libraryVersion( 1, 0, 38, "master" );
} }
// #included from: catch_message.hpp // #included from: catch_message.hpp
@ -7334,11 +7420,18 @@ namespace Catch {
endElement(); endElement();
} }
# ifndef CATCH_CPP11_OR_GREATER
XmlWriter& operator = ( XmlWriter const& other ) { XmlWriter& operator = ( XmlWriter const& other ) {
XmlWriter temp( other ); XmlWriter temp( other );
swap( temp ); swap( temp );
return *this; return *this;
} }
# else
XmlWriter( XmlWriter const& ) = default;
XmlWriter( XmlWriter && ) = default;
XmlWriter& operator = ( XmlWriter const& ) = default;
XmlWriter& operator = ( XmlWriter && ) = default;
# endif
void swap( XmlWriter& other ) { void swap( XmlWriter& other ) {
std::swap( m_tagIsOpen, other.m_tagIsOpen ); std::swap( m_tagIsOpen, other.m_tagIsOpen );
@ -8223,7 +8316,7 @@ namespace Catch {
namespace Catch { namespace Catch {
NonCopyable::~NonCopyable() {} NonCopyable::~NonCopyable() {}
IShared::~IShared() {} IShared::~IShared() {}
StreamBufBase::~StreamBufBase() throw() {} StreamBufBase::~StreamBufBase() CATCH_NOEXCEPT {}
IContext::~IContext() {} IContext::~IContext() {}
IResultCapture::~IResultCapture() {} IResultCapture::~IResultCapture() {}
ITestCase::~ITestCase() {} ITestCase::~ITestCase() {}