mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-29 06:01:53 +01:00 
			
		
		
		
	Compare commits
	
		
			26 Commits
		
	
	
		
			v1.3.0-dev
			...
			v1.3.4
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 3b4edd7a48 | ||
|  | 880a2046d9 | ||
|  | ffad3a0a39 | ||
|  | 3bd20bf2cd | ||
|  | c7243562b0 | ||
|  | b84e08ad6f | ||
|  | aca16a0f99 | ||
|  | f294c98472 | ||
|  | 7424b23bfb | ||
|  | dbd3a84d92 | ||
|  | 5262e61e9d | ||
|  | a5fba672e1 | ||
|  | 2106d82881 | ||
|  | 981347b6e4 | ||
|  | 9e341231ba | ||
|  | 2b688e1cef | ||
|  | 84d1c080d6 | ||
|  | 722315a1f5 | ||
|  | fdc42d0af4 | ||
|  | d274fc571c | ||
|  | d758428fe2 | ||
|  | bc00d59a4e | ||
|  | 15317632f3 | ||
|  | a28d40e941 | ||
|  | 7da777a4b7 | ||
|  | 1dd0d4c61a | 
| @@ -1,12 +1,10 @@ | ||||
|  | ||||
|  | ||||
| *v1.3.0-develop.4* | ||||
| *v1.3.4* | ||||
|  | ||||
| Build status (on Travis CI) [](https://travis-ci.org/philsquared/Catch) | ||||
|  | ||||
| [Please see this page if you are updating from a version before 1.0](docs/whats-changed.md) | ||||
|  | ||||
| <a href="https://raw.githubusercontent.com/philsquared/Catch/master/single_include/catch.hpp">[The latest, single header, version can be downloaded directly using this link]</a> | ||||
| <a href="https://raw.githubusercontent.com/philsquared/Catch/master/single_include/catch.hpp">The latest, single header, version can be downloaded directly using this link</a> | ||||
|  | ||||
| ## What's the Catch? | ||||
|  | ||||
| @@ -19,8 +17,6 @@ This documentation comprises these three parts: | ||||
| * [Tutorial](docs/tutorial.md) - getting started | ||||
| * [Reference section](docs/Readme.md) - all the details | ||||
|  | ||||
| The documentation will continue until morale improves | ||||
|  | ||||
| ## More | ||||
| * Issues and bugs can be raised on the [Issue tracker on GitHub](https://github.com/philsquared/Catch/issues) | ||||
| * For discussion or questions please use [the dedicated Google Groups forum](https://groups.google.com/forum/?fromgroups#!forum/catch-forum) | ||||
|   | ||||
| @@ -1,24 +0,0 @@ | ||||
| ## What's new in Catch for 1.0 | ||||
|  | ||||
| After a long "developer preview" state Catch turned 1.0 in mid-2013. Just prior to this a large number of changes, some of them breaking, where merged from the integration branch and now form part of the 1.0 code-base. If this might affect you please read this summary through so you know what to expect. | ||||
|  | ||||
| * Calling Catch from your own ```main()``` has changed - please review [the updated docs](own-main.md) | ||||
| * The command line has changed. The biggest change is that test case names and tags should now only be supplied as primary arguments - in fact the ```-t``` option has been repurposed to mean "list tags". There are [updated docs for this too](command-line.md) | ||||
| * There is a new reporter interface. If you have written a custom reporter you can use the ```LegacyReporterAdapter``` to minimise any differences. Ideally you should update to the new interface - especially as it has been designed to be more robust in the face of future changes (which should be minimal). | ||||
| * The docs have moved from the wiki to the repository itself. They consist of a set of markdown files in the docs folder and are referenced directly from the README in the root. You can still read them online from GitHub. | ||||
| * Lots of new goodness - more documentation for which is coming. The existing docs have been updated to account for some of the changes already (e.g. variadic macros). A quick rundown: | ||||
| 	* Variadic macros are used, where possible, so that, e.g. you can write a ```TEST_CASE``` with just a name - or even no name at all (making it an anonymous test case). | ||||
| 	* The hierarchical naming convention is deprecated in favour of using tags (see next) | ||||
| 	* ```TEST_CASE```s (but not ```SECTION```s) can now be tagged by placing keywords in square brackets in the second argument - e.g.: ```TEST_CASE( "A nice name", "[tag1][tag2]")```. The old style is still supported but please consider using this new style. | ||||
| 	* Tests can still be "hidden" using the ```./``` prefix as before, but the preferred way now is to give it the ```[hide]``` tag (hidden tests are skipped if you run the test process without specifying any test specs). | ||||
| 	* As well as ```TEST_CASE```s and ```SECTION```s you can now also use BDD-style ```SCENARIO``` (in place of ```TEST_CASE```) and ```GIVEN```, ```WHEN``` and ```THEN``` macros (in place of ```SECTION```s). | ||||
| 	* New command line parser. Under the hood it is a complete rewrite - now powered by a command line library that will soon be spun out as a separate project: Clara. The options themselves are largely the same but there are some notable differences (as already discussed). | ||||
| 	* Completely overhauled output from the textual reporter (now the Console reporter). This now features a much clearer, cleaner format, including good use of indentation. | ||||
|  | ||||
| More information can be found in [this blog post](http://www.levelofindirection.com/journal/2013/6/28/catch-10.html). | ||||
|  | ||||
| If you find any issues please raise issue tickets on the [issue tracker on GitHub](https://github.com/philsquared/Catch/issues) as before. For general questions, comments and suggestions, though, please use the [new forums on Google Groups](https://groups.google.com/forum/?fromgroups#!forum/catch-forum). | ||||
|  | ||||
| --- | ||||
|  | ||||
| [Home](Readme.md) | ||||
| @@ -99,7 +99,7 @@ | ||||
|     #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) | ||||
|     #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) | ||||
|     #define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | ||||
|     #define CATCH_REGISTER_TEST_CASE( ... ) INTERNAL_CATCH_REGISTER_TESTCASE( __VA_ARGS__ ) | ||||
|     #define CATCH_REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) | ||||
|     #define CATCH_SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) | ||||
|     #define CATCH_FAIL( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", __VA_ARGS__ ) | ||||
|     #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", __VA_ARGS__ ) | ||||
| @@ -168,7 +168,7 @@ | ||||
|     #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) | ||||
|     #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) | ||||
|     #define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | ||||
|     #define REGISTER_TEST_CASE( ... ) INTERNAL_CATCH_REGISTER_TESTCASE( __VA_ARGS__ ) | ||||
|     #define REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) | ||||
|     #define SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) | ||||
|     #define FAIL( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", __VA_ARGS__ ) | ||||
|     #define SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", __VA_ARGS__ ) | ||||
| @@ -176,7 +176,7 @@ | ||||
|     #define TEST_CASE( name, description ) INTERNAL_CATCH_TESTCASE( name, description ) | ||||
|     #define TEST_CASE_METHOD( className, name, description ) INTERNAL_CATCH_TEST_CASE_METHOD( className, name, description ) | ||||
|     #define METHOD_AS_TEST_CASE( method, name, description ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, name, description ) | ||||
|     #define REGISTER_TEST_CASE( ... ) INTERNAL_CATCH_REGISTER_TESTCASE( __VA_ARGS__ ) | ||||
|     #define REGISTER_TEST_CASE( method, name, description ) INTERNAL_CATCH_REGISTER_TESTCASE( method, name, description ) | ||||
|     #define SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description ) | ||||
|     #define FAIL( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", msg ) | ||||
|     #define SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", msg ) | ||||
|   | ||||
| @@ -131,7 +131,7 @@ namespace Catch { | ||||
|             Catch::cout() << "For more detail usage please see the project docs\n" << std::endl; | ||||
|         } | ||||
|  | ||||
|         int applyCommandLine( int argc, char const* const argv[], OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) { | ||||
|         int applyCommandLine( int argc, char const* argv[], OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) { | ||||
|             try { | ||||
|                 m_cli.setThrowOnUnrecognisedTokens( unusedOptionBehaviour == OnUnusedOptions::Fail ); | ||||
|                 m_unusedTokens = m_cli.parseInto( argc, argv, m_configData ); | ||||
| @@ -158,13 +158,16 @@ namespace Catch { | ||||
|             m_config.reset(); | ||||
|         } | ||||
|  | ||||
|         int run( int argc, char const* const argv[] ) { | ||||
|         int run( int argc, char const* argv[] ) { | ||||
|  | ||||
|             int returnCode = applyCommandLine( argc, argv ); | ||||
|             if( returnCode == 0 ) | ||||
|                 returnCode = run(); | ||||
|             return returnCode; | ||||
|         } | ||||
|         int run( int argc, char* argv[] ) { | ||||
|             return run( argc, const_cast<char const**>( argv ) ); | ||||
|         } | ||||
|  | ||||
|         int run() { | ||||
|             if( m_configData.showHelp ) | ||||
|   | ||||
| @@ -8,8 +8,7 @@ | ||||
| #ifndef TWOBLUECUBES_CATCH_WITH_MAIN_HPP_INCLUDED | ||||
| #define TWOBLUECUBES_CATCH_WITH_MAIN_HPP_INCLUDED | ||||
|  | ||||
| #include "catch_runner.hpp" | ||||
| #define CATCH_CONFIG_MAIN | ||||
| #include "catch.hpp" | ||||
| #include "internal/catch_default_main.hpp" | ||||
|  | ||||
| #endif // TWOBLUECUBES_CATCH_WITH_MAIN_HPP_INCLUDED | ||||
|   | ||||
							
								
								
									
										201
									
								
								include/external/clara.h
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										201
									
								
								include/external/clara.h
									
									
									
									
										vendored
									
									
								
							| @@ -6,6 +6,8 @@ | ||||
|  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
|  */ | ||||
|  | ||||
| // Version 0.0.1.1 | ||||
|  | ||||
| // Only use header guard if we are not using an outer namespace | ||||
| #if !defined(TWOBLUECUBES_CLARA_H_INCLUDED) || defined(STITCH_CLARA_OPEN_NAMESPACE) | ||||
|  | ||||
| @@ -38,6 +40,7 @@ | ||||
| #include <string> | ||||
| #include <vector> | ||||
| #include <sstream> | ||||
| #include <algorithm> | ||||
|  | ||||
| // Use optional outer namespace | ||||
| #ifdef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE | ||||
| @@ -172,13 +175,171 @@ namespace Tbc { | ||||
| #endif // TBC_TEXT_FORMAT_H_INCLUDED | ||||
|  | ||||
| // ----------- end of #include from tbc_text_format.h ----------- | ||||
| // ........... back in /Users/philnash/Dev/OSS/Clara/srcs/clara.h | ||||
| // ........... back in clara.h | ||||
|  | ||||
| #undef STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE | ||||
|  | ||||
|  | ||||
| // ----------- #included from clara_compilers.h ----------- | ||||
|  | ||||
| /* | ||||
|  *  Created by Phil on 10/02/2016. | ||||
|  *  Copyright 2016 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_CLARA_COMPILERS_H_INCLUDED | ||||
| #define TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED | ||||
|  | ||||
| // Detect a number of compiler features - mostly C++11/14 conformance - by compiler | ||||
| // The following features are defined: | ||||
| // | ||||
| // CLARA_CONFIG_CPP11_NULLPTR : is nullptr supported? | ||||
| // CLARA_CONFIG_CPP11_NOEXCEPT : is noexcept supported? | ||||
| // CLARA_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods | ||||
| // CLARA_CONFIG_CPP11_OVERRIDE : is override supported? | ||||
| // CLARA_CONFIG_CPP11_UNIQUE_PTR : is unique_ptr supported (otherwise use auto_ptr) | ||||
|  | ||||
| // CLARA_CONFIG_CPP11_OR_GREATER : Is C++11 supported? | ||||
|  | ||||
| // CLARA_CONFIG_VARIADIC_MACROS : are variadic macros supported? | ||||
|  | ||||
| // In general each macro has a _NO_<feature name> form | ||||
| // (e.g. CLARA_CONFIG_CPP11_NO_NULLPTR) which disables the feature. | ||||
| // Many features, at point of detection, define an _INTERNAL_ macro, so they | ||||
| // can be combined, en-mass, with the _NO_ forms later. | ||||
|  | ||||
| // All the C++11 features can be disabled with CLARA_CONFIG_NO_CPP11 | ||||
|  | ||||
| #ifdef __clang__ | ||||
|  | ||||
| #if __has_feature(cxx_nullptr) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR | ||||
| #endif | ||||
|  | ||||
| #if __has_feature(cxx_noexcept) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT | ||||
| #endif | ||||
|  | ||||
| #endif // __clang__ | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // GCC | ||||
| #ifdef __GNUC__ | ||||
|  | ||||
| #if __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR | ||||
| #endif | ||||
|  | ||||
| // - otherwise more recent versions define __cplusplus >= 201103L | ||||
| // and will get picked up below | ||||
|  | ||||
| #endif // __GNUC__ | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // Visual C++ | ||||
| #ifdef _MSC_VER | ||||
|  | ||||
| #if (_MSC_VER >= 1600) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR | ||||
| #endif | ||||
|  | ||||
| #if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015)) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS | ||||
| #endif | ||||
|  | ||||
| #endif // _MSC_VER | ||||
|  | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // C++ language feature support | ||||
|  | ||||
| // catch all support for C++11 | ||||
| #if defined(__cplusplus) && __cplusplus >= 201103L | ||||
|  | ||||
| #define CLARA_CPP11_OR_GREATER | ||||
|  | ||||
| #if !defined(CLARA_INTERNAL_CONFIG_CPP11_NULLPTR) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR | ||||
| #endif | ||||
|  | ||||
| #ifndef CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT | ||||
| #endif | ||||
|  | ||||
| #ifndef CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS | ||||
| #endif | ||||
|  | ||||
| #if !defined(CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE | ||||
| #endif | ||||
| #if !defined(CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR | ||||
| #endif | ||||
|  | ||||
|  | ||||
| #endif // __cplusplus >= 201103L | ||||
|  | ||||
| // Now set the actual defines based on the above + anything the user has configured | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_NULLPTR) && !defined(CLARA_CONFIG_CPP11_NO_NULLPTR) && !defined(CLARA_CONFIG_CPP11_NULLPTR) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_NULLPTR | ||||
| #endif | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_CONFIG_CPP11_NO_NOEXCEPT) && !defined(CLARA_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_NOEXCEPT | ||||
| #endif | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS) && !defined(CLARA_CONFIG_CPP11_NO_GENERATED_METHODS) && !defined(CLARA_CONFIG_CPP11_GENERATED_METHODS) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_GENERATED_METHODS | ||||
| #endif | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE) && !defined(CLARA_CONFIG_NO_OVERRIDE) && !defined(CLARA_CONFIG_CPP11_OVERRIDE) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_OVERRIDE | ||||
| #endif | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) && !defined(CLARA_CONFIG_NO_UNIQUE_PTR) && !defined(CLARA_CONFIG_CPP11_UNIQUE_PTR) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_UNIQUE_PTR | ||||
| #endif | ||||
|  | ||||
|  | ||||
| // noexcept support: | ||||
| #if defined(CLARA_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_NOEXCEPT) | ||||
| #define CLARA_NOEXCEPT noexcept | ||||
| #  define CLARA_NOEXCEPT_IS(x) noexcept(x) | ||||
| #else | ||||
| #define CLARA_NOEXCEPT throw() | ||||
| #  define CLARA_NOEXCEPT_IS(x) | ||||
| #endif | ||||
|  | ||||
| // nullptr support | ||||
| #ifdef CLARA_CONFIG_CPP11_NULLPTR | ||||
| #define CLARA_NULL nullptr | ||||
| #else | ||||
| #define CLARA_NULL NULL | ||||
| #endif | ||||
|  | ||||
| // override support | ||||
| #ifdef CLARA_CONFIG_CPP11_OVERRIDE | ||||
| #define CLARA_OVERRIDE override | ||||
| #else | ||||
| #define CLARA_OVERRIDE | ||||
| #endif | ||||
|  | ||||
| // unique_ptr support | ||||
| #ifdef CLARA_CONFIG_CPP11_UNIQUE_PTR | ||||
| #   define CLARA_AUTO_PTR( T ) std::unique_ptr<T> | ||||
| #else | ||||
| #   define CLARA_AUTO_PTR( T ) std::auto_ptr<T> | ||||
| #endif | ||||
|  | ||||
| #endif // TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED | ||||
|  | ||||
|  | ||||
| // ----------- end of #include from clara_compilers.h ----------- | ||||
| // ........... back in clara.h | ||||
|  | ||||
|  | ||||
| #include <map> | ||||
| #include <algorithm> | ||||
| #include <stdexcept> | ||||
| #include <memory> | ||||
|  | ||||
| @@ -205,6 +366,9 @@ namespace Clara { | ||||
|     const unsigned int consoleWidth = 80; | ||||
| #endif | ||||
|  | ||||
|         // Use this to try and stop compiler from warning about unreachable code | ||||
|         inline bool isTrue( bool value ) { return value; } | ||||
|  | ||||
|         using namespace Tbc; | ||||
|  | ||||
|         inline bool startsWith( std::string const& str, std::string const& prefix ) { | ||||
| @@ -245,16 +409,17 @@ namespace Clara { | ||||
|         } | ||||
|         template<typename T> | ||||
|         inline void convertInto( bool, T& ) { | ||||
|             throw std::runtime_error( "Invalid conversion" ); | ||||
|             if( isTrue( true ) ) | ||||
|                 throw std::runtime_error( "Invalid conversion" ); | ||||
|         } | ||||
|  | ||||
|         template<typename ConfigT> | ||||
|         struct IArgFunction { | ||||
|             virtual ~IArgFunction() {} | ||||
| #  ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS | ||||
| #ifdef CLARA_CONFIG_CPP11_GENERATED_METHODS | ||||
|             IArgFunction()                      = default; | ||||
|             IArgFunction( IArgFunction const& ) = default; | ||||
| #  endif | ||||
| #endif | ||||
|             virtual void set( ConfigT& config, std::string const& value ) const = 0; | ||||
|             virtual void setFlag( ConfigT& config ) const = 0; | ||||
|             virtual bool takesArg() const = 0; | ||||
| @@ -264,11 +429,11 @@ namespace Clara { | ||||
|         template<typename ConfigT> | ||||
|         class BoundArgFunction { | ||||
|         public: | ||||
|             BoundArgFunction() : functionObj( CATCH_NULL ) {} | ||||
|             BoundArgFunction() : functionObj( CLARA_NULL ) {} | ||||
|             BoundArgFunction( IArgFunction<ConfigT>* _functionObj ) : functionObj( _functionObj ) {} | ||||
|             BoundArgFunction( BoundArgFunction const& other ) : functionObj( other.functionObj ? other.functionObj->clone() : CATCH_NULL ) {} | ||||
|             BoundArgFunction( BoundArgFunction const& other ) : functionObj( other.functionObj ? other.functionObj->clone() : CLARA_NULL ) {} | ||||
|             BoundArgFunction& operator = ( BoundArgFunction const& other ) { | ||||
|                 IArgFunction<ConfigT>* newFunctionObj = other.functionObj ? other.functionObj->clone() : CATCH_NULL; | ||||
|                 IArgFunction<ConfigT>* newFunctionObj = other.functionObj ? other.functionObj->clone() : CLARA_NULL; | ||||
|                 delete functionObj; | ||||
|                 functionObj = newFunctionObj; | ||||
|                 return *this; | ||||
| @@ -284,7 +449,7 @@ namespace Clara { | ||||
|             bool takesArg() const { return functionObj->takesArg(); } | ||||
|  | ||||
|             bool isSet() const { | ||||
|                 return functionObj != CATCH_NULL; | ||||
|                 return functionObj != CLARA_NULL; | ||||
|             } | ||||
|         private: | ||||
|             IArgFunction<ConfigT>* functionObj; | ||||
| @@ -393,7 +558,7 @@ namespace Clara { | ||||
|             std::string data; | ||||
|         }; | ||||
|  | ||||
|         void parseIntoTokens( int argc, char const * const * argv, std::vector<Parser::Token>& tokens ) const { | ||||
|         void parseIntoTokens( int argc, char const* const argv[], std::vector<Parser::Token>& tokens ) const { | ||||
|             const std::string doubleDash = "--"; | ||||
|             for( int i = 1; i < argc && argv[i] != doubleDash; ++i ) | ||||
|                 parseIntoTokens( argv[i] , tokens); | ||||
| @@ -503,7 +668,7 @@ namespace Clara { | ||||
|             } | ||||
|         }; | ||||
|  | ||||
|         typedef CATCH_AUTO_PTR( Arg ) ArgAutoPtr; | ||||
|         typedef CLARA_AUTO_PTR( Arg ) ArgAutoPtr; | ||||
|  | ||||
|         friend void addOptName( Arg& arg, std::string const& optName ) | ||||
|         { | ||||
| @@ -580,8 +745,8 @@ namespace Clara { | ||||
|                 m_arg->description = description; | ||||
|                 return *this; | ||||
|             } | ||||
|             ArgBuilder& detail( std::string const& _detail ) { | ||||
|                 m_arg->detail = _detail; | ||||
|             ArgBuilder& detail( std::string const& detail ) { | ||||
|                 m_arg->detail = detail; | ||||
|                 return *this; | ||||
|             } | ||||
|  | ||||
| @@ -665,14 +830,14 @@ namespace Clara { | ||||
|                 maxWidth = (std::max)( maxWidth, it->commands().size() ); | ||||
|  | ||||
|             for( it = itBegin; it != itEnd; ++it ) { | ||||
|                 Detail::Text usageText( it->commands(), Detail::TextAttributes() | ||||
|                 Detail::Text usage( it->commands(), Detail::TextAttributes() | ||||
|                                                         .setWidth( maxWidth+indent ) | ||||
|                                                         .setIndent( indent ) ); | ||||
|                 Detail::Text desc( it->description, Detail::TextAttributes() | ||||
|                                                         .setWidth( width - maxWidth - 3 ) ); | ||||
|  | ||||
|                 for( std::size_t i = 0; i < (std::max)( usageText.size(), desc.size() ); ++i ) { | ||||
|                     std::string usageCol = i < usageText.size() ? usageText[i] : ""; | ||||
|                 for( std::size_t i = 0; i < (std::max)( usage.size(), desc.size() ); ++i ) { | ||||
|                     std::string usageCol = i < usage.size() ? usage[i] : ""; | ||||
|                     os << usageCol; | ||||
|  | ||||
|                     if( i < desc.size() && !desc[i].empty() ) | ||||
| @@ -729,13 +894,13 @@ namespace Clara { | ||||
|             return oss.str(); | ||||
|         } | ||||
|  | ||||
|         ConfigT parse( int argc, char const * const * argv ) const { | ||||
|         ConfigT parse( int argc, char const* const argv[] ) const { | ||||
|             ConfigT config; | ||||
|             parseInto( argc, argv, config ); | ||||
|             return config; | ||||
|         } | ||||
|  | ||||
|         std::vector<Parser::Token> parseInto( int argc, char const * const * argv, ConfigT& config ) const { | ||||
|         std::vector<Parser::Token> parseInto( int argc, char const* argv[], ConfigT& config ) const { | ||||
|             std::string processName = argv[0]; | ||||
|             std::size_t lastSlash = processName.find_last_of( "/\\" ); | ||||
|             if( lastSlash != std::string::npos ) | ||||
|   | ||||
| @@ -39,7 +39,7 @@ | ||||
|             __catchResult.useActiveException( Catch::ResultDisposition::Normal ); \ | ||||
|         } \ | ||||
|         INTERNAL_CATCH_REACT( __catchResult ) \ | ||||
|     } while( Catch::isTrue( false && (expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look | ||||
|     } while( Catch::isTrue( false && static_cast<bool>(expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look | ||||
|  | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| #define INTERNAL_CATCH_IF( expr, resultDisposition, macroName ) \ | ||||
| @@ -129,7 +129,7 @@ | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| #define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \ | ||||
|     do { \ | ||||
|         Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg " " #matcher, resultDisposition ); \ | ||||
|         Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg ", " #matcher, resultDisposition ); \ | ||||
|         try { \ | ||||
|             std::string matcherAsString = (matcher).toString(); \ | ||||
|             __catchResult \ | ||||
|   | ||||
| @@ -11,7 +11,7 @@ | ||||
| #ifndef __OBJC__ | ||||
|  | ||||
| // Standard C/C++ main entry point | ||||
| int main (int argc, char * const argv[]) { | ||||
| int main (int argc, char * argv[]) { | ||||
|     return Catch::Session().run( argc, argv ); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -19,7 +19,7 @@ namespace Catch { | ||||
|  | ||||
|     struct IExceptionTranslator; | ||||
|     typedef std::vector<const IExceptionTranslator*> ExceptionTranslators; | ||||
|      | ||||
|  | ||||
|     struct IExceptionTranslator { | ||||
|         virtual ~IExceptionTranslator(); | ||||
|         virtual std::string translate( ExceptionTranslators::const_iterator it, ExceptionTranslators::const_iterator itEnd ) const = 0; | ||||
|   | ||||
| @@ -17,7 +17,7 @@ namespace Matchers { | ||||
|         template<typename ExpressionT> class AnyOf; | ||||
|         template<typename ExpressionT> class Not; | ||||
|     } | ||||
|          | ||||
|  | ||||
|     template<typename ExpressionT> | ||||
|     struct Matcher : SharedImpl<IShared> | ||||
|     { | ||||
| @@ -27,7 +27,7 @@ namespace Matchers { | ||||
|         virtual Ptr<Matcher> clone() const = 0; | ||||
|         virtual bool match( ExpressionT const& expr ) const = 0; | ||||
|         virtual std::string toString() const = 0; | ||||
|          | ||||
|  | ||||
|         Generic::AllOf<ExpressionT> operator && ( Matcher<ExpressionT> const& other ) const; | ||||
|         Generic::AnyOf<ExpressionT> operator || ( Matcher<ExpressionT> const& other ) const; | ||||
|         Generic::Not<ExpressionT> operator ! () const; | ||||
| @@ -134,13 +134,13 @@ namespace Matchers { | ||||
|                 anyOfExpr.add( other ); | ||||
|                 return anyOfExpr; | ||||
|             } | ||||
|              | ||||
|  | ||||
|         private: | ||||
|             std::vector<Ptr<Matcher<ExpressionT> > > m_matchers; | ||||
|         }; | ||||
|  | ||||
|     } // namespace Generic | ||||
|          | ||||
|  | ||||
|     template<typename ExpressionT> | ||||
|     Generic::AllOf<ExpressionT> Matcher<ExpressionT>::operator && ( Matcher<ExpressionT> const& other ) const { | ||||
|         Generic::AllOf<ExpressionT> allOfExpr; | ||||
| @@ -161,7 +161,7 @@ namespace Matchers { | ||||
|     Generic::Not<ExpressionT> Matcher<ExpressionT>::operator ! () const { | ||||
|         return Generic::Not<ExpressionT>( *this ); | ||||
|     } | ||||
|          | ||||
|  | ||||
|  | ||||
|     namespace StdString { | ||||
|  | ||||
| @@ -234,7 +234,7 @@ namespace Matchers { | ||||
|             virtual ~StartsWith(); | ||||
|  | ||||
|             virtual bool match( std::string const& expr ) const { | ||||
|                 return m_data.adjustString( expr ).find( m_data.m_str ) == 0; | ||||
|                 return startsWith( m_data.adjustString( expr ), m_data.m_str ); | ||||
|             } | ||||
|             virtual std::string toString() const { | ||||
|                 return "starts with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); | ||||
| @@ -251,7 +251,7 @@ namespace Matchers { | ||||
|             virtual ~EndsWith(); | ||||
|  | ||||
|             virtual bool match( std::string const& expr ) const { | ||||
|                 return m_data.adjustString( expr ).find( m_data.m_str ) == expr.size() - m_data.m_str.size(); | ||||
|                 return endsWith( m_data.adjustString( expr ), m_data.m_str ); | ||||
|             } | ||||
|             virtual std::string toString() const { | ||||
|                 return "ends with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); | ||||
|   | ||||
| @@ -96,8 +96,7 @@ namespace Catch { | ||||
|         return m_os; | ||||
|     } | ||||
|  | ||||
|  | ||||
| #ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement this functions | ||||
| #ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement these functions | ||||
|     std::ostream& cout() { | ||||
|         return std::cout; | ||||
|     } | ||||
|   | ||||
| @@ -87,7 +87,10 @@ namespace Catch { | ||||
|  | ||||
|     class TestRegistry : public ITestCaseRegistry { | ||||
|     public: | ||||
|         TestRegistry() : m_unnamedCount( 0 ) {} | ||||
|         TestRegistry() | ||||
|         :   m_currentSortOrder( RunTests::InDeclarationOrder ), | ||||
|             m_unnamedCount( 0 ) | ||||
|         {} | ||||
|         virtual ~TestRegistry(); | ||||
|  | ||||
|         virtual void registerTest( TestCase const& testCase ) { | ||||
| @@ -157,7 +160,7 @@ namespace Catch { | ||||
|             char const* classOrQualifiedMethodName, | ||||
|             NameAndDesc const& nameAndDesc, | ||||
|             SourceLineInfo const& lineInfo ) { | ||||
|          | ||||
|  | ||||
|         getMutableRegistryHub().registerTest | ||||
|             ( makeTestCase | ||||
|                 (   testCase, | ||||
| @@ -172,7 +175,7 @@ namespace Catch { | ||||
|             NameAndDesc const& nameAndDesc ) { | ||||
|         registerTestCase( new FreeFunctionTestCase( function ), "", nameAndDesc, lineInfo ); | ||||
|     } | ||||
|      | ||||
|  | ||||
|     /////////////////////////////////////////////////////////////////////////// | ||||
|  | ||||
|     AutoReg::AutoReg | ||||
|   | ||||
| @@ -37,7 +37,7 @@ namespace Catch { | ||||
|         return os; | ||||
|     } | ||||
|  | ||||
|     Version libraryVersion( 1, 3, 0, "develop", 4 ); | ||||
|     Version libraryVersion( 1, 3, 4, "", 0 ); | ||||
|  | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -680,7 +680,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() Contains( "not there" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), Contains( "not there" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" contains: "not there" | ||||
|  | ||||
| @@ -691,7 +691,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() StartsWith( "string" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), StartsWith( "string" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" starts with: "string" | ||||
|  | ||||
| @@ -702,7 +702,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() EndsWith( "this" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), EndsWith( "this" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ends with: "this" | ||||
|  | ||||
| @@ -713,7 +713,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() Equals( "something else" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), Equals( "something else" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" equals: "something else" | ||||
|  | ||||
| @@ -724,7 +724,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() ( Contains( "string" ) || Contains( "different" ) ) && Contains( "random" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), ( Contains( "string" ) || Contains( "different" ) ) && Contains( "random" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ( ( contains: "string" or | ||||
|   contains: "different" ) and contains: "random" ) | ||||
| @@ -736,7 +736,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() !Contains( "substring" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), !Contains( "substring" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" not contains: "substring" | ||||
|  | ||||
|   | ||||
| @@ -3304,25 +3304,25 @@ MiscTests.cpp:<line number> | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   REQUIRE_THAT( testStringForMatching() Contains( "string" ) ) | ||||
|   REQUIRE_THAT( testStringForMatching(), Contains( "string" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" contains: "string" | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() Contains( "abc" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), Contains( "abc" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" contains: "abc" | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() StartsWith( "this" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), StartsWith( "this" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" starts with: "this" | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() EndsWith( "substring" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), EndsWith( "substring" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ends with: "substring" | ||||
|  | ||||
| @@ -3333,7 +3333,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() Contains( "not there" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), Contains( "not there" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" contains: "not there" | ||||
|  | ||||
| @@ -3344,7 +3344,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() StartsWith( "string" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), StartsWith( "string" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" starts with: "string" | ||||
|  | ||||
| @@ -3355,7 +3355,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() EndsWith( "this" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), EndsWith( "this" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ends with: "this" | ||||
|  | ||||
| @@ -3366,7 +3366,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() Equals( "something else" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), Equals( "something else" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" equals: "something else" | ||||
|  | ||||
| @@ -3378,7 +3378,7 @@ MiscTests.cpp:<line number> | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   REQUIRE_THAT( "" Equals(nullptr) ) | ||||
|   REQUIRE_THAT( "", Equals(nullptr) ) | ||||
| with expansion: | ||||
|   "" equals: "" | ||||
|  | ||||
| @@ -3390,7 +3390,7 @@ MiscTests.cpp:<line number> | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) ) ) | ||||
|   CHECK_THAT( testStringForMatching(), AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ( contains: "string" and | ||||
|   contains: "abc" ) | ||||
| @@ -3403,14 +3403,14 @@ MiscTests.cpp:<line number> | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) ) ) | ||||
|   CHECK_THAT( testStringForMatching(), AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ( contains: "string" or contains: | ||||
|   "not there" ) | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() AnyOf( Catch::Contains( "not there" ), Catch::Contains( "string" ) ) ) | ||||
|   CHECK_THAT( testStringForMatching(), AnyOf( Catch::Contains( "not there" ), Catch::Contains( "string" ) ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ( contains: "not there" or | ||||
|   contains: "string" ) | ||||
| @@ -3423,7 +3423,7 @@ MiscTests.cpp:<line number> | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() Equals( "this string contains 'abc' as a substring" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" equals: "this string contains | ||||
|   'abc' as a substring" | ||||
| @@ -3436,7 +3436,7 @@ MiscTests.cpp:<line number> | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() Contains( "string" ) && Contains( "abc" ) && Contains( "substring" ) && Contains( "contains" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), Contains( "string" ) && Contains( "abc" ) && Contains( "substring" ) && Contains( "contains" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ( contains: "string" and | ||||
|   contains: "abc" and contains: "substring" and contains: "contains" ) | ||||
| @@ -3449,14 +3449,14 @@ MiscTests.cpp:<line number> | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() Contains( "string" ) || Contains( "different" ) || Contains( "random" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), Contains( "string" ) || Contains( "different" ) || Contains( "random" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ( contains: "string" or contains: | ||||
|   "different" or contains: "random" ) | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching2() Contains( "string" ) || Contains( "different" ) || Contains( "random" ) ) | ||||
|   CHECK_THAT( testStringForMatching2(), Contains( "string" ) || Contains( "different" ) || Contains( "random" ) ) | ||||
| with expansion: | ||||
|   "some completely different text that contains one common word" ( contains: | ||||
|   "string" or contains: "different" or contains: "random" ) | ||||
| @@ -3469,7 +3469,7 @@ MiscTests.cpp:<line number> | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() ( Contains( "string" ) || Contains( "different" ) ) && Contains( "substring" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), ( Contains( "string" ) || Contains( "different" ) ) && Contains( "substring" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ( ( contains: "string" or | ||||
|   contains: "different" ) and contains: "substring" ) | ||||
| @@ -3481,7 +3481,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() ( Contains( "string" ) || Contains( "different" ) ) && Contains( "random" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), ( Contains( "string" ) || Contains( "different" ) ) && Contains( "random" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" ( ( contains: "string" or | ||||
|   contains: "different" ) and contains: "random" ) | ||||
| @@ -3494,7 +3494,7 @@ MiscTests.cpp:<line number> | ||||
|  | ||||
| MiscTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( testStringForMatching() !Contains( "different" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), !Contains( "different" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" not contains: "different" | ||||
|  | ||||
| @@ -3505,7 +3505,7 @@ MiscTests.cpp:<line number> | ||||
| ............................................................................... | ||||
|  | ||||
| MiscTests.cpp:<line number>: FAILED: | ||||
|   CHECK_THAT( testStringForMatching() !Contains( "substring" ) ) | ||||
|   CHECK_THAT( testStringForMatching(), !Contains( "substring" ) ) | ||||
| with expansion: | ||||
|   "this string contains 'abc' as a substring" not contains: "substring" | ||||
|  | ||||
| @@ -4224,7 +4224,7 @@ TestMain.cpp:<line number> | ||||
|  | ||||
| TestMain.cpp:<line number>: | ||||
| PASSED: | ||||
|   REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ) Contains( "greater than zero" ) ) | ||||
|   REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ), Contains( "greater than zero" ) ) | ||||
| with expansion: | ||||
|   "Value after -x or --abortAfter must be greater than zero | ||||
|   - while parsing: (-x, --abortx <no. failures>)" contains: "greater than zero" | ||||
| @@ -4239,7 +4239,7 @@ TestMain.cpp:<line number> | ||||
|  | ||||
| TestMain.cpp:<line number>: | ||||
| PASSED: | ||||
|   REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ) Contains( "-x" ) ) | ||||
|   REQUIRE_THAT( parseIntoConfigAndReturnError( argv, config ), Contains( "-x" ) ) | ||||
| with expansion: | ||||
|   "Unable to convert oops to destination type | ||||
|   - while parsing: (-x, --abortx <no. failures>)" contains: "-x" | ||||
| @@ -5000,7 +5000,7 @@ TestMain.cpp:<line number> | ||||
|  | ||||
| TestMain.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( t.toString() EndsWith( "... message truncated due to excessive size" ) ) | ||||
|   CHECK_THAT( t.toString(), EndsWith( "... message truncated due to excessive size" ) ) | ||||
| with expansion: | ||||
|   "***************************************************************************- | ||||
|   ***- | ||||
| @@ -8783,7 +8783,7 @@ TagAliasTests.cpp:<line number> | ||||
|  | ||||
| TagAliasTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( what Contains( "[@zzz]" ) ) | ||||
|   CHECK_THAT( what, Contains( "[@zzz]" ) ) | ||||
| with expansion: | ||||
|   "error: tag alias, "[@zzz]" already registered. | ||||
|   First seen at file:2 | ||||
| @@ -8792,7 +8792,7 @@ with expansion: | ||||
|  | ||||
| TagAliasTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( what Contains( "file" ) ) | ||||
|   CHECK_THAT( what, Contains( "file" ) ) | ||||
| with expansion: | ||||
|   "error: tag alias, "[@zzz]" already registered. | ||||
|   First seen at file:2 | ||||
| @@ -8801,7 +8801,7 @@ with expansion: | ||||
|  | ||||
| TagAliasTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( what Contains( "2" ) ) | ||||
|   CHECK_THAT( what, Contains( "2" ) ) | ||||
| with expansion: | ||||
|   "error: tag alias, "[@zzz]" already registered. | ||||
|   First seen at file:2 | ||||
| @@ -8810,7 +8810,7 @@ with expansion: | ||||
|  | ||||
| TagAliasTests.cpp:<line number>: | ||||
| PASSED: | ||||
|   CHECK_THAT( what Contains( "10" ) ) | ||||
|   CHECK_THAT( what, Contains( "10" ) ) | ||||
| with expansion: | ||||
|   "error: tag alias, "[@zzz]" already registered. | ||||
|   First seen at file:2 | ||||
|   | ||||
| @@ -3468,7 +3468,7 @@ | ||||
|     <TestCase name="String matchers"> | ||||
|       <Expression success="true" type="REQUIRE_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() Contains( "string" ) | ||||
|           testStringForMatching(), Contains( "string" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" contains: "string" | ||||
| @@ -3476,7 +3476,7 @@ | ||||
|       </Expression> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() Contains( "abc" ) | ||||
|           testStringForMatching(), Contains( "abc" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" contains: "abc" | ||||
| @@ -3484,7 +3484,7 @@ | ||||
|       </Expression> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() StartsWith( "this" ) | ||||
|           testStringForMatching(), StartsWith( "this" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" starts with: "this" | ||||
| @@ -3492,7 +3492,7 @@ | ||||
|       </Expression> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() EndsWith( "substring" ) | ||||
|           testStringForMatching(), EndsWith( "substring" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" ends with: "substring" | ||||
| @@ -3503,7 +3503,7 @@ | ||||
|     <TestCase name="Contains string matcher"> | ||||
|       <Expression success="false" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() Contains( "not there" ) | ||||
|           testStringForMatching(), Contains( "not there" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" contains: "not there" | ||||
| @@ -3514,7 +3514,7 @@ | ||||
|     <TestCase name="StartsWith string matcher"> | ||||
|       <Expression success="false" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() StartsWith( "string" ) | ||||
|           testStringForMatching(), StartsWith( "string" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" starts with: "string" | ||||
| @@ -3525,7 +3525,7 @@ | ||||
|     <TestCase name="EndsWith string matcher"> | ||||
|       <Expression success="false" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() EndsWith( "this" ) | ||||
|           testStringForMatching(), EndsWith( "this" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" ends with: "this" | ||||
| @@ -3536,7 +3536,7 @@ | ||||
|     <TestCase name="Equals string matcher"> | ||||
|       <Expression success="false" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() Equals( "something else" ) | ||||
|           testStringForMatching(), Equals( "something else" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" equals: "something else" | ||||
| @@ -3547,7 +3547,7 @@ | ||||
|     <TestCase name="Equals string matcher, with NULL"> | ||||
|       <Expression success="true" type="REQUIRE_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           "" Equals(nullptr) | ||||
|           "", Equals(nullptr) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "" equals: "" | ||||
| @@ -3558,7 +3558,7 @@ | ||||
|     <TestCase name="AllOf matcher"> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) ) | ||||
|           testStringForMatching(), AllOf( Catch::Contains( "string" ), Catch::Contains( "abc" ) ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" ) | ||||
| @@ -3569,7 +3569,7 @@ | ||||
|     <TestCase name="AnyOf matcher"> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) ) | ||||
|           testStringForMatching(), AnyOf( Catch::Contains( "string" ), Catch::Contains( "not there" ) ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" ( contains: "string" or contains: "not there" ) | ||||
| @@ -3577,7 +3577,7 @@ | ||||
|       </Expression> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() AnyOf( Catch::Contains( "not there" ), Catch::Contains( "string" ) ) | ||||
|           testStringForMatching(), AnyOf( Catch::Contains( "not there" ), Catch::Contains( "string" ) ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" ( contains: "not there" or contains: "string" ) | ||||
| @@ -3588,7 +3588,7 @@ | ||||
|     <TestCase name="Equals"> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() Equals( "this string contains 'abc' as a substring" ) | ||||
|           testStringForMatching(), Equals( "this string contains 'abc' as a substring" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" equals: "this string contains 'abc' as a substring" | ||||
| @@ -3599,7 +3599,7 @@ | ||||
|     <TestCase name="Matchers can be (AllOf) composed with the && operator"> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() Contains( "string" ) && Contains( "abc" ) && Contains( "substring" ) && Contains( "contains" ) | ||||
|           testStringForMatching(), Contains( "string" ) && Contains( "abc" ) && Contains( "substring" ) && Contains( "contains" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" ( contains: "string" and contains: "abc" and contains: "substring" and contains: "contains" ) | ||||
| @@ -3610,7 +3610,7 @@ | ||||
|     <TestCase name="Matchers can be (AnyOf) composed with the || operator"> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() Contains( "string" ) || Contains( "different" ) || Contains( "random" ) | ||||
|           testStringForMatching(), Contains( "string" ) || Contains( "different" ) || Contains( "random" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" ( contains: "string" or contains: "different" or contains: "random" ) | ||||
| @@ -3618,7 +3618,7 @@ | ||||
|       </Expression> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching2() Contains( "string" ) || Contains( "different" ) || Contains( "random" ) | ||||
|           testStringForMatching2(), Contains( "string" ) || Contains( "different" ) || Contains( "random" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "some completely different text that contains one common word" ( contains: "string" or contains: "different" or contains: "random" ) | ||||
| @@ -3629,7 +3629,7 @@ | ||||
|     <TestCase name="Matchers can be composed with both && and ||"> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() ( Contains( "string" ) || Contains( "different" ) ) && Contains( "substring" ) | ||||
|           testStringForMatching(), ( Contains( "string" ) || Contains( "different" ) ) && Contains( "substring" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "substring" ) | ||||
| @@ -3640,7 +3640,7 @@ | ||||
|     <TestCase name="Matchers can be composed with both && and || - failing"> | ||||
|       <Expression success="false" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() ( Contains( "string" ) || Contains( "different" ) ) && Contains( "random" ) | ||||
|           testStringForMatching(), ( Contains( "string" ) || Contains( "different" ) ) && Contains( "random" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" ( ( contains: "string" or contains: "different" ) and contains: "random" ) | ||||
| @@ -3651,7 +3651,7 @@ | ||||
|     <TestCase name="Matchers can be negated (Not) with the ! operator"> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() !Contains( "different" ) | ||||
|           testStringForMatching(), !Contains( "different" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" not contains: "different" | ||||
| @@ -3662,7 +3662,7 @@ | ||||
|     <TestCase name="Matchers can be negated (Not) with the ! operator - failing"> | ||||
|       <Expression success="false" type="CHECK_THAT" filename="projects/SelfTest/MiscTests.cpp" > | ||||
|         <Original> | ||||
|           testStringForMatching() !Contains( "substring" ) | ||||
|           testStringForMatching(), !Contains( "substring" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "this string contains 'abc' as a substring" not contains: "substring" | ||||
| @@ -4415,7 +4415,7 @@ | ||||
|         <Section name="-x must be greater than zero"> | ||||
|           <Expression success="true" type="REQUIRE_THAT" filename="projects/SelfTest/TestMain.cpp" > | ||||
|             <Original> | ||||
|               parseIntoConfigAndReturnError( argv, config ) Contains( "greater than zero" ) | ||||
|               parseIntoConfigAndReturnError( argv, config ), Contains( "greater than zero" ) | ||||
|             </Original> | ||||
|             <Expanded> | ||||
|               "Value after -x or --abortAfter must be greater than zero | ||||
| @@ -4430,7 +4430,7 @@ | ||||
|         <Section name="-x must be numeric"> | ||||
|           <Expression success="true" type="REQUIRE_THAT" filename="projects/SelfTest/TestMain.cpp" > | ||||
|             <Original> | ||||
|               parseIntoConfigAndReturnError( argv, config ) Contains( "-x" ) | ||||
|               parseIntoConfigAndReturnError( argv, config ), Contains( "-x" ) | ||||
|             </Original> | ||||
|             <Expanded> | ||||
|               "Unable to convert oops to destination type | ||||
| @@ -5276,7 +5276,7 @@ there" | ||||
|     <TestCase name="Long text is truncted"> | ||||
|       <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/TestMain.cpp" > | ||||
|         <Original> | ||||
|           t.toString() EndsWith( "... message truncated due to excessive size" ) | ||||
|           t.toString(), EndsWith( "... message truncated due to excessive size" ) | ||||
|         </Original> | ||||
|         <Expanded> | ||||
|           "******************************************************************************- | ||||
| @@ -9254,7 +9254,7 @@ there" | ||||
|       <Section name="The same tag alias can only be registered once"> | ||||
|         <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/TagAliasTests.cpp" > | ||||
|           <Original> | ||||
|             what Contains( "[@zzz]" ) | ||||
|             what, Contains( "[@zzz]" ) | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             "error: tag alias, "[@zzz]" already registered. | ||||
| @@ -9264,7 +9264,7 @@ there" | ||||
|         </Expression> | ||||
|         <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/TagAliasTests.cpp" > | ||||
|           <Original> | ||||
|             what Contains( "file" ) | ||||
|             what, Contains( "file" ) | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             "error: tag alias, "[@zzz]" already registered. | ||||
| @@ -9274,7 +9274,7 @@ there" | ||||
|         </Expression> | ||||
|         <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/TagAliasTests.cpp" > | ||||
|           <Original> | ||||
|             what Contains( "2" ) | ||||
|             what, Contains( "2" ) | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             "error: tag alias, "[@zzz]" already registered. | ||||
| @@ -9284,7 +9284,7 @@ there" | ||||
|         </Expression> | ||||
|         <Expression success="true" type="CHECK_THAT" filename="projects/SelfTest/TagAliasTests.cpp" > | ||||
|           <Original> | ||||
|             what Contains( "10" ) | ||||
|             what, Contains( "10" ) | ||||
|           </Original> | ||||
|           <Expanded> | ||||
|             "error: tag alias, "[@zzz]" already registered. | ||||
|   | ||||
| @@ -112,12 +112,13 @@ public: | ||||
|     CustomStdException( const std::string& msg ) | ||||
|     : m_msg( msg ) | ||||
|     {} | ||||
|      | ||||
|     ~CustomStdException() CATCH_NOEXCEPT {} | ||||
|  | ||||
|     std::string getMessage() const | ||||
|     { | ||||
|         return m_msg; | ||||
|     } | ||||
|      | ||||
|  | ||||
| private: | ||||
|     std::string m_msg; | ||||
| }; | ||||
|   | ||||
| @@ -513,7 +513,7 @@ | ||||
| 		4A6D0C17149B3D3B00DB3EAA /* Project object */ = { | ||||
| 			isa = PBXProject; | ||||
| 			attributes = { | ||||
| 				LastUpgradeCheck = 0630; | ||||
| 				LastUpgradeCheck = 0710; | ||||
| 			}; | ||||
| 			buildConfigurationList = 4A6D0C1A149B3D3B00DB3EAA /* Build configuration list for PBXProject "CatchSelfTest" */; | ||||
| 			compatibilityVersion = "Xcode 3.2"; | ||||
| @@ -595,6 +595,7 @@ | ||||
| 				CLANG_WARN__EXIT_TIME_DESTRUCTORS = NO; | ||||
| 				COPY_PHASE_STRIP = NO; | ||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||
| 				ENABLE_TESTABILITY = YES; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||
| 				GCC_DYNAMIC_NO_PIC = NO; | ||||
| 				GCC_ENABLE_OBJC_EXCEPTIONS = YES; | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
|  *  Catch v1.3.0-develop.4 | ||||
|  *  Generated: 2015-11-20 16:58:58.532767 | ||||
|  *  Catch v1.3.4 | ||||
|  *  Generated: 2016-02-10 19:24:03.089683 | ||||
|  *  ---------------------------------------------------------- | ||||
|  *  This file has been merged from multiple headers. Please don't edit it directly | ||||
|  *  Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. | ||||
| @@ -1069,7 +1069,7 @@ namespace Matchers { | ||||
|             virtual ~StartsWith(); | ||||
|  | ||||
|             virtual bool match( std::string const& expr ) const { | ||||
|                 return m_data.adjustString( expr ).find( m_data.m_str ) == 0; | ||||
|                 return startsWith( m_data.adjustString( expr ), m_data.m_str ); | ||||
|             } | ||||
|             virtual std::string toString() const { | ||||
|                 return "starts with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); | ||||
| @@ -1086,7 +1086,7 @@ namespace Matchers { | ||||
|             virtual ~EndsWith(); | ||||
|  | ||||
|             virtual bool match( std::string const& expr ) const { | ||||
|                 return m_data.adjustString( expr ).find( m_data.m_str ) == expr.size() - m_data.m_str.size(); | ||||
|                 return endsWith( m_data.adjustString( expr ), m_data.m_str ); | ||||
|             } | ||||
|             virtual std::string toString() const { | ||||
|                 return "ends with: \"" + m_data.m_str + "\"" + m_data.toStringSuffix(); | ||||
| @@ -2026,7 +2026,7 @@ namespace Catch { | ||||
|             __catchResult.useActiveException( Catch::ResultDisposition::Normal ); \ | ||||
|         } \ | ||||
|         INTERNAL_CATCH_REACT( __catchResult ) \ | ||||
|     } while( Catch::isTrue( false && (expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look | ||||
|     } while( Catch::isTrue( false && static_cast<bool>(expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look | ||||
|  | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| #define INTERNAL_CATCH_IF( expr, resultDisposition, macroName ) \ | ||||
| @@ -2115,7 +2115,7 @@ namespace Catch { | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| #define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \ | ||||
|     do { \ | ||||
|         Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg " " #matcher, resultDisposition ); \ | ||||
|         Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg ", " #matcher, resultDisposition ); \ | ||||
|         try { \ | ||||
|             std::string matcherAsString = (matcher).toString(); \ | ||||
|             __catchResult \ | ||||
| @@ -3572,6 +3572,8 @@ namespace Catch { | ||||
| #define STITCH_CLARA_OPEN_NAMESPACE namespace Catch { | ||||
| // #included from: ../external/clara.h | ||||
|  | ||||
| // Version 0.0.1.1 | ||||
|  | ||||
| // Only use header guard if we are not using an outer namespace | ||||
| #if !defined(TWOBLUECUBES_CLARA_H_INCLUDED) || defined(STITCH_CLARA_OPEN_NAMESPACE) | ||||
|  | ||||
| @@ -3596,6 +3598,7 @@ namespace Catch { | ||||
| #include <string> | ||||
| #include <vector> | ||||
| #include <sstream> | ||||
| #include <algorithm> | ||||
|  | ||||
| // Use optional outer namespace | ||||
| #ifdef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE | ||||
| @@ -3730,12 +3733,158 @@ namespace Tbc { | ||||
| #endif // TBC_TEXT_FORMAT_H_INCLUDED | ||||
|  | ||||
| // ----------- end of #include from tbc_text_format.h ----------- | ||||
| // ........... back in /Users/philnash/Dev/OSS/Clara/srcs/clara.h | ||||
| // ........... back in clara.h | ||||
|  | ||||
| #undef STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE | ||||
|  | ||||
| // ----------- #included from clara_compilers.h ----------- | ||||
|  | ||||
| #ifndef TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED | ||||
| #define TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED | ||||
|  | ||||
| // Detect a number of compiler features - mostly C++11/14 conformance - by compiler | ||||
| // The following features are defined: | ||||
| // | ||||
| // CLARA_CONFIG_CPP11_NULLPTR : is nullptr supported? | ||||
| // CLARA_CONFIG_CPP11_NOEXCEPT : is noexcept supported? | ||||
| // CLARA_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods | ||||
| // CLARA_CONFIG_CPP11_OVERRIDE : is override supported? | ||||
| // CLARA_CONFIG_CPP11_UNIQUE_PTR : is unique_ptr supported (otherwise use auto_ptr) | ||||
|  | ||||
| // CLARA_CONFIG_CPP11_OR_GREATER : Is C++11 supported? | ||||
|  | ||||
| // CLARA_CONFIG_VARIADIC_MACROS : are variadic macros supported? | ||||
|  | ||||
| // In general each macro has a _NO_<feature name> form | ||||
| // (e.g. CLARA_CONFIG_CPP11_NO_NULLPTR) which disables the feature. | ||||
| // Many features, at point of detection, define an _INTERNAL_ macro, so they | ||||
| // can be combined, en-mass, with the _NO_ forms later. | ||||
|  | ||||
| // All the C++11 features can be disabled with CLARA_CONFIG_NO_CPP11 | ||||
|  | ||||
| #ifdef __clang__ | ||||
|  | ||||
| #if __has_feature(cxx_nullptr) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR | ||||
| #endif | ||||
|  | ||||
| #if __has_feature(cxx_noexcept) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT | ||||
| #endif | ||||
|  | ||||
| #endif // __clang__ | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // GCC | ||||
| #ifdef __GNUC__ | ||||
|  | ||||
| #if __GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR | ||||
| #endif | ||||
|  | ||||
| // - otherwise more recent versions define __cplusplus >= 201103L | ||||
| // and will get picked up below | ||||
|  | ||||
| #endif // __GNUC__ | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // Visual C++ | ||||
| #ifdef _MSC_VER | ||||
|  | ||||
| #if (_MSC_VER >= 1600) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR | ||||
| #endif | ||||
|  | ||||
| #if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015)) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS | ||||
| #endif | ||||
|  | ||||
| #endif // _MSC_VER | ||||
|  | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| // C++ language feature support | ||||
|  | ||||
| // catch all support for C++11 | ||||
| #if defined(__cplusplus) && __cplusplus >= 201103L | ||||
|  | ||||
| #define CLARA_CPP11_OR_GREATER | ||||
|  | ||||
| #if !defined(CLARA_INTERNAL_CONFIG_CPP11_NULLPTR) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NULLPTR | ||||
| #endif | ||||
|  | ||||
| #ifndef CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT | ||||
| #endif | ||||
|  | ||||
| #ifndef CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS | ||||
| #endif | ||||
|  | ||||
| #if !defined(CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE | ||||
| #endif | ||||
| #if !defined(CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) | ||||
| #define CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR | ||||
| #endif | ||||
|  | ||||
| #endif // __cplusplus >= 201103L | ||||
|  | ||||
| // Now set the actual defines based on the above + anything the user has configured | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_NULLPTR) && !defined(CLARA_CONFIG_CPP11_NO_NULLPTR) && !defined(CLARA_CONFIG_CPP11_NULLPTR) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_NULLPTR | ||||
| #endif | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_CONFIG_CPP11_NO_NOEXCEPT) && !defined(CLARA_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_NOEXCEPT | ||||
| #endif | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS) && !defined(CLARA_CONFIG_CPP11_NO_GENERATED_METHODS) && !defined(CLARA_CONFIG_CPP11_GENERATED_METHODS) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_GENERATED_METHODS | ||||
| #endif | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE) && !defined(CLARA_CONFIG_NO_OVERRIDE) && !defined(CLARA_CONFIG_CPP11_OVERRIDE) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_OVERRIDE | ||||
| #endif | ||||
| #if defined(CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR) && !defined(CLARA_CONFIG_NO_UNIQUE_PTR) && !defined(CLARA_CONFIG_CPP11_UNIQUE_PTR) && !defined(CLARA_CONFIG_NO_CPP11) | ||||
| #define CLARA_CONFIG_CPP11_UNIQUE_PTR | ||||
| #endif | ||||
|  | ||||
| // noexcept support: | ||||
| #if defined(CLARA_CONFIG_CPP11_NOEXCEPT) && !defined(CLARA_NOEXCEPT) | ||||
| #define CLARA_NOEXCEPT noexcept | ||||
| #  define CLARA_NOEXCEPT_IS(x) noexcept(x) | ||||
| #else | ||||
| #define CLARA_NOEXCEPT throw() | ||||
| #  define CLARA_NOEXCEPT_IS(x) | ||||
| #endif | ||||
|  | ||||
| // nullptr support | ||||
| #ifdef CLARA_CONFIG_CPP11_NULLPTR | ||||
| #define CLARA_NULL nullptr | ||||
| #else | ||||
| #define CLARA_NULL NULL | ||||
| #endif | ||||
|  | ||||
| // override support | ||||
| #ifdef CLARA_CONFIG_CPP11_OVERRIDE | ||||
| #define CLARA_OVERRIDE override | ||||
| #else | ||||
| #define CLARA_OVERRIDE | ||||
| #endif | ||||
|  | ||||
| // unique_ptr support | ||||
| #ifdef CLARA_CONFIG_CPP11_UNIQUE_PTR | ||||
| #   define CLARA_AUTO_PTR( T ) std::unique_ptr<T> | ||||
| #else | ||||
| #   define CLARA_AUTO_PTR( T ) std::auto_ptr<T> | ||||
| #endif | ||||
|  | ||||
| #endif // TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED | ||||
|  | ||||
| // ----------- end of #include from clara_compilers.h ----------- | ||||
| // ........... back in clara.h | ||||
|  | ||||
| #include <map> | ||||
| #include <algorithm> | ||||
| #include <stdexcept> | ||||
| #include <memory> | ||||
|  | ||||
| @@ -3762,6 +3911,9 @@ namespace Clara { | ||||
|     const unsigned int consoleWidth = 80; | ||||
| #endif | ||||
|  | ||||
|         // Use this to try and stop compiler from warning about unreachable code | ||||
|         inline bool isTrue( bool value ) { return value; } | ||||
|  | ||||
|         using namespace Tbc; | ||||
|  | ||||
|         inline bool startsWith( std::string const& str, std::string const& prefix ) { | ||||
| @@ -3802,16 +3954,17 @@ namespace Clara { | ||||
|         } | ||||
|         template<typename T> | ||||
|         inline void convertInto( bool, T& ) { | ||||
|             throw std::runtime_error( "Invalid conversion" ); | ||||
|             if( isTrue( true ) ) | ||||
|                 throw std::runtime_error( "Invalid conversion" ); | ||||
|         } | ||||
|  | ||||
|         template<typename ConfigT> | ||||
|         struct IArgFunction { | ||||
|             virtual ~IArgFunction() {} | ||||
| #  ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS | ||||
| #ifdef CLARA_CONFIG_CPP11_GENERATED_METHODS | ||||
|             IArgFunction()                      = default; | ||||
|             IArgFunction( IArgFunction const& ) = default; | ||||
| #  endif | ||||
| #endif | ||||
|             virtual void set( ConfigT& config, std::string const& value ) const = 0; | ||||
|             virtual void setFlag( ConfigT& config ) const = 0; | ||||
|             virtual bool takesArg() const = 0; | ||||
| @@ -3821,11 +3974,11 @@ namespace Clara { | ||||
|         template<typename ConfigT> | ||||
|         class BoundArgFunction { | ||||
|         public: | ||||
|             BoundArgFunction() : functionObj( CATCH_NULL ) {} | ||||
|             BoundArgFunction() : functionObj( CLARA_NULL ) {} | ||||
|             BoundArgFunction( IArgFunction<ConfigT>* _functionObj ) : functionObj( _functionObj ) {} | ||||
|             BoundArgFunction( BoundArgFunction const& other ) : functionObj( other.functionObj ? other.functionObj->clone() : CATCH_NULL ) {} | ||||
|             BoundArgFunction( BoundArgFunction const& other ) : functionObj( other.functionObj ? other.functionObj->clone() : CLARA_NULL ) {} | ||||
|             BoundArgFunction& operator = ( BoundArgFunction const& other ) { | ||||
|                 IArgFunction<ConfigT>* newFunctionObj = other.functionObj ? other.functionObj->clone() : CATCH_NULL; | ||||
|                 IArgFunction<ConfigT>* newFunctionObj = other.functionObj ? other.functionObj->clone() : CLARA_NULL; | ||||
|                 delete functionObj; | ||||
|                 functionObj = newFunctionObj; | ||||
|                 return *this; | ||||
| @@ -3841,7 +3994,7 @@ namespace Clara { | ||||
|             bool takesArg() const { return functionObj->takesArg(); } | ||||
|  | ||||
|             bool isSet() const { | ||||
|                 return functionObj != CATCH_NULL; | ||||
|                 return functionObj != CLARA_NULL; | ||||
|             } | ||||
|         private: | ||||
|             IArgFunction<ConfigT>* functionObj; | ||||
| @@ -3949,7 +4102,7 @@ namespace Clara { | ||||
|             std::string data; | ||||
|         }; | ||||
|  | ||||
|         void parseIntoTokens( int argc, char const * const * argv, std::vector<Parser::Token>& tokens ) const { | ||||
|         void parseIntoTokens( int argc, char const* const argv[], std::vector<Parser::Token>& tokens ) const { | ||||
|             const std::string doubleDash = "--"; | ||||
|             for( int i = 1; i < argc && argv[i] != doubleDash; ++i ) | ||||
|                 parseIntoTokens( argv[i] , tokens); | ||||
| @@ -4059,7 +4212,7 @@ namespace Clara { | ||||
|             } | ||||
|         }; | ||||
|  | ||||
|         typedef CATCH_AUTO_PTR( Arg ) ArgAutoPtr; | ||||
|         typedef CLARA_AUTO_PTR( Arg ) ArgAutoPtr; | ||||
|  | ||||
|         friend void addOptName( Arg& arg, std::string const& optName ) | ||||
|         { | ||||
| @@ -4135,8 +4288,8 @@ namespace Clara { | ||||
|                 m_arg->description = description; | ||||
|                 return *this; | ||||
|             } | ||||
|             ArgBuilder& detail( std::string const& _detail ) { | ||||
|                 m_arg->detail = _detail; | ||||
|             ArgBuilder& detail( std::string const& detail ) { | ||||
|                 m_arg->detail = detail; | ||||
|                 return *this; | ||||
|             } | ||||
|  | ||||
| @@ -4219,14 +4372,14 @@ namespace Clara { | ||||
|                 maxWidth = (std::max)( maxWidth, it->commands().size() ); | ||||
|  | ||||
|             for( it = itBegin; it != itEnd; ++it ) { | ||||
|                 Detail::Text usageText( it->commands(), Detail::TextAttributes() | ||||
|                 Detail::Text usage( it->commands(), Detail::TextAttributes() | ||||
|                                                         .setWidth( maxWidth+indent ) | ||||
|                                                         .setIndent( indent ) ); | ||||
|                 Detail::Text desc( it->description, Detail::TextAttributes() | ||||
|                                                         .setWidth( width - maxWidth - 3 ) ); | ||||
|  | ||||
|                 for( std::size_t i = 0; i < (std::max)( usageText.size(), desc.size() ); ++i ) { | ||||
|                     std::string usageCol = i < usageText.size() ? usageText[i] : ""; | ||||
|                 for( std::size_t i = 0; i < (std::max)( usage.size(), desc.size() ); ++i ) { | ||||
|                     std::string usageCol = i < usage.size() ? usage[i] : ""; | ||||
|                     os << usageCol; | ||||
|  | ||||
|                     if( i < desc.size() && !desc[i].empty() ) | ||||
| @@ -4283,13 +4436,13 @@ namespace Clara { | ||||
|             return oss.str(); | ||||
|         } | ||||
|  | ||||
|         ConfigT parse( int argc, char const * const * argv ) const { | ||||
|         ConfigT parse( int argc, char const* const argv[] ) const { | ||||
|             ConfigT config; | ||||
|             parseInto( argc, argv, config ); | ||||
|             return config; | ||||
|         } | ||||
|  | ||||
|         std::vector<Parser::Token> parseInto( int argc, char const * const * argv, ConfigT& config ) const { | ||||
|         std::vector<Parser::Token> parseInto( int argc, char const* argv[], ConfigT& config ) const { | ||||
|             std::string processName = argv[0]; | ||||
|             std::size_t lastSlash = processName.find_last_of( "/\\" ); | ||||
|             if( lastSlash != std::string::npos ) | ||||
| @@ -6083,7 +6236,7 @@ namespace Catch { | ||||
|             Catch::cout() << "For more detail usage please see the project docs\n" << std::endl; | ||||
|         } | ||||
|  | ||||
|         int applyCommandLine( int argc, char const* const argv[], OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) { | ||||
|         int applyCommandLine( int argc, char const* argv[], OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) { | ||||
|             try { | ||||
|                 m_cli.setThrowOnUnrecognisedTokens( unusedOptionBehaviour == OnUnusedOptions::Fail ); | ||||
|                 m_unusedTokens = m_cli.parseInto( argc, argv, m_configData ); | ||||
| @@ -6110,13 +6263,16 @@ namespace Catch { | ||||
|             m_config.reset(); | ||||
|         } | ||||
|  | ||||
|         int run( int argc, char const* const argv[] ) { | ||||
|         int run( int argc, char const* argv[] ) { | ||||
|  | ||||
|             int returnCode = applyCommandLine( argc, argv ); | ||||
|             if( returnCode == 0 ) | ||||
|                 returnCode = run(); | ||||
|             return returnCode; | ||||
|         } | ||||
|         int run( int argc, char* argv[] ) { | ||||
|             return run( argc, const_cast<char const**>( argv ) ); | ||||
|         } | ||||
|  | ||||
|         int run() { | ||||
|             if( m_configData.showHelp ) | ||||
| @@ -6248,7 +6404,10 @@ namespace Catch { | ||||
|  | ||||
|     class TestRegistry : public ITestCaseRegistry { | ||||
|     public: | ||||
|         TestRegistry() : m_unnamedCount( 0 ) {} | ||||
|         TestRegistry() | ||||
|         :   m_currentSortOrder( RunTests::InDeclarationOrder ), | ||||
|             m_unnamedCount( 0 ) | ||||
|         {} | ||||
|         virtual ~TestRegistry(); | ||||
|  | ||||
|         virtual void registerTest( TestCase const& testCase ) { | ||||
| @@ -6627,7 +6786,7 @@ namespace Catch { | ||||
|         return m_os; | ||||
|     } | ||||
|  | ||||
| #ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement this functions | ||||
| #ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement these functions | ||||
|     std::ostream& cout() { | ||||
|         return std::cout; | ||||
|     } | ||||
| @@ -7267,7 +7426,7 @@ namespace Catch { | ||||
|         return os; | ||||
|     } | ||||
|  | ||||
|     Version libraryVersion( 1, 3, 0, "develop", 4 ); | ||||
|     Version libraryVersion( 1, 3, 4, "", 0 ); | ||||
|  | ||||
| } | ||||
|  | ||||
| @@ -10020,7 +10179,7 @@ namespace Catch { | ||||
| #ifndef __OBJC__ | ||||
|  | ||||
| // Standard C/C++ main entry point | ||||
| int main (int argc, char * const argv[]) { | ||||
| int main (int argc, char * argv[]) { | ||||
|     return Catch::Session().run( argc, argv ); | ||||
| } | ||||
|  | ||||
| @@ -10087,7 +10246,7 @@ int main (int argc, char * const argv[]) { | ||||
|     #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) | ||||
|     #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) | ||||
|     #define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | ||||
|     #define CATCH_REGISTER_TEST_CASE( ... ) INTERNAL_CATCH_REGISTER_TESTCASE( __VA_ARGS__ ) | ||||
|     #define CATCH_REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) | ||||
|     #define CATCH_SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) | ||||
|     #define CATCH_FAIL( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", __VA_ARGS__ ) | ||||
|     #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", __VA_ARGS__ ) | ||||
| @@ -10156,7 +10315,7 @@ int main (int argc, char * const argv[]) { | ||||
|     #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) | ||||
|     #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) | ||||
|     #define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) | ||||
|     #define REGISTER_TEST_CASE( ... ) INTERNAL_CATCH_REGISTER_TESTCASE( __VA_ARGS__ ) | ||||
|     #define REGISTER_TEST_CASE( Function, ... ) INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ ) | ||||
|     #define SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) | ||||
|     #define FAIL( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", __VA_ARGS__ ) | ||||
|     #define SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", __VA_ARGS__ ) | ||||
| @@ -10164,7 +10323,7 @@ int main (int argc, char * const argv[]) { | ||||
|     #define TEST_CASE( name, description ) INTERNAL_CATCH_TESTCASE( name, description ) | ||||
|     #define TEST_CASE_METHOD( className, name, description ) INTERNAL_CATCH_TEST_CASE_METHOD( className, name, description ) | ||||
|     #define METHOD_AS_TEST_CASE( method, name, description ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, name, description ) | ||||
|     #define REGISTER_TEST_CASE( ... ) INTERNAL_CATCH_REGISTER_TESTCASE( __VA_ARGS__ ) | ||||
|     #define REGISTER_TEST_CASE( method, name, description ) INTERNAL_CATCH_REGISTER_TESTCASE( method, name, description ) | ||||
|     #define SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description ) | ||||
|     #define FAIL( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", msg ) | ||||
|     #define SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", msg ) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user