Internal API

Namespaces

Catch
mpl_

Structures

Catch_global_namespace_dummy

Functions

arcSafeRelease
main

Mentioned in

operator""_catch_sr
operator<<
performOptionalSelector

Defines

Defines (catch_benchmark.hpp)

INTERNAL_CATCH_GET_1_ARG(arg1,arg2,...)
arg1

INTERNAL_CATCH_GET_2_ARG(arg1,arg2,...)
arg2

INTERNAL_CATCH_BENCHMARK(BenchmarkName,name,benchmarkIndex)
if( Catch::Benchmark::Benchmark BenchmarkName{name} )
BenchmarkName = [&](int benchmarkIndex)

INTERNAL_CATCH_BENCHMARK_ADVANCED(BenchmarkName,name)
if( Catch::Benchmark::Benchmark BenchmarkName{name} )
BenchmarkName = [&]

Defines (catch_capture.hpp)

CATCH_INTERNAL_STRINGIFY(...)
#__VA_ARGS__

INTERNAL_CATCH_TRY

INTERNAL_CATCH_CATCH(capturer)

INTERNAL_CATCH_REACT(handler)
handler.complete();

INTERNAL_CATCH_TEST(macroName,resultDisposition,...)
do {
/* The expression should not be evaluated, but warnings should hopefully be checked */
CATCH_INTERNAL_IGNORE_BUT_WARN(__VA_ARGS__);
Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition );
INTERNAL_CATCH_TRY {
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS
catchAssertionHandler.handleExpr( Catch::Decomposer() <= __VA_ARGS__ );
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
} INTERNAL_CATCH_CATCH( catchAssertionHandler )
INTERNAL_CATCH_REACT( catchAssertionHandler )
} while( (void)0, (false) && static_cast<bool>( !!(__VA_ARGS__) ) )

INTERNAL_CATCH_IF(macroName,resultDisposition,...)
INTERNAL_CATCH_TEST( macroName, resultDisposition, __VA_ARGS__ );
if( Catch::getResultCapture().lastAssertionPassed() )

INTERNAL_CATCH_ELSE(macroName,resultDisposition,...)
INTERNAL_CATCH_TEST( macroName, resultDisposition, __VA_ARGS__ );
if( !Catch::getResultCapture().lastAssertionPassed() )

INTERNAL_CATCH_NO_THROW(macroName,resultDisposition,...)
do {
Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition );
try {
static_cast<void>(__VA_ARGS__);
catchAssertionHandler.handleExceptionNotThrownAsExpected();
}
catch( ... ) {
catchAssertionHandler.handleUnexpectedInflightException();
}
INTERNAL_CATCH_REACT( catchAssertionHandler )
} while( false )

INTERNAL_CATCH_THROWS(macroName,resultDisposition,...)
do {
Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__), resultDisposition);
if( catchAssertionHandler.allowThrows() )
try {
static_cast<void>(__VA_ARGS__);
catchAssertionHandler.handleUnexpectedExceptionNotThrown();
}
catch( ... ) {
catchAssertionHandler.handleExceptionThrownAsExpected();
}
else
catchAssertionHandler.handleThrowingCallSkipped();
INTERNAL_CATCH_REACT( catchAssertionHandler )
} while( false )

INTERNAL_CATCH_THROWS_AS(macroName,exceptionType,resultDisposition,expr)
do {
Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(expr) ", " CATCH_INTERNAL_STRINGIFY(exceptionType), resultDisposition );
if( catchAssertionHandler.allowThrows() )
try {
static_cast<void>(expr);
catchAssertionHandler.handleUnexpectedExceptionNotThrown();
}
catch( exceptionType const& ) {
catchAssertionHandler.handleExceptionThrownAsExpected();
}
catch( ... ) {
catchAssertionHandler.handleUnexpectedInflightException();
}
else
catchAssertionHandler.handleThrowingCallSkipped();
INTERNAL_CATCH_REACT( catchAssertionHandler )
} while( false )

INTERNAL_CATCH_MSG(macroName,messageType,resultDisposition,...)
do {
Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::StringRef(), resultDisposition );
catchAssertionHandler.handleMessage( messageType, ( Catch::MessageStream() << __VA_ARGS__ + ::Catch::StreamEndStop() ).m_stream.str() );
INTERNAL_CATCH_REACT( catchAssertionHandler )
} while( false )

INTERNAL_CATCH_CAPTURE(varName,macroName,...)
auto varName = Catch::Capturer( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info, #__VA_ARGS__ );
varName.captureValues( 0, __VA_ARGS__ )

INTERNAL_CATCH_INFO(macroName,log)
Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log );

INTERNAL_CATCH_UNSCOPED_INFO(macroName,log)
Catch::getResultCapture().emplaceUnscopedMessage( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log )

INTERNAL_CATCH_THROWS_STR_MATCHES(macroName,resultDisposition,matcher,...)
do {
Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition );
if( catchAssertionHandler.allowThrows() )
try {
static_cast<void>(__VA_ARGS__);
catchAssertionHandler.handleUnexpectedExceptionNotThrown();
}
catch( ... ) {
Catch::handleExceptionMatchExpr( catchAssertionHandler, matcher, #matcher##_catch_sr );
}
else
catchAssertionHandler.handleThrowingCallSkipped();
INTERNAL_CATCH_REACT( catchAssertionHandler )
} while( false )

Defines (catch_capture_matchers.h)

INTERNAL_CHECK_THAT(macroName,matcher,resultDisposition,arg)
do {
Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(arg) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition );
INTERNAL_CATCH_TRY {
catchAssertionHandler.handleExpr( Catch::makeMatchExpr( arg, matcher, #matcher##_catch_sr ) );
} INTERNAL_CATCH_CATCH( catchAssertionHandler )
INTERNAL_CATCH_REACT( catchAssertionHandler )
} while( false )

INTERNAL_CATCH_THROWS_MATCHES(macroName,exceptionType,resultDisposition,matcher,...)
do {
Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__) ", " CATCH_INTERNAL_STRINGIFY(exceptionType) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition );
if( catchAssertionHandler.allowThrows() )
try {
static_cast<void>(__VA_ARGS__ );
catchAssertionHandler.handleUnexpectedExceptionNotThrown();
}
catch( exceptionType const& ex ) {
catchAssertionHandler.handleExpr( Catch::makeMatchExpr( ex, matcher, #matcher##_catch_sr ) );
}
catch( ... ) {
catchAssertionHandler.handleUnexpectedInflightException();
}
else
catchAssertionHandler.handleThrowingCallSkipped();
INTERNAL_CATCH_REACT( catchAssertionHandler )
} while( false )

Defines (catch_clara.h)

CATCH_CLARA_TEXTFLOW_CONFIG_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH-1

Defines (catch_common.h)

INTERNAL_CATCH_UNIQUE_NAME_LINE2(name,line)
name##line

INTERNAL_CATCH_UNIQUE_NAME_LINE(name,line)
INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line )

INTERNAL_CATCH_UNIQUE_NAME(name)
INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ )

CATCH_INTERNAL_LINEINFO ::Catch::SourceLineInfo( __FILE__, static_cast<std::size_t>( __LINE__ ) )

Defines (catch_compiler_capabilities.h)

CATCH_INTERNAL_CONFIG_POSIX_SIGNALS

CATCH_INTERNAL_CONFIG_COUNTER

CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER

CATCH_CONFIG_COUNTER

Mentioned in:

CATCH_CONFIG_POSIX_SIGNALS

Mentioned in:

CATCH_CONFIG_WCHAR

Mentioned in:

CATCH_CONFIG_CPP11_TO_STRING

Mentioned in:

CATCH_CONFIG_DISABLE_EXCEPTIONS

Mentioned in:

CATCH_CONFIG_GLOBAL_NEXTAFTER

Mentioned in:

CATCH_INTERNAL_START_WARNINGS_SUPPRESSION

CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS

CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS

CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS

CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS

CATCH_INTERNAL_IGNORE_BUT_WARN(...)

CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS

CATCH_TRY if ((true))

CATCH_CATCH_ALL if ((false))

CATCH_CATCH_ANON(type)
if ((false))

Defines (catch_config.hpp)

CATCH_CONFIG_CONSOLE_WIDTH 80

Mentioned in:

CATCH_CONFIG_DEFAULT_REPORTER "console"

Mentioned in:

Defines (catch_console_colour.cpp)

CATCH_CONFIG_COLOUR_ANSI

Mentioned in:

Defines (catch_debugger.h)

CATCH_BREAK_INTO_DEBUGGER()
[]{}()

Mentioned in:

Defines (catch_enforce.h)

CATCH_MAKE_MSG(...)
(Catch::ReusableStringStream() << __VA_ARGS__).str()

CATCH_INTERNAL_ERROR(...)
Catch::throw_logic_error(CATCH_MAKE_MSG( CATCH_INTERNAL_LINEINFO << ": Internal Catch2 error: " << __VA_ARGS__))

CATCH_ERROR(...)
Catch::throw_domain_error(CATCH_MAKE_MSG( __VA_ARGS__ ))

Mentioned in:

CATCH_RUNTIME_ERROR(...)
Catch::throw_runtime_error(CATCH_MAKE_MSG( __VA_ARGS__ ))

Mentioned in:

CATCH_ENFORCE(condition,...)
do{ if( !(condition) ) CATCH_ERROR( __VA_ARGS__ ); } while(false)

Defines (catch_generators.hpp)

GENERATE(...)
Catch::Generators::generate( INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_UNIQUE_NAME(generator)),
CATCH_INTERNAL_LINEINFO,
[ ]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } )

Mentioned in:

GENERATE_COPY(...)
Catch::Generators::generate( INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_UNIQUE_NAME(generator)),
CATCH_INTERNAL_LINEINFO,
[=]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } )

Mentioned in:

GENERATE_REF(...)
Catch::Generators::generate( INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_UNIQUE_NAME(generator)),
CATCH_INTERNAL_LINEINFO,
[&]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } )

Mentioned in:

Defines (catch_interfaces_exception.h)

INTERNAL_CATCH_TRANSLATE_EXCEPTION2(translatorName,signature)
static std::string translatorName( signature );
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
namespace{ Catch::ExceptionTranslatorRegistrar INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionRegistrar )( &translatorName ); }
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
static std::string translatorName( signature )

INTERNAL_CATCH_TRANSLATE_EXCEPTION(signature)
INTERNAL_CATCH_TRANSLATE_EXCEPTION2( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature )

Defines (catch_objc.hpp)

OC_MAKE_UNIQUE_NAME(root,uniqueSuffix)
root##uniqueSuffix

OC_TEST_CASE2(name,desc,uniqueSuffix)
+(NSString*) OC_MAKE_UNIQUE_NAME( Catch_Name_test_, uniqueSuffix )
{
return @ name;
}
+(NSString*) OC_MAKE_UNIQUE_NAME( Catch_Description_test_, uniqueSuffix )
{
return @ desc;
}
-(void) OC_MAKE_UNIQUE_NAME( Catch_TestCase_test_, uniqueSuffix )

OC_TEST_CASE(name,desc)
OC_TEST_CASE2( name, desc, __LINE__ )

Defines (catch_objc_arc.hpp)

CATCH_ARC_ENABLED 0

CATCH_UNSAFE_UNRETAINED

CATCH_ARC_STRONG

Defines (catch_preprocessor.hpp)

CATCH_RECURSION_LEVEL0(...)
__VA_ARGS__

CATCH_RECURSION_LEVEL1(...)
CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__)))

CATCH_RECURSION_LEVEL2(...)
CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__)))

CATCH_RECURSION_LEVEL3(...)
CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__)))

CATCH_RECURSION_LEVEL4(...)
CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__)))

CATCH_RECURSION_LEVEL5(...)
CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__)))

CATCH_RECURSE(...)
CATCH_RECURSION_LEVEL5(__VA_ARGS__)

CATCH_REC_END(...)

CATCH_REC_OUT

CATCH_EMPTY()

CATCH_DEFER(id)
id CATCH_EMPTY()

CATCH_REC_GET_END2()
0, CATCH_REC_END

CATCH_REC_GET_END1(...)
CATCH_REC_GET_END2

CATCH_REC_GET_END(...)
CATCH_REC_GET_END1

CATCH_REC_NEXT0(test,next,...)
next CATCH_REC_OUT

CATCH_REC_NEXT1(test,next)
CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0)

CATCH_REC_NEXT(test,next)
CATCH_REC_NEXT1(CATCH_REC_GET_END test, next)

CATCH_REC_LIST0(f,x,peek,...)
, f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ )

CATCH_REC_LIST1(f,x,peek,...)
, f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ )

CATCH_REC_LIST2(f,x,peek,...)
f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ )

CATCH_REC_LIST0_UD(f,userdata,x,peek,...)
, f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ )

CATCH_REC_LIST1_UD(f,userdata,x,peek,...)
, f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0_UD) ) ( f, userdata, peek, __VA_ARGS__ )

CATCH_REC_LIST2_UD(f,userdata,x,peek,...)
f(userdata, x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1_UD) ) ( f, userdata, peek, __VA_ARGS__ )

CATCH_REC_LIST_UD(f,userdata,...)
CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0))

CATCH_REC_LIST(f,...)
CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0))

INTERNAL_CATCH_EXPAND1(param)
INTERNAL_CATCH_EXPAND2(param)

INTERNAL_CATCH_EXPAND2(...)
INTERNAL_CATCH_NO## __VA_ARGS__

INTERNAL_CATCH_DEF(...)
INTERNAL_CATCH_DEF __VA_ARGS__

INTERNAL_CATCH_NOINTERNAL_CATCH_DEF

INTERNAL_CATCH_STRINGIZE(...)
INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__)

INTERNAL_CATCH_STRINGIZE2(...)
#__VA_ARGS__

INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param)
INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param))

INTERNAL_CATCH_MAKE_NAMESPACE2(...)
ns_##__VA_ARGS__

INTERNAL_CATCH_MAKE_NAMESPACE(name)
INTERNAL_CATCH_MAKE_NAMESPACE2(name)

INTERNAL_CATCH_REMOVE_PARENS(...)
INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__)

INTERNAL_CATCH_MAKE_TYPE_LIST2(...)
decltype(get_wrapper<INTERNAL_CATCH_REMOVE_PARENS_GEN(__VA_ARGS__)>())

INTERNAL_CATCH_MAKE_TYPE_LIST(...)
INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))

INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...)
CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST,__VA_ARGS__)

INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_0)
INTERNAL_CATCH_REMOVE_PARENS(_0)

INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0,_1)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1)

INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0,_1,_2)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2)

INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0,_1,_2,_3)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3)

INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_0,_1,_2,_3,_4)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_1, _2, _3, _4)

INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_0,_1,_2,_3,_4,_5)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_5_ARG(_1, _2, _3, _4, _5)

INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_0,_1,_2,_3,_4,_5,_6)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_6_ARG(_1, _2, _3, _4, _5, _6)

INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_0,_1,_2,_3,_4,_5,_6,_7)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_7_ARG(_1, _2, _3, _4, _5, _6, _7)

INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_0,_1,_2,_3,_4,_5,_6,_7,_8)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_8_ARG(_1, _2, _3, _4, _5, _6, _7, _8)

INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_9_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9)

INTERNAL_CATCH_REMOVE_PARENS_11_ARG(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10)
INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_10_ARG(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10)

INTERNAL_CATCH_VA_NARGS_IMPL(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,N,...)
N

INTERNAL_CATCH_TYPE_GEN

INTERNAL_CATCH_NTTP_1(signature,...)
template<INTERNAL_CATCH_REMOVE_PARENS(signature)> struct Nttp{};
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>
constexpr auto get_wrapper() noexcept -> Nttp<__VA_ARGS__> { return {}; }
template<template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class...> struct NttpTemplateTypeList{};
template<template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class...Cs>
constexpr auto get_wrapper() noexcept -> NttpTemplateTypeList<Cs...> { return {}; }

template< template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class Container, template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class List, INTERNAL_CATCH_REMOVE_PARENS(signature)>
struct rewrap<NttpTemplateTypeList<Container>, List<__VA_ARGS__>> { using type = TypeList<Container<__VA_ARGS__>>; };
template< template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class Container, template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class List, INTERNAL_CATCH_REMOVE_PARENS(signature), typename...Elements>
struct rewrap<NttpTemplateTypeList<Container>, List<__VA_ARGS__>, Elements...> { using type = typename append<TypeList<Container<__VA_ARGS__>>, typename rewrap<NttpTemplateTypeList<Container>, Elements...>::type>::type; };
template<template <typename...> class Final, template<INTERNAL_CATCH_REMOVE_PARENS(signature)> class...Containers, typename...Types>
struct create<Final, NttpTemplateTypeList<Containers...>, TypeList<Types...>> { using type = typename append<Final<>, typename rewrap<NttpTemplateTypeList<Containers>, Types...>::type...>::type; };

INTERNAL_CATCH_DECLARE_SIG_TEST0(TestName)

INTERNAL_CATCH_DECLARE_SIG_TEST1(TestName,signature)
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>
static void TestName()

INTERNAL_CATCH_DECLARE_SIG_TEST_X(TestName,signature,...)
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>
static void TestName()

INTERNAL_CATCH_DEFINE_SIG_TEST0(TestName)

INTERNAL_CATCH_DEFINE_SIG_TEST1(TestName,signature)
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>
static void TestName()

INTERNAL_CATCH_DEFINE_SIG_TEST_X(TestName,signature,...)
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>
static void TestName()

INTERNAL_CATCH_NTTP_REGISTER0(TestFunc,signature)
template<typename Type>
void reg_test(TypeList<Type>, Catch::NameAndTags nameAndTags)
{
Catch::AutoReg( Catch::makeTestInvoker(&TestFunc<Type>), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), nameAndTags);
}

INTERNAL_CATCH_NTTP_REGISTER(TestFunc,signature,...)
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>
void reg_test(Nttp<__VA_ARGS__>, Catch::NameAndTags nameAndTags)
{
Catch::AutoReg( Catch::makeTestInvoker(&TestFunc<__VA_ARGS__>), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), nameAndTags);
}

INTERNAL_CATCH_NTTP_REGISTER_METHOD0(TestName,signature,...)
template<typename Type>
void reg_test(TypeList<Type>, Catch::StringRef className, Catch::NameAndTags nameAndTags)
{
Catch::AutoReg( Catch::makeTestInvoker(&TestName<Type>::test), CATCH_INTERNAL_LINEINFO, className, nameAndTags);
}

INTERNAL_CATCH_NTTP_REGISTER_METHOD(TestName,signature,...)
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>
void reg_test(Nttp<__VA_ARGS__>, Catch::StringRef className, Catch::NameAndTags nameAndTags)
{
Catch::AutoReg( Catch::makeTestInvoker(&TestName<__VA_ARGS__>::test), CATCH_INTERNAL_LINEINFO, className, nameAndTags);
}

INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD0(TestName,ClassName)

INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD1(TestName,ClassName,signature)
template<typename TestType>
struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName)<TestType> {
void test();
}

INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X(TestName,ClassName,signature,...)
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>
struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName)<__VA_ARGS__> {
void test();
}

INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD0(TestName)

INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD1(TestName,signature)
template<typename TestType>
void INTERNAL_CATCH_MAKE_NAMESPACE(TestName)::TestName<TestType>::test()

INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X(TestName,signature,...)
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>
void INTERNAL_CATCH_MAKE_NAMESPACE(TestName)::TestName<__VA_ARGS__>::test()

INTERNAL_CATCH_NTTP_0

INTERNAL_CATCH_NTTP_GEN(...)
INTERNAL_CATCH_VA_NARGS_IMPL(__VA_ARGS__, INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1(__VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_1( __VA_ARGS__),INTERNAL_CATCH_NTTP_1( __VA_ARGS__), INTERNAL_CATCH_NTTP_0)

INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName,...)
INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD1, INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD0)(TestName, __VA_ARGS__)

INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD(TestName,ClassName,...)
INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X,INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD1, INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD0)(TestName, ClassName, __VA_ARGS__)

INTERNAL_CATCH_NTTP_REG_METHOD_GEN(TestName,...)
INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD, INTERNAL_CATCH_NTTP_REGISTER_METHOD0, INTERNAL_CATCH_NTTP_REGISTER_METHOD0)(TestName, __VA_ARGS__)

INTERNAL_CATCH_NTTP_REG_GEN(TestFunc,...)
INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER, INTERNAL_CATCH_NTTP_REGISTER0, INTERNAL_CATCH_NTTP_REGISTER0)(TestFunc, __VA_ARGS__)

INTERNAL_CATCH_DEFINE_SIG_TEST(TestName,...)
INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X,INTERNAL_CATCH_DEFINE_SIG_TEST_X,INTERNAL_CATCH_DEFINE_SIG_TEST1, INTERNAL_CATCH_DEFINE_SIG_TEST0)(TestName, __VA_ARGS__)

INTERNAL_CATCH_DECLARE_SIG_TEST(TestName,...)
INTERNAL_CATCH_VA_NARGS_IMPL( "dummy", __VA_ARGS__, INTERNAL_CATCH_DECLARE_SIG_TEST_X,INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DEFINE_SIG_TEST_X,INTERNAL_CATCH_DECLARE_SIG_TEST_X,INTERNAL_CATCH_DECLARE_SIG_TEST_X, INTERNAL_CATCH_DECLARE_SIG_TEST1, INTERNAL_CATCH_DECLARE_SIG_TEST0)(TestName, __VA_ARGS__)

INTERNAL_CATCH_REMOVE_PARENS_GEN(...)
INTERNAL_CATCH_VA_NARGS_IMPL(__VA_ARGS__, INTERNAL_CATCH_REMOVE_PARENS_11_ARG,INTERNAL_CATCH_REMOVE_PARENS_10_ARG,INTERNAL_CATCH_REMOVE_PARENS_9_ARG,INTERNAL_CATCH_REMOVE_PARENS_8_ARG,INTERNAL_CATCH_REMOVE_PARENS_7_ARG,INTERNAL_CATCH_REMOVE_PARENS_6_ARG,INTERNAL_CATCH_REMOVE_PARENS_5_ARG,INTERNAL_CATCH_REMOVE_PARENS_4_ARG,INTERNAL_CATCH_REMOVE_PARENS_3_ARG,INTERNAL_CATCH_REMOVE_PARENS_2_ARG,INTERNAL_CATCH_REMOVE_PARENS_1_ARG)(__VA_ARGS__)

Defines (catch_reporter_registrars.hpp)

CATCH_REGISTER_REPORTER(name,reporterType)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
namespace{ Catch::ReporterRegistrar<reporterType> catch_internal_RegistrarFor##reporterType( name ); }
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

Mentioned in:

CATCH_REGISTER_LISTENER(listenerType)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
namespace{ Catch::ListenerRegistrar<listenerType> catch_internal_RegistrarFor##listenerType; }
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

Mentioned in:

Defines (catch_section.h)

INTERNAL_CATCH_SECTION(...)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS
if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) )
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

INTERNAL_CATCH_DYNAMIC_SECTION(...)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS
if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, (Catch::ReusableStringStream() << __VA_ARGS__).str() ) )
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

Defines (catch_tag_alias_autoregistrar.h)

CATCH_REGISTER_TAG_ALIAS(alias,spec)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); }
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

Mentioned in:

Defines (catch_test_registry.h)

INTERNAL_CATCH_TESTCASE2(TestName,...)
static void TestName();
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &TestName ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
static void TestName()

INTERNAL_CATCH_TESTCASE(...)
INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), __VA_ARGS__ )

INTERNAL_CATCH_METHOD_AS_TEST_CASE(QualifiedMethod,...)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( &QualifiedMethod ), CATCH_INTERNAL_LINEINFO, "&" #QualifiedMethod, Catch::NameAndTags{ __VA_ARGS__ } ); } /* NOLINT */
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

INTERNAL_CATCH_TEST_CASE_METHOD2(TestName,ClassName,...)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
namespace{
struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName) {
void test();
};
Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( Catch::makeTestInvoker( &TestName::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */
}
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
void TestName::test()

INTERNAL_CATCH_TEST_CASE_METHOD(ClassName,...)
INTERNAL_CATCH_TEST_CASE_METHOD2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), ClassName, __VA_ARGS__ )

INTERNAL_CATCH_REGISTER_TESTCASE(Function,...)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( Catch::makeTestInvoker( Function ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ __VA_ARGS__ } ); /* NOLINT */
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

INTERNAL_CATCH_TEMPLATE_TEST_CASE_2(TestName,TestFunc,Name,Tags,Signature,...)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS
CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
INTERNAL_CATCH_DECLARE_SIG_TEST(TestFunc, INTERNAL_CATCH_REMOVE_PARENS(Signature));
namespace {
namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){
INTERNAL_CATCH_TYPE_GEN
INTERNAL_CATCH_NTTP_GEN(INTERNAL_CATCH_REMOVE_PARENS(Signature))
INTERNAL_CATCH_NTTP_REG_GEN(TestFunc,INTERNAL_CATCH_REMOVE_PARENS(Signature))
template<typename...Types>
struct TestName{
TestName(){
int index = 0;
constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, __VA_ARGS__)};
using expander = int[];
(void)expander{(reg_test(Types{}, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index]), Tags } ), index++)... };/* NOLINT */
}
};
static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){
TestName<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(__VA_ARGS__)>();
return 0;
}();
}
}
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
INTERNAL_CATCH_DEFINE_SIG_TEST(TestFunc,INTERNAL_CATCH_REMOVE_PARENS(Signature))

INTERNAL_CATCH_TEMPLATE_TEST_CASE(Name,Tags,...)
INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename TestType, __VA_ARGS__ )

INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG(Name,Tags,Signature,...)
INTERNAL_CATCH_TEMPLATE_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, Signature, __VA_ARGS__ )

INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(TestName,TestFuncName,Name,Tags,Signature,TmplTypes,TypesList)

INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE(Name,Tags,...)
INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, typename T,__VA_ARGS__)

INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG(Name,Tags,Signature,...)
INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, Signature, __VA_ARGS__)

INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2(TestName,TestFunc,Name,Tags,TmplList)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
template<typename TestType> static void TestFunc();
namespace {
namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){
INTERNAL_CATCH_TYPE_GEN
template<typename... Types>
struct TestName {
void reg_tests() {
int index = 0;
using expander = int[];
(void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestFunc<Types> ), CATCH_INTERNAL_LINEINFO, Catch::StringRef(), Catch::NameAndTags{ Name " - " + std::string(INTERNAL_CATCH_STRINGIZE(TmplList)) + " - " + std::to_string(index), Tags } ), index++)... };/* NOLINT */
}
};
static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){
using TestInit = typename convert<TestName, TmplList>::type;
TestInit t;
t.reg_tests();
return 0;
}();
}}
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
template<typename TestType>
static void TestFunc()

INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE(Name,Tags,TmplList)
INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), Name, Tags, TmplList )

INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2(TestNameClass,TestName,ClassName,Name,Tags,Signature,...)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS
CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
namespace {
namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){
INTERNAL_CATCH_TYPE_GEN
INTERNAL_CATCH_NTTP_GEN(INTERNAL_CATCH_REMOVE_PARENS(Signature))
INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD(TestName, ClassName, INTERNAL_CATCH_REMOVE_PARENS(Signature));
INTERNAL_CATCH_NTTP_REG_METHOD_GEN(TestName, INTERNAL_CATCH_REMOVE_PARENS(Signature))
template<typename...Types>
struct TestNameClass{
TestNameClass(){
int index = 0;
constexpr char const* tmpl_types[] = {CATCH_REC_LIST(INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS, __VA_ARGS__)};
using expander = int[];
(void)expander{(reg_test(Types{}, #ClassName, Catch::NameAndTags{ Name " - " + std::string(tmpl_types[index]), Tags } ), index++)... };/* NOLINT */
}
};
static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){
TestNameClass<INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(__VA_ARGS__)>();
return 0;
}();
}
}
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName, INTERNAL_CATCH_REMOVE_PARENS(Signature))

INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD(ClassName,Name,Tags,...)
INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, typename T, __VA_ARGS__ )

INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG(ClassName,Name,Tags,Signature,...)
INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____C_L_A_S_S____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ) , ClassName, Name, Tags, Signature, __VA_ARGS__ )

INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2(TestNameClass,TestName,ClassName,Name,Tags,Signature,TmplTypes,TypesList)

INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD(ClassName,Name,Tags,...)
INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, typename T, __VA_ARGS__ )

INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG(ClassName,Name,Tags,Signature,...)
INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, Signature, __VA_ARGS__ )

INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2(TestNameClass,TestName,ClassName,Name,Tags,TmplList)
CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
template<typename TestType>
struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName <TestType>) {
void test();
};
namespace {
namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){
INTERNAL_CATCH_TYPE_GEN
template<typename...Types>
struct TestNameClass{
void reg_tests(){
int index = 0;
using expander = int[];
(void)expander{(Catch::AutoReg( Catch::makeTestInvoker( &TestName<Types>::test ), CATCH_INTERNAL_LINEINFO, #ClassName, Catch::NameAndTags{ Name " - " + std::string(INTERNAL_CATCH_STRINGIZE(TmplList)) + " - " + std::to_string(index), Tags } ), index++)... };/* NOLINT */
}
};
static int INTERNAL_CATCH_UNIQUE_NAME( globalRegistrar ) = [](){
using TestInit = typename convert<TestNameClass, TmplList>::type;
TestInit t;
t.reg_tests();
return 0;
}();
}}
CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
template<typename TestType>
void TestName<TestType>::test()

INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD(ClassName,Name,Tags,TmplList)
INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2( INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____ ), INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____ ), ClassName, Name, Tags, TmplList )

Defines (catch_tostring.cpp)

CATCH_CONFIG_ENABLE_CHRONO_STRINGMAKER

Mentioned in:

Defines (catch_tostring.h)

INTERNAL_CATCH_REGISTER_ENUM(enumName,...)
namespace Catch {
template<> struct StringMaker<enumName> {
static std::string convert( enumName value ) {
static const auto& enumInfo = ::Catch::getMutableRegistryHub().getMutableEnumValuesRegistry().registerEnum( #enumName, #__VA_ARGS__, { __VA_ARGS__ } );
return static_cast<std::string>(enumInfo.lookup( static_cast<int>( value ) ));
}
};
}

CATCH_REGISTER_ENUM(enumName,...)
INTERNAL_CATCH_REGISTER_ENUM( enumName, __VA_ARGS__ )

Mentioned in:

  • Fine tuning / String conversions / Enums

Variables

Variables (catch_test_case_registry_impl.cpp)

uint64_t basis

Variables (catch_timer.cpp)

const uint64_t nanosecondsInSecond = 1000000000






Add Discussion as Guest

Log in