API
catch.hpp File Reference
#include <iosfwd>
#include <string>
#include <cstdint>
#include <vector>
#include <cstddef>
#include <cassert>
#include <type_traits>
#include <ostream>
#include <chrono>
#include <memory>
#include <exception>
#include <functional>
#include <algorithm>
#include <utility>
#include <random>
Include dependency graph for catch.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Catch_global_namespace_dummy
 
struct  Catch::CaseSensitive
 
class  Catch::NonCopyable
 
struct  Catch::SourceLineInfo
 
struct  Catch::StreamEndStop
 
struct  Catch::RegistrarForTagAliases
 
struct  Catch::ITestInvoker
 
struct  Catch::ITestCaseRegistry
 
class  Catch::StringRef
 
struct  Catch::always_false< T >
 
struct  Catch::true_given< typename >
 
struct  Catch::is_callable_tester
 
struct  Catch::is_callable< Fun(Args...)>
 
class  Catch::TestInvokerAsMethod< C >
 
struct  Catch::NameAndTags
 
struct  Catch::AutoReg
 
struct  Catch::ResultWas
 
struct  Catch::ResultDisposition
 
struct  Catch::AssertionInfo
 
struct  Catch::IStream
 
class  Catch::ReusableStringStream
 
struct  Catch::Detail::EnumInfo
 
struct  Catch::IMutableEnumValuesRegistry
 
class  Catch::Detail::IsStreamInsertable< T >
 
struct  Catch::StringMaker< T, typename >
 
struct  Catch::StringMaker< std::string >
 
struct  Catch::StringMaker< char const * >
 
struct  Catch::StringMaker< char * >
 
struct  Catch::StringMaker< std::wstring >
 
struct  Catch::StringMaker< wchar_t const * >
 
struct  Catch::StringMaker< wchar_t * >
 
struct  Catch::StringMaker< char[SZ]>
 
struct  Catch::StringMaker< signed char[SZ]>
 
struct  Catch::StringMaker< unsigned char[SZ]>
 
struct  Catch::StringMaker< int >
 
struct  Catch::StringMaker< long >
 
struct  Catch::StringMaker< long long >
 
struct  Catch::StringMaker< unsigned int >
 
struct  Catch::StringMaker< unsigned long >
 
struct  Catch::StringMaker< unsigned long long >
 
struct  Catch::StringMaker< bool >
 
struct  Catch::StringMaker< char >
 
struct  Catch::StringMaker< signed char >
 
struct  Catch::StringMaker< unsigned char >
 
struct  Catch::StringMaker< std::nullptr_t >
 
struct  Catch::StringMaker< float >
 
struct  Catch::StringMaker< double >
 
struct  Catch::StringMaker< T * >
 
struct  Catch::StringMaker< R C::* >
 
struct  Catch::detail::void_type<... >
 
struct  Catch::detail::is_range_impl< T, typename >
 
struct  Catch::detail::is_range_impl< T, typename void_type< decltype(begin(std::declval< T >()))>::type >
 
struct  Catch::is_range< T >
 
struct  Catch::StringMaker< R, typename std::enable_if< is_range< R >::value &&!::Catch::Detail::IsStreamInsertable< R >::value >::type >
 
struct  Catch::StringMaker< T[SZ]>
 
struct  Catch::ITransientExpression
 
class  Catch::BinaryExpr< LhsT, RhsT >
 
class  Catch::UnaryExpr< LhsT >
 
class  Catch::ExprLhs< LhsT >
 
struct  Catch::Decomposer
 
struct  Catch::IResultCapture
 
struct  Catch::TestFailureException
 
class  Catch::LazyExpression
 
struct  Catch::AssertionReaction
 
class  Catch::AssertionHandler
 
struct  Catch::MessageInfo
 
struct  Catch::MessageStream
 
struct  Catch::MessageBuilder
 
class  Catch::ScopedMessage
 
class  Catch::Capturer
 
struct  Catch::Counts
 
struct  Catch::Totals
 
struct  Catch::SectionInfo
 
struct  Catch::SectionEndInfo
 
class  Catch::Timer
 
class  Catch::Section
 
struct  Catch::IRegistryHub
 
struct  Catch::IMutableRegistryHub
 
struct  Catch::IExceptionTranslator
 
struct  Catch::IExceptionTranslatorRegistry
 
class  Catch::ExceptionTranslatorRegistrar
 
class  Catch::ExceptionTranslatorRegistrar::ExceptionTranslator< T >
 
class  Catch::Detail::Approx
 
struct  Catch::StringMaker< Catch::Detail::Approx >
 
struct  Catch::pluralise
 
class  Catch::Matchers::Impl::MatcherUntypedBase
 
struct  Catch::Matchers::Impl::MatcherMethod< ObjectT >
 
struct  Catch::Matchers::Impl::MatcherBase< T >
 
struct  Catch::Matchers::Impl::MatchAllOf< ArgT >
 
struct  Catch::Matchers::Impl::MatchAnyOf< ArgT >
 
struct  Catch::Matchers::Impl::MatchNotOf< ArgT >
 
class  Catch::Matchers::Exception::ExceptionMessageMatcher
 
struct  Catch::Matchers::Floating::WithinAbsMatcher
 
struct  Catch::Matchers::Floating::WithinUlpsMatcher
 
struct  Catch::Matchers::Floating::WithinRelMatcher
 
class  Catch::Matchers::Generic::PredicateMatcher< T >
 
struct  Catch::Matchers::StdString::CasedString
 
struct  Catch::Matchers::StdString::StringMatcherBase
 
struct  Catch::Matchers::StdString::EqualsMatcher
 
struct  Catch::Matchers::StdString::ContainsMatcher
 
struct  Catch::Matchers::StdString::StartsWithMatcher
 
struct  Catch::Matchers::StdString::EndsWithMatcher
 
struct  Catch::Matchers::StdString::RegexMatcher
 
struct  Catch::Matchers::Vector::ContainsElementMatcher< T, Alloc >
 
struct  Catch::Matchers::Vector::ContainsMatcher< T, AllocComp, AllocMatch >
 
struct  Catch::Matchers::Vector::EqualsMatcher< T, AllocComp, AllocMatch >
 
struct  Catch::Matchers::Vector::ApproxMatcher< T, AllocComp, AllocMatch >
 
struct  Catch::Matchers::Vector::UnorderedEqualsMatcher< T, AllocComp, AllocMatch >
 
class  Catch::MatchExpr< ArgT, MatcherT >
 
class  Catch::Generators::GeneratorUntypedBase
 
struct  Catch::IGeneratorTracker
 
class  Catch::GeneratorException
 
struct  Catch::Generators::IGenerator< T >
 
class  Catch::Generators::SingleValueGenerator< T >
 
class  Catch::Generators::FixedValuesGenerator< T >
 
class  Catch::Generators::GeneratorWrapper< T >
 
class  Catch::Generators::Generators< T >
 
struct  Catch::Generators::as< T >
 
class  Catch::Generators::TakeGenerator< T >
 
class  Catch::Generators::FilterGenerator< T, Predicate >
 
class  Catch::Generators::RepeatGenerator< T >
 
class  Catch::Generators::MapGenerator< T, U, Func >
 
class  Catch::Generators::ChunkGenerator< T >
 
struct  Catch::IContext
 
struct  Catch::IMutableContext
 
class  Catch::Option< T >
 
struct  Catch::WarnAbout
 
struct  Catch::ShowDurations
 
struct  Catch::RunTests
 
struct  Catch::UseColour
 
struct  Catch::WaitForKeypress
 
struct  Catch::IConfig
 
class  Catch::SimplePcg32
 
class  Catch::Generators::RandomFloatingGenerator< Float >
 
class  Catch::Generators::RandomIntegerGenerator< Integer >
 
class  Catch::Generators::RangeGenerator< T >
 
class  Catch::Generators::IteratorGenerator< T >
 
struct  Catch::TestCaseInfo
 
class  Catch::TestCase
 
struct  Catch::IRunner
 

Namespaces

 Catch
 
 mpl_
 
 Catch::Detail
 
 Catch::detail
 
 Catch::literals
 
 Catch::Matchers
 
 Catch::Matchers::Impl
 
 Catch::Matchers::Exception
 
 Catch::Matchers::Floating
 
 Catch::Matchers::Generic
 
 Catch::Matchers::Generic::Detail
 
 Catch::Matchers::StdString
 
 Catch::Matchers::Vector
 
 Catch::Generators
 
 Catch::Generators::pf
 

Macros

#define CATCH_VERSION_MAJOR   2
 
#define CATCH_VERSION_MINOR   13
 
#define CATCH_VERSION_PATCH   10
 
#define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS
 
#define CATCH_INTERNAL_CONFIG_COUNTER
 
#define CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER
 
#define CATCH_CONFIG_COUNTER
 
#define CATCH_CONFIG_POSIX_SIGNALS
 
#define CATCH_CONFIG_WCHAR
 
#define CATCH_CONFIG_CPP11_TO_STRING
 
#define CATCH_CONFIG_DISABLE_EXCEPTIONS
 
#define CATCH_CONFIG_GLOBAL_NEXTAFTER
 
#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION
 
#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION
 
#define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS
 
#define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS
 
#define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS
 
#define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS
 
#define CATCH_INTERNAL_IGNORE_BUT_WARN(...)
 
#define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS
 
#define CATCH_TRY   if ((true))
 
#define CATCH_CATCH_ALL   if ((false))
 
#define CATCH_CATCH_ANON(type)   if ((false))
 
#define INTERNAL_CATCH_UNIQUE_NAME_LINE2(name, line)   name##line
 
#define INTERNAL_CATCH_UNIQUE_NAME_LINE(name, line)   INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line )
 
#define INTERNAL_CATCH_UNIQUE_NAME(name)   INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ )
 
#define CATCH_INTERNAL_LINEINFO    ::Catch::SourceLineInfo( __FILE__, static_cast<std::size_t>( __LINE__ ) )
 
#define CATCH_REGISTER_TAG_ALIAS(alias, spec)
 
#define CATCH_RECURSION_LEVEL0(...)   __VA_ARGS__
 
#define CATCH_RECURSION_LEVEL1(...)   CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__)))
 
#define CATCH_RECURSION_LEVEL2(...)   CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__)))
 
#define CATCH_RECURSION_LEVEL3(...)   CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__)))
 
#define CATCH_RECURSION_LEVEL4(...)   CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__)))
 
#define CATCH_RECURSION_LEVEL5(...)   CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__)))
 
#define CATCH_RECURSE(...)   CATCH_RECURSION_LEVEL5(__VA_ARGS__)
 
#define CATCH_REC_END(...)
 
#define CATCH_REC_OUT
 
#define CATCH_EMPTY()
 
#define CATCH_DEFER(id)   id CATCH_EMPTY()
 
#define CATCH_REC_GET_END2()   0, CATCH_REC_END
 
#define CATCH_REC_GET_END1(...)   CATCH_REC_GET_END2
 
#define CATCH_REC_GET_END(...)   CATCH_REC_GET_END1
 
#define CATCH_REC_NEXT0(test, next, ...)   next CATCH_REC_OUT
 
#define CATCH_REC_NEXT1(test, next)   CATCH_DEFER ( CATCH_REC_NEXT0 ) ( test, next, 0)
 
#define CATCH_REC_NEXT(test, next)   CATCH_REC_NEXT1(CATCH_REC_GET_END test, next)
 
#define CATCH_REC_LIST0(f, x, peek, ...)   , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ )
 
#define CATCH_REC_LIST1(f, x, peek, ...)   , f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST0) ) ( f, peek, __VA_ARGS__ )
 
#define CATCH_REC_LIST2(f, x, peek, ...)   f(x) CATCH_DEFER ( CATCH_REC_NEXT(peek, CATCH_REC_LIST1) ) ( f, peek, __VA_ARGS__ )
 
#define 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__ )
 
#define 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__ )
 
#define 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__ )
 
#define CATCH_REC_LIST_UD(f, userdata, ...)   CATCH_RECURSE(CATCH_REC_LIST2_UD(f, userdata, __VA_ARGS__, ()()(), ()()(), ()()(), 0))
 
#define CATCH_REC_LIST(f, ...)   CATCH_RECURSE(CATCH_REC_LIST2(f, __VA_ARGS__, ()()(), ()()(), ()()(), 0))
 
#define INTERNAL_CATCH_EXPAND1(param)   INTERNAL_CATCH_EXPAND2(param)
 
#define INTERNAL_CATCH_EXPAND2(...)   INTERNAL_CATCH_NO## __VA_ARGS__
 
#define INTERNAL_CATCH_DEF(...)   INTERNAL_CATCH_DEF __VA_ARGS__
 
#define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF
 
#define INTERNAL_CATCH_STRINGIZE(...)   INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__)
 
#define INTERNAL_CATCH_STRINGIZE2(...)   #__VA_ARGS__
 
#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param)   INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param))
 
#define INTERNAL_CATCH_MAKE_NAMESPACE2(...)   ns_##__VA_ARGS__
 
#define INTERNAL_CATCH_MAKE_NAMESPACE(name)   INTERNAL_CATCH_MAKE_NAMESPACE2(name)
 
#define INTERNAL_CATCH_REMOVE_PARENS(...)   INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__)
 
#define INTERNAL_CATCH_MAKE_TYPE_LIST2(...)   decltype(get_wrapper<INTERNAL_CATCH_REMOVE_PARENS_GEN(__VA_ARGS__)>())
 
#define INTERNAL_CATCH_MAKE_TYPE_LIST(...)   INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))
 
#define INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES(...)    CATCH_REC_LIST(INTERNAL_CATCH_MAKE_TYPE_LIST,__VA_ARGS__)
 
#define INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_0)   INTERNAL_CATCH_REMOVE_PARENS(_0)
 
#define INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_0, _1)   INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_1_ARG(_1)
 
#define INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_0, _1, _2)   INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_2_ARG(_1, _2)
 
#define INTERNAL_CATCH_REMOVE_PARENS_4_ARG(_0, _1, _2, _3)   INTERNAL_CATCH_REMOVE_PARENS(_0), INTERNAL_CATCH_REMOVE_PARENS_3_ARG(_1, _2, _3)
 
#define 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)
 
#define 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)
 
#define 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)
 
#define 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)
 
#define 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)
 
#define 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)
 
#define 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)
 
#define INTERNAL_CATCH_VA_NARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, N, ...)   N
 
#define INTERNAL_CATCH_TYPE_GEN
 
#define INTERNAL_CATCH_NTTP_1(signature, ...)
 
#define INTERNAL_CATCH_DECLARE_SIG_TEST0(TestName)
 
#define INTERNAL_CATCH_DECLARE_SIG_TEST1(TestName, signature)
 
#define INTERNAL_CATCH_DECLARE_SIG_TEST_X(TestName, signature, ...)
 
#define INTERNAL_CATCH_DEFINE_SIG_TEST0(TestName)
 
#define INTERNAL_CATCH_DEFINE_SIG_TEST1(TestName, signature)
 
#define INTERNAL_CATCH_DEFINE_SIG_TEST_X(TestName, signature, ...)
 
#define INTERNAL_CATCH_NTTP_REGISTER0(TestFunc, signature)
 
#define INTERNAL_CATCH_NTTP_REGISTER(TestFunc, signature, ...)
 
#define INTERNAL_CATCH_NTTP_REGISTER_METHOD0(TestName, signature, ...)
 
#define INTERNAL_CATCH_NTTP_REGISTER_METHOD(TestName, signature, ...)
 
#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD0(TestName, ClassName)
 
#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD1(TestName, ClassName, signature)
 
#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X(TestName, ClassName, signature, ...)
 
#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD0(TestName)
 
#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD1(TestName, signature)
 
#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X(TestName, signature, ...)
 
#define INTERNAL_CATCH_NTTP_0
 
#define 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)
 
#define 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__)
 
#define 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__)
 
#define 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__)
 
#define 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__)
 
#define 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__)
 
#define 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__)
 
#define 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__)
 
#define INTERNAL_CATCH_TESTCASE2(TestName, ...)
 
#define INTERNAL_CATCH_TESTCASE(...)    INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), __VA_ARGS__ )
 
#define INTERNAL_CATCH_METHOD_AS_TEST_CASE(QualifiedMethod, ...)
 
#define INTERNAL_CATCH_TEST_CASE_METHOD2(TestName, ClassName, ...)
 
#define 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__ )
 
#define INTERNAL_CATCH_REGISTER_TESTCASE(Function, ...)
 
#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_2(TestName, TestFunc, Name, Tags, Signature, ...)
 
#define 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__ )
 
#define 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__ )
 
#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2(TestName, TestFuncName, Name, Tags, Signature, TmplTypes, TypesList)
 
#define 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__)
 
#define 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__)
 
#define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2(TestName, TestFunc, Name, Tags, TmplList)
 
#define 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 )
 
#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2(TestNameClass, TestName, ClassName, Name, Tags, Signature, ...)
 
#define 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__ )
 
#define 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__ )
 
#define INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2(TestNameClass, TestName, ClassName, Name, Tags, Signature, TmplTypes, TypesList)
 
#define 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__ )
 
#define 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__ )
 
#define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2(TestNameClass, TestName, ClassName, Name, Tags, TmplList)
 
#define 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 )
 
#define INTERNAL_CATCH_REGISTER_ENUM(enumName, ...)
 
#define CATCH_REGISTER_ENUM(enumName, ...)   INTERNAL_CATCH_REGISTER_ENUM( enumName, __VA_ARGS__ )
 
#define CATCH_INTERNAL_STRINGIFY(...)   #__VA_ARGS__
 
#define INTERNAL_CATCH_TRY
 
#define INTERNAL_CATCH_CATCH(capturer)
 
#define INTERNAL_CATCH_REACT(handler)   handler.complete();
 
#define INTERNAL_CATCH_TEST(macroName, resultDisposition, ...)
 
#define INTERNAL_CATCH_IF(macroName, resultDisposition, ...)
 
#define INTERNAL_CATCH_ELSE(macroName, resultDisposition, ...)
 
#define INTERNAL_CATCH_NO_THROW(macroName, resultDisposition, ...)
 
#define INTERNAL_CATCH_THROWS(macroName, resultDisposition, ...)
 
#define INTERNAL_CATCH_THROWS_AS(macroName, exceptionType, resultDisposition, expr)
 
#define INTERNAL_CATCH_MSG(macroName, messageType, resultDisposition, ...)
 
#define INTERNAL_CATCH_CAPTURE(varName, macroName, ...)
 
#define INTERNAL_CATCH_INFO(macroName, log)    Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage )( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log );
 
#define INTERNAL_CATCH_UNSCOPED_INFO(macroName, log)    Catch::getResultCapture().emplaceUnscopedMessage( Catch::MessageBuilder( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log )
 
#define INTERNAL_CATCH_THROWS_STR_MATCHES(macroName, resultDisposition, matcher, ...)
 
#define INTERNAL_CATCH_SECTION(...)
 
#define INTERNAL_CATCH_DYNAMIC_SECTION(...)
 
#define INTERNAL_CATCH_TRANSLATE_EXCEPTION2(translatorName, signature)
 
#define INTERNAL_CATCH_TRANSLATE_EXCEPTION(signature)   INTERNAL_CATCH_TRANSLATE_EXCEPTION2( INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ), signature )
 
#define INTERNAL_CHECK_THAT(macroName, matcher, resultDisposition, arg)
 
#define INTERNAL_CATCH_THROWS_MATCHES(macroName, exceptionType, resultDisposition, matcher, ...)
 
#define CATCH_MAKE_MSG(...)    (Catch::ReusableStringStream() << __VA_ARGS__).str()
 
#define CATCH_INTERNAL_ERROR(...)    Catch::throw_logic_error(CATCH_MAKE_MSG( CATCH_INTERNAL_LINEINFO << ": Internal Catch2 error: " << __VA_ARGS__))
 
#define CATCH_ERROR(...)    Catch::throw_domain_error(CATCH_MAKE_MSG( __VA_ARGS__ ))
 
#define CATCH_RUNTIME_ERROR(...)    Catch::throw_runtime_error(CATCH_MAKE_MSG( __VA_ARGS__ ))
 
#define CATCH_ENFORCE(condition, ...)    do{ if( !(condition) ) CATCH_ERROR( __VA_ARGS__ ); } while(false)
 
#define GENERATE(...)
 
#define GENERATE_COPY(...)
 
#define GENERATE_REF(...)
 
#define REQUIRE(...)   INTERNAL_CATCH_TEST( "REQUIRE", Catch::ResultDisposition::Normal, __VA_ARGS__ )
 
#define REQUIRE_FALSE(...)   INTERNAL_CATCH_TEST( "REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, __VA_ARGS__ )
 
#define REQUIRE_THROWS(...)   INTERNAL_CATCH_THROWS( "REQUIRE_THROWS", Catch::ResultDisposition::Normal, __VA_ARGS__ )
 
#define REQUIRE_THROWS_AS(expr, exceptionType)   INTERNAL_CATCH_THROWS_AS( "REQUIRE_THROWS_AS", exceptionType, Catch::ResultDisposition::Normal, expr )
 
#define REQUIRE_THROWS_WITH(expr, matcher)   INTERNAL_CATCH_THROWS_STR_MATCHES( "REQUIRE_THROWS_WITH", Catch::ResultDisposition::Normal, matcher, expr )
 
#define REQUIRE_THROWS_MATCHES(expr, exceptionType, matcher)   INTERNAL_CATCH_THROWS_MATCHES( "REQUIRE_THROWS_MATCHES", exceptionType, Catch::ResultDisposition::Normal, matcher, expr )
 
#define REQUIRE_NOTHROW(...)   INTERNAL_CATCH_NO_THROW( "REQUIRE_NOTHROW", Catch::ResultDisposition::Normal, __VA_ARGS__ )
 
#define CHECK(...)   INTERNAL_CATCH_TEST( "CHECK", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
 
#define CHECK_FALSE(...)   INTERNAL_CATCH_TEST( "CHECK_FALSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, __VA_ARGS__ )
 
#define CHECKED_IF(...)   INTERNAL_CATCH_IF( "CHECKED_IF", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
 
#define CHECKED_ELSE(...)   INTERNAL_CATCH_ELSE( "CHECKED_ELSE", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
 
#define CHECK_NOFAIL(...)   INTERNAL_CATCH_TEST( "CHECK_NOFAIL", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ )
 
#define CHECK_THROWS(...)   INTERNAL_CATCH_THROWS( "CHECK_THROWS", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
 
#define CHECK_THROWS_AS(expr, exceptionType)   INTERNAL_CATCH_THROWS_AS( "CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr )
 
#define CHECK_THROWS_WITH(expr, matcher)   INTERNAL_CATCH_THROWS_STR_MATCHES( "CHECK_THROWS_WITH", Catch::ResultDisposition::ContinueOnFailure, matcher, expr )
 
#define CHECK_THROWS_MATCHES(expr, exceptionType, matcher)   INTERNAL_CATCH_THROWS_MATCHES( "CHECK_THROWS_MATCHES", exceptionType, Catch::ResultDisposition::ContinueOnFailure, matcher, expr )
 
#define CHECK_NOTHROW(...)   INTERNAL_CATCH_NO_THROW( "CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
 
#define CHECK_THAT(arg, matcher)   INTERNAL_CHECK_THAT( "CHECK_THAT", matcher, Catch::ResultDisposition::ContinueOnFailure, arg )
 
#define REQUIRE_THAT(arg, matcher)   INTERNAL_CHECK_THAT( "REQUIRE_THAT", matcher, Catch::ResultDisposition::Normal, arg )
 
#define INFO(msg)   INTERNAL_CATCH_INFO( "INFO", msg )
 
#define UNSCOPED_INFO(msg)   INTERNAL_CATCH_UNSCOPED_INFO( "UNSCOPED_INFO", msg )
 
#define WARN(msg)   INTERNAL_CATCH_MSG( "WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg )
 
#define CAPTURE(...)   INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CAPTURE",__VA_ARGS__ )
 
#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(Function, ...)   INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ )
 
#define SECTION(...)   INTERNAL_CATCH_SECTION( __VA_ARGS__ )
 
#define DYNAMIC_SECTION(...)   INTERNAL_CATCH_DYNAMIC_SECTION( __VA_ARGS__ )
 
#define FAIL(...)   INTERNAL_CATCH_MSG( "FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ )
 
#define FAIL_CHECK(...)   INTERNAL_CATCH_MSG( "FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
 
#define SUCCEED(...)   INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )
 
#define ANON_TEST_CASE()   INTERNAL_CATCH_TESTCASE()
 
#define TEMPLATE_TEST_CASE(...)   INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ )
 
#define TEMPLATE_TEST_CASE_SIG(...)   INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG( __VA_ARGS__ )
 
#define TEMPLATE_TEST_CASE_METHOD(className, ...)   INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )
 
#define TEMPLATE_TEST_CASE_METHOD_SIG(className, ...)   INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ )
 
#define TEMPLATE_PRODUCT_TEST_CASE(...)   INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE( __VA_ARGS__ )
 
#define TEMPLATE_PRODUCT_TEST_CASE_SIG(...)   INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( __VA_ARGS__ )
 
#define TEMPLATE_PRODUCT_TEST_CASE_METHOD(className, ...)   INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, __VA_ARGS__ )
 
#define TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG(className, ...)   INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ )
 
#define TEMPLATE_LIST_TEST_CASE(...)   INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE(__VA_ARGS__)
 
#define TEMPLATE_LIST_TEST_CASE_METHOD(className, ...)   INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD( className, __VA_ARGS__ )
 
#define STATIC_REQUIRE(...)   static_assert( __VA_ARGS__, #__VA_ARGS__ ); SUCCEED( #__VA_ARGS__ )
 
#define STATIC_REQUIRE_FALSE(...)   static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); SUCCEED( "!(" #__VA_ARGS__ ")" )
 
#define CATCH_TRANSLATE_EXCEPTION(signature)   INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature )
 
#define SCENARIO(...)   TEST_CASE( "Scenario: " __VA_ARGS__ )
 
#define SCENARIO_METHOD(className, ...)   INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ )
 
#define GIVEN(desc)   INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc )
 
#define AND_GIVEN(desc)   INTERNAL_CATCH_DYNAMIC_SECTION( "And given: " << desc )
 
#define WHEN(desc)   INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc )
 
#define AND_WHEN(desc)   INTERNAL_CATCH_DYNAMIC_SECTION( " And when: " << desc )
 
#define THEN(desc)   INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc )
 
#define AND_THEN(desc)   INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc )
 

Typedefs

template<typename Func , typename... U>
using Catch::FunctionReturnType = typename std::remove_reference< typename std::remove_cv< typename std::result_of< Func(U...)>::type >::type >::type
 
using Catch::IReporterFactoryPtr = std::shared_ptr< IReporterFactory >
 
using Catch::exceptionTranslateFunction = std::string(*)()
 
using Catch::ExceptionTranslators = std::vector< std::unique_ptr< IExceptionTranslator const > >
 
using Catch::StringMatcher = Matchers::Impl::MatcherBase< std::string >
 
using Catch::Generators::GeneratorBasePtr = std::unique_ptr< GeneratorUntypedBase >
 
using Catch::IConfigPtr = std::shared_ptr< IConfig const >
 

Enumerations

enum class  Catch::Verbosity { Catch::Quiet = 0 , Catch::Normal , Catch::High }
 

Functions

unsigned int Catch::rngSeed ()
 
std::ostream & operator<< (std::ostream &, Catch_global_namespace_dummy)
 
std::ostream & Catch::operator<< (std::ostream &os, SourceLineInfo const &info)
 
template<typename T >
T const & Catch::operator+ (T const &value, StreamEndStop)
 
bool Catch::isThrowSafe (TestCase const &testCase, IConfig const &config)
 
bool Catch::matchTest (TestCase const &testCase, TestSpec const &testSpec, IConfig const &config)
 
std::vector< TestCase > Catch::filterTests (std::vector< TestCase > const &testCases, TestSpec const &testSpec, IConfig const &config)
 
std::vector< TestCase > const & Catch::getAllTestCasesSorted (IConfig const &config)
 
auto Catch::operator+= (std::string &lhs, StringRef const &sr) -> std::string &
 
auto Catch::operator<< (std::ostream &os, StringRef const &sr) -> std::ostream &
 
constexpr auto Catch::operator""_sr (char const *rawChars, std::size_t size) noexcept -> StringRef
 
constexpr auto operator""_catch_sr (char const *rawChars, std::size_t size) noexcept -> Catch::StringRef
 
auto Catch::makeTestInvoker (void(*testAsFunction)()) noexcept -> ITestInvoker *
 
template<typename C >
auto Catch::makeTestInvoker (void(C::*testAsMethod)()) noexcept -> ITestInvoker *
 
bool Catch::isOk (ResultWas::OfType resultType)
 
bool Catch::isJustInfo (int flags)
 
ResultDisposition::Flags Catch::operator| (ResultDisposition::Flags lhs, ResultDisposition::Flags rhs)
 
bool Catch::shouldContinueOnFailure (int flags)
 
bool Catch::isFalseTest (int flags)
 
bool Catch::shouldSuppressFailure (int flags)
 
std::ostream & Catch::cout ()
 
std::ostream & Catch::cerr ()
 
std::ostream & Catch::clog ()
 
auto Catch::makeStream (StringRef const &filename) -> IStream const *
 
std::string Catch::Detail::rawMemoryToString (const void *object, std::size_t size)
 
template<typename T >
std::string Catch::Detail::rawMemoryToString (const T &object)
 
template<typename E >
std::string Catch::Detail::convertUnknownEnumToString (E e)
 
template<typename T >
std::enable_if< !std::is_enum< T >::value &&!std::is_base_of< std::exception, T >::value, std::string >::type Catch::Detail::convertUnstreamable (T const &)
 
template<typename T >
std::enable_if< !std::is_enum< T >::value &&std::is_base_of< std::exception, T >::value, std::string >::type Catch::Detail::convertUnstreamable (T const &ex)
 
template<typename T >
std::enable_if< std::is_enum< T >::value, std::string >::type Catch::Detail::convertUnstreamable (T const &value)
 
template<typename T >
std::string Catch::Detail::stringify (const T &e)
 
template<typename InputIterator , typename Sentinel = InputIterator>
std::string Catch::Detail::rangeToString (InputIterator first, Sentinel last)
 
template<typename Range >
std::string Catch::rangeToString (Range const &range)
 
template<typename Allocator >
std::string Catch::rangeToString (std::vector< bool, Allocator > const &v)
 
void Catch::formatReconstructedExpression (std::ostream &os, std::string const &lhs, StringRef op, std::string const &rhs)
 
template<typename LhsT , typename RhsT >
auto Catch::compareEqual (LhsT const &lhs, RhsT const &rhs) -> bool
 
template<typename T >
auto Catch::compareEqual (T *const &lhs, int rhs) -> bool
 
template<typename T >
auto Catch::compareEqual (T *const &lhs, long rhs) -> bool
 
template<typename T >
auto Catch::compareEqual (int lhs, T *const &rhs) -> bool
 
template<typename T >
auto Catch::compareEqual (long lhs, T *const &rhs) -> bool
 
template<typename LhsT , typename RhsT >
auto Catch::compareNotEqual (LhsT const &lhs, RhsT &&rhs) -> bool
 
template<typename T >
auto Catch::compareNotEqual (T *const &lhs, int rhs) -> bool
 
template<typename T >
auto Catch::compareNotEqual (T *const &lhs, long rhs) -> bool
 
template<typename T >
auto Catch::compareNotEqual (int lhs, T *const &rhs) -> bool
 
template<typename T >
auto Catch::compareNotEqual (long lhs, T *const &rhs) -> bool
 
void Catch::handleExpression (ITransientExpression const &expr)
 
template<typename T >
void Catch::handleExpression (ExprLhs< T > const &expr)
 
IResultCapture & Catch::getResultCapture ()
 
void Catch::handleExceptionMatchExpr (AssertionHandler &handler, std::string const &str, StringRef const &matcherString)
 
auto Catch::getCurrentNanosecondsSinceEpoch () -> uint64_t
 
auto Catch::getEstimatedClockResolution () -> uint64_t
 
IRegistryHub const & Catch::getRegistryHub ()
 
IMutableRegistryHub & Catch::getMutableRegistryHub ()
 
void Catch::cleanUp ()
 
std::string Catch::translateActiveException ()
 
Detail::Approx Catch::literals::operator""_a (long double val)
 
Detail::Approx Catch::literals::operator""_a (unsigned long long val)
 
bool Catch::startsWith (std::string const &s, std::string const &prefix)
 
bool Catch::startsWith (std::string const &s, char prefix)
 
bool Catch::endsWith (std::string const &s, std::string const &suffix)
 
bool Catch::endsWith (std::string const &s, char suffix)
 
bool Catch::contains (std::string const &s, std::string const &infix)
 
void Catch::toLowerInPlace (std::string &s)
 
std::string Catch::toLower (std::string const &s)
 
std::string Catch::trim (std::string const &str)
 Returns a new string without whitespace at the start/end. More...
 
StringRef Catch::trim (StringRef ref)
 Returns a substring of the original ref without whitespace. Beware lifetimes! More...
 
std::vector< StringRef > Catch::splitStringRef (StringRef str, char delimiter)
 
bool Catch::replaceInPlace (std::string &str, std::string const &replaceThis, std::string const &withThis)
 
Exception::ExceptionMessageMatcher Catch::Matchers::Message (std::string const &message)
 
Floating::WithinUlpsMatcher Catch::Matchers::WithinULP (double target, uint64_t maxUlpDiff)
 
Floating::WithinUlpsMatcher Catch::Matchers::WithinULP (float target, uint64_t maxUlpDiff)
 
Floating::WithinAbsMatcher Catch::Matchers::WithinAbs (double target, double margin)
 
Floating::WithinRelMatcher Catch::Matchers::WithinRel (double target, double eps)
 
Floating::WithinRelMatcher Catch::Matchers::WithinRel (double target)
 
Floating::WithinRelMatcher Catch::Matchers::WithinRel (float target, float eps)
 
Floating::WithinRelMatcher Catch::Matchers::WithinRel (float target)
 
std::string Catch::Matchers::Generic::Detail::finalizeDescription (const std::string &desc)
 
template<typename T >
Generic::PredicateMatcher< T > Catch::Matchers::Predicate (std::function< bool(T const &)> const &predicate, std::string const &description="")
 
StdString::EqualsMatcher Catch::Matchers::Equals (std::string const &str, CaseSensitive::Choice caseSensitivity=CaseSensitive::Yes)
 
StdString::ContainsMatcher Catch::Matchers::Contains (std::string const &str, CaseSensitive::Choice caseSensitivity=CaseSensitive::Yes)
 
StdString::EndsWithMatcher Catch::Matchers::EndsWith (std::string const &str, CaseSensitive::Choice caseSensitivity=CaseSensitive::Yes)
 
StdString::StartsWithMatcher Catch::Matchers::StartsWith (std::string const &str, CaseSensitive::Choice caseSensitivity=CaseSensitive::Yes)
 
StdString::RegexMatcher Catch::Matchers::Matches (std::string const &regex, CaseSensitive::Choice caseSensitivity=CaseSensitive::Yes)
 
template<typename T , typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
Vector::ContainsMatcher< T, AllocComp, AllocMatch > Catch::Matchers::Contains (std::vector< T, AllocComp > const &comparator)
 
template<typename T , typename Alloc = std::allocator<T>>
Vector::ContainsElementMatcher< T, Alloc > Catch::Matchers::VectorContains (T const &comparator)
 
template<typename T , typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
Vector::EqualsMatcher< T, AllocComp, AllocMatch > Catch::Matchers::Equals (std::vector< T, AllocComp > const &comparator)
 
template<typename T , typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
Vector::ApproxMatcher< T, AllocComp, AllocMatch > Catch::Matchers::Approx (std::vector< T, AllocComp > const &comparator)
 
template<typename T , typename AllocComp = std::allocator<T>, typename AllocMatch = AllocComp>
Vector::UnorderedEqualsMatcher< T, AllocComp, AllocMatch > Catch::Matchers::UnorderedEquals (std::vector< T, AllocComp > const &target)
 
void Catch::handleExceptionMatchExpr (AssertionHandler &handler, StringMatcher const &matcher, StringRef const &matcherString)
 
template<typename ArgT , typename MatcherT >
auto Catch::makeMatchExpr (ArgT const &arg, MatcherT const &matcher, StringRef const &matcherString) -> MatchExpr< ArgT, MatcherT >
 
void Catch::throw_exception (std::exception const &e)
 
void Catch::throw_logic_error (std::string const &msg)
 
void Catch::throw_domain_error (std::string const &msg)
 
void Catch::throw_runtime_error (std::string const &msg)
 
template<typename T , typename... Args>
std::unique_ptr< T > Catch::Generators::pf::make_unique (Args &&... args)
 
template<typename T >
GeneratorWrapper< T > Catch::Generators::value (T &&value)
 
template<typename T >
GeneratorWrapper< T > Catch::Generators::values (std::initializer_list< T > values)
 
template<typename... Ts>
GeneratorWrapper< std::tuple< Ts... > > Catch::Generators::table (std::initializer_list< std::tuple< typename std::decay< Ts >::type... >> tuples)
 
template<typename T , typename... Gs>
auto Catch::Generators::makeGenerators (GeneratorWrapper< T > &&generator, Gs &&... moreGenerators) -> Generators< T >
 
template<typename T >
auto Catch::Generators::makeGenerators (GeneratorWrapper< T > &&generator) -> Generators< T >
 
template<typename T , typename... Gs>
auto Catch::Generators::makeGenerators (T &&val, Gs &&... moreGenerators) -> Generators< T >
 
template<typename T , typename U , typename... Gs>
auto Catch::Generators::makeGenerators (as< T >, U &&val, Gs &&... moreGenerators) -> Generators< T >
 
auto Catch::Generators::acquireGeneratorTracker (StringRef generatorName, SourceLineInfo const &lineInfo) -> IGeneratorTracker &
 
template<typename L >
auto Catch::Generators::generate (StringRef generatorName, SourceLineInfo const &lineInfo, L const &generatorExpression) -> decltype(std::declval< decltype(generatorExpression())>().get())
 
template<typename T >
GeneratorWrapper< T > Catch::Generators::take (size_t target, GeneratorWrapper< T > &&generator)
 
template<typename T , typename Predicate >
GeneratorWrapper< T > Catch::Generators::filter (Predicate &&pred, GeneratorWrapper< T > &&generator)
 
template<typename T >
GeneratorWrapper< T > Catch::Generators::repeat (size_t repeats, GeneratorWrapper< T > &&generator)
 
template<typename Func , typename U , typename T = FunctionReturnType<Func, U>>
GeneratorWrapper< T > Catch::Generators::map (Func &&function, GeneratorWrapper< U > &&generator)
 
template<typename T >
GeneratorWrapper< std::vector< T > > Catch::Generators::chunk (size_t size, GeneratorWrapper< T > &&generator)
 
IMutableContext & Catch::getCurrentMutableContext ()
 
IContext & Catch::getCurrentContext ()
 
void Catch::cleanUpContext ()
 
SimplePcg32 & Catch::rng ()
 
template<typename T >
std::enable_if< std::is_integral< T >::value &&!std::is_same< T, bool >::value, GeneratorWrapper< T > >::type Catch::Generators::random (T a, T b)
 
template<typename T >
std::enable_if< std::is_floating_point< T >::value, GeneratorWrapper< T > >::type Catch::Generators::random (T a, T b)
 
template<typename T >
GeneratorWrapper< T > Catch::Generators::range (T const &start, T const &end, T const &step)
 
template<typename T >
GeneratorWrapper< T > Catch::Generators::range (T const &start, T const &end)
 
template<typename InputIterator , typename InputSentinel , typename ResultType = typename std::iterator_traits<InputIterator>::value_type>
GeneratorWrapper< ResultType > Catch::Generators::from_range (InputIterator from, InputSentinel to)
 
template<typename Container , typename ResultType = typename Container::value_type>
GeneratorWrapper< ResultType > Catch::Generators::from_range (Container const &cnt)
 
TestCase Catch::makeTestCase (ITestInvoker *testCase, std::string const &className, NameAndTags const &nameAndTags, SourceLineInfo const &lineInfo)
 

Variables

const std::string Catch::Detail::unprintableString
 

Class Documentation

◆ Catch_global_namespace_dummy

struct Catch_global_namespace_dummy

Definition at line 481 of file catch.hpp.

Collaboration diagram for Catch_global_namespace_dummy:
Collaboration graph

◆ Catch::AssertionInfo

struct Catch::AssertionInfo

Definition at line 1396 of file catch.hpp.

Collaboration diagram for Catch::AssertionInfo:
Collaboration graph
Class Members
StringRef capturedExpression
SourceLineInfo lineInfo
StringRef macroName
Flags resultDisposition

◆ Catch::detail::void_type

struct Catch::detail::void_type

template<typename...>
struct Catch::detail::void_type<... >

Definition at line 1993 of file catch.hpp.

Collaboration diagram for Catch::detail::void_type<... >:
Collaboration graph
Class Members
typedef void type

◆ Catch::TestFailureException

struct Catch::TestFailureException

Definition at line 2521 of file catch.hpp.

Collaboration diagram for Catch::TestFailureException:
Collaboration graph

◆ Catch::AssertionReaction

struct Catch::AssertionReaction

Definition at line 2543 of file catch.hpp.

Collaboration diagram for Catch::AssertionReaction:
Collaboration graph
Class Members
bool shouldDebugBreak
bool shouldThrow

◆ Catch::SectionEndInfo

struct Catch::SectionEndInfo

Definition at line 2876 of file catch.hpp.

Collaboration diagram for Catch::SectionEndInfo:
Collaboration graph
Class Members
double durationInSeconds
Counts prevAssertions
SectionInfo sectionInfo

◆ Catch::Generators::as

struct Catch::Generators::as

template<typename T>
struct Catch::Generators::as< T >

Definition at line 4060 of file catch.hpp.

Collaboration diagram for Catch::Generators::as< T >:
Collaboration graph

Macro Definition Documentation

◆ AND_GIVEN

#define AND_GIVEN (   desc)    INTERNAL_CATCH_DYNAMIC_SECTION( "And given: " << desc )

Definition at line 17764 of file catch.hpp.

◆ AND_THEN

#define AND_THEN (   desc)    INTERNAL_CATCH_DYNAMIC_SECTION( " And: " << desc )

Definition at line 17768 of file catch.hpp.

◆ AND_WHEN

#define AND_WHEN (   desc)    INTERNAL_CATCH_DYNAMIC_SECTION( " And when: " << desc )

Definition at line 17766 of file catch.hpp.

◆ ANON_TEST_CASE

#define ANON_TEST_CASE ( )    INTERNAL_CATCH_TESTCASE()

Definition at line 17721 of file catch.hpp.

◆ CAPTURE

#define CAPTURE (   ...)    INTERNAL_CATCH_CAPTURE( INTERNAL_CATCH_UNIQUE_NAME(capturer), "CAPTURE",__VA_ARGS__ )

Definition at line 17710 of file catch.hpp.

◆ CATCH_CATCH_ALL

#define CATCH_CATCH_ALL   if ((false))

Definition at line 455 of file catch.hpp.

◆ CATCH_CATCH_ANON

#define CATCH_CATCH_ANON (   type)    if ((false))

Definition at line 456 of file catch.hpp.

◆ CATCH_CONFIG_COUNTER

#define CATCH_CONFIG_COUNTER

Definition at line 354 of file catch.hpp.

◆ CATCH_CONFIG_CPP11_TO_STRING

#define CATCH_CONFIG_CPP11_TO_STRING

Definition at line 369 of file catch.hpp.

◆ CATCH_CONFIG_DISABLE_EXCEPTIONS

#define CATCH_CONFIG_DISABLE_EXCEPTIONS

Definition at line 397 of file catch.hpp.

◆ CATCH_CONFIG_GLOBAL_NEXTAFTER

#define CATCH_CONFIG_GLOBAL_NEXTAFTER

Definition at line 413 of file catch.hpp.

◆ CATCH_CONFIG_POSIX_SIGNALS

#define CATCH_CONFIG_POSIX_SIGNALS

Definition at line 361 of file catch.hpp.

◆ CATCH_CONFIG_WCHAR

#define CATCH_CONFIG_WCHAR

Definition at line 365 of file catch.hpp.

◆ CATCH_DEFER

#define CATCH_DEFER (   id)    id CATCH_EMPTY()

Definition at line 713 of file catch.hpp.

◆ CATCH_EMPTY

#define CATCH_EMPTY ( )

Definition at line 712 of file catch.hpp.

◆ CATCH_ENFORCE

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

Definition at line 3906 of file catch.hpp.

◆ CATCH_ERROR

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

Definition at line 3900 of file catch.hpp.

◆ CATCH_INTERNAL_CONFIG_COUNTER

#define CATCH_INTERNAL_CONFIG_COUNTER

Definition at line 298 of file catch.hpp.

◆ CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER

#define CATCH_INTERNAL_CONFIG_GLOBAL_NEXTAFTER

Definition at line 313 of file catch.hpp.

◆ CATCH_INTERNAL_CONFIG_POSIX_SIGNALS

#define CATCH_INTERNAL_CONFIG_POSIX_SIGNALS

Definition at line 189 of file catch.hpp.

◆ CATCH_INTERNAL_ERROR

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

Definition at line 3897 of file catch.hpp.

◆ CATCH_INTERNAL_IGNORE_BUT_WARN

#define CATCH_INTERNAL_IGNORE_BUT_WARN (   ...)

Definition at line 440 of file catch.hpp.

◆ CATCH_INTERNAL_LINEINFO

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

Definition at line 543 of file catch.hpp.

◆ CATCH_INTERNAL_START_WARNINGS_SUPPRESSION

#define CATCH_INTERNAL_START_WARNINGS_SUPPRESSION

Definition at line 419 of file catch.hpp.

◆ CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

#define CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION

Definition at line 422 of file catch.hpp.

◆ CATCH_INTERNAL_STRINGIFY

#define CATCH_INTERNAL_STRINGIFY (   ...)    #__VA_ARGS__

Definition at line 2680 of file catch.hpp.

◆ CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS

#define CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS

Definition at line 428 of file catch.hpp.

◆ CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS

#define CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS

Definition at line 425 of file catch.hpp.

◆ CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS

#define CATCH_INTERNAL_SUPPRESS_UNUSED_TEMPLATE_WARNINGS

Definition at line 450 of file catch.hpp.

◆ CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS

#define CATCH_INTERNAL_SUPPRESS_UNUSED_WARNINGS

Definition at line 431 of file catch.hpp.

◆ CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS

#define CATCH_INTERNAL_SUPPRESS_ZERO_VARIADIC_WARNINGS

Definition at line 434 of file catch.hpp.

◆ CATCH_MAKE_MSG

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

Definition at line 3894 of file catch.hpp.

◆ CATCH_REC_END

#define CATCH_REC_END (   ...)

Definition at line 709 of file catch.hpp.

◆ CATCH_REC_GET_END

#define CATCH_REC_GET_END (   ...)    CATCH_REC_GET_END1

Definition at line 717 of file catch.hpp.

◆ CATCH_REC_GET_END1

#define CATCH_REC_GET_END1 (   ...)    CATCH_REC_GET_END2

Definition at line 716 of file catch.hpp.

◆ CATCH_REC_GET_END2

#define CATCH_REC_GET_END2 ( )    0, CATCH_REC_END

Definition at line 715 of file catch.hpp.

◆ CATCH_REC_LIST

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

Definition at line 735 of file catch.hpp.

◆ CATCH_REC_LIST0

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

Definition at line 722 of file catch.hpp.

◆ CATCH_REC_LIST0_UD

#define 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__ )

Definition at line 726 of file catch.hpp.

◆ CATCH_REC_LIST1

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

Definition at line 723 of file catch.hpp.

◆ CATCH_REC_LIST1_UD

#define 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__ )

Definition at line 727 of file catch.hpp.

◆ CATCH_REC_LIST2

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

Definition at line 724 of file catch.hpp.

◆ CATCH_REC_LIST2_UD

#define 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__ )

Definition at line 728 of file catch.hpp.

◆ CATCH_REC_LIST_UD

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

Definition at line 733 of file catch.hpp.

◆ CATCH_REC_NEXT

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

Definition at line 720 of file catch.hpp.

◆ CATCH_REC_NEXT0

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

Definition at line 718 of file catch.hpp.

◆ CATCH_REC_NEXT1

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

Definition at line 719 of file catch.hpp.

◆ CATCH_REC_OUT

#define CATCH_REC_OUT

Definition at line 710 of file catch.hpp.

◆ CATCH_RECURSE

#define CATCH_RECURSE (   ...)    CATCH_RECURSION_LEVEL5(__VA_ARGS__)

Definition at line 706 of file catch.hpp.

◆ CATCH_RECURSION_LEVEL0

#define CATCH_RECURSION_LEVEL0 (   ...)    __VA_ARGS__

Definition at line 693 of file catch.hpp.

◆ CATCH_RECURSION_LEVEL1

#define CATCH_RECURSION_LEVEL1 (   ...)    CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(CATCH_RECURSION_LEVEL0(__VA_ARGS__)))

Definition at line 694 of file catch.hpp.

◆ CATCH_RECURSION_LEVEL2

#define CATCH_RECURSION_LEVEL2 (   ...)    CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(CATCH_RECURSION_LEVEL1(__VA_ARGS__)))

Definition at line 695 of file catch.hpp.

◆ CATCH_RECURSION_LEVEL3

#define CATCH_RECURSION_LEVEL3 (   ...)    CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(CATCH_RECURSION_LEVEL2(__VA_ARGS__)))

Definition at line 696 of file catch.hpp.

◆ CATCH_RECURSION_LEVEL4

#define CATCH_RECURSION_LEVEL4 (   ...)    CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(CATCH_RECURSION_LEVEL3(__VA_ARGS__)))

Definition at line 697 of file catch.hpp.

◆ CATCH_RECURSION_LEVEL5

#define CATCH_RECURSION_LEVEL5 (   ...)    CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(CATCH_RECURSION_LEVEL4(__VA_ARGS__)))

Definition at line 698 of file catch.hpp.

◆ CATCH_REGISTER_ENUM

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

Definition at line 2182 of file catch.hpp.

◆ CATCH_REGISTER_TAG_ALIAS

#define CATCH_REGISTER_TAG_ALIAS (   alias,
  spec 
)
Value:
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
#define CATCH_INTERNAL_LINEINFO
Definition: catch.hpp:543
#define INTERNAL_CATCH_UNIQUE_NAME(name)
Definition: catch.hpp:471

Definition at line 555 of file catch.hpp.

◆ CATCH_RUNTIME_ERROR

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

Definition at line 3903 of file catch.hpp.

◆ CATCH_TRANSLATE_EXCEPTION

#define CATCH_TRANSLATE_EXCEPTION (   signature)    INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature )

Definition at line 17757 of file catch.hpp.

◆ CATCH_TRY

#define CATCH_TRY   if ((true))

Definition at line 454 of file catch.hpp.

◆ CATCH_VERSION_MAJOR

#define CATCH_VERSION_MAJOR   2

Definition at line 16 of file catch.hpp.

◆ CATCH_VERSION_MINOR

#define CATCH_VERSION_MINOR   13

Definition at line 17 of file catch.hpp.

◆ CATCH_VERSION_PATCH

#define CATCH_VERSION_PATCH   10

Definition at line 18 of file catch.hpp.

◆ CHECK

#define CHECK (   ...)    INTERNAL_CATCH_TEST( "CHECK", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )

Definition at line 17687 of file catch.hpp.

◆ CHECK_FALSE

#define CHECK_FALSE (   ...)    INTERNAL_CATCH_TEST( "CHECK_FALSE", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, __VA_ARGS__ )

Definition at line 17688 of file catch.hpp.

◆ CHECK_NOFAIL

#define CHECK_NOFAIL (   ...)    INTERNAL_CATCH_TEST( "CHECK_NOFAIL", Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, __VA_ARGS__ )

Definition at line 17691 of file catch.hpp.

◆ CHECK_NOTHROW

#define CHECK_NOTHROW (   ...)    INTERNAL_CATCH_NO_THROW( "CHECK_NOTHROW", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )

Definition at line 17699 of file catch.hpp.

◆ CHECK_THAT

#define CHECK_THAT (   arg,
  matcher 
)    INTERNAL_CHECK_THAT( "CHECK_THAT", matcher, Catch::ResultDisposition::ContinueOnFailure, arg )

Definition at line 17702 of file catch.hpp.

◆ CHECK_THROWS

#define CHECK_THROWS (   ...)    INTERNAL_CATCH_THROWS( "CHECK_THROWS", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )

Definition at line 17693 of file catch.hpp.

◆ CHECK_THROWS_AS

#define CHECK_THROWS_AS (   expr,
  exceptionType 
)    INTERNAL_CATCH_THROWS_AS( "CHECK_THROWS_AS", exceptionType, Catch::ResultDisposition::ContinueOnFailure, expr )

Definition at line 17694 of file catch.hpp.

◆ CHECK_THROWS_MATCHES

#define CHECK_THROWS_MATCHES (   expr,
  exceptionType,
  matcher 
)    INTERNAL_CATCH_THROWS_MATCHES( "CHECK_THROWS_MATCHES", exceptionType, Catch::ResultDisposition::ContinueOnFailure, matcher, expr )

Definition at line 17697 of file catch.hpp.

◆ CHECK_THROWS_WITH

#define CHECK_THROWS_WITH (   expr,
  matcher 
)    INTERNAL_CATCH_THROWS_STR_MATCHES( "CHECK_THROWS_WITH", Catch::ResultDisposition::ContinueOnFailure, matcher, expr )

Definition at line 17695 of file catch.hpp.

◆ CHECKED_ELSE

#define CHECKED_ELSE (   ...)    INTERNAL_CATCH_ELSE( "CHECKED_ELSE", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )

Definition at line 17690 of file catch.hpp.

◆ CHECKED_IF

#define CHECKED_IF (   ...)    INTERNAL_CATCH_IF( "CHECKED_IF", Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )

Definition at line 17689 of file catch.hpp.

◆ DYNAMIC_SECTION

#define DYNAMIC_SECTION (   ...)    INTERNAL_CATCH_DYNAMIC_SECTION( __VA_ARGS__ )

Definition at line 17717 of file catch.hpp.

◆ FAIL

#define FAIL (   ...)    INTERNAL_CATCH_MSG( "FAIL", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, __VA_ARGS__ )

Definition at line 17718 of file catch.hpp.

◆ FAIL_CHECK

#define FAIL_CHECK (   ...)    INTERNAL_CATCH_MSG( "FAIL_CHECK", Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )

Definition at line 17719 of file catch.hpp.

◆ GENERATE

#define GENERATE (   ...)
Value:
[ ]{ using namespace Catch::Generators; return makeGenerators( __VA_ARGS__ ); } )
#define INTERNAL_CATCH_STRINGIZE(...)
Definition: catch.hpp:741
auto generate(StringRef generatorName, SourceLineInfo const &lineInfo, L const &generatorExpression) -> decltype(std::declval< decltype(generatorExpression())>().get())
Definition: catch.hpp:4085
auto makeGenerators(GeneratorWrapper< T > &&generator, Gs &&... moreGenerators) -> Generators< T >
Definition: catch.hpp:4063

Definition at line 4100 of file catch.hpp.

◆ GENERATE_COPY

#define GENERATE_COPY (   ...)
Value:

Definition at line 4104 of file catch.hpp.

◆ GENERATE_REF

#define GENERATE_REF (   ...)
Value:

Definition at line 4108 of file catch.hpp.

◆ GIVEN

#define GIVEN (   desc)    INTERNAL_CATCH_DYNAMIC_SECTION( " Given: " << desc )

Definition at line 17763 of file catch.hpp.

◆ INFO

#define INFO (   msg)    INTERNAL_CATCH_INFO( "INFO", msg )

Definition at line 17707 of file catch.hpp.

◆ INTERNAL_CATCH_CAPTURE

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

Definition at line 2786 of file catch.hpp.

◆ INTERNAL_CATCH_CATCH

#define INTERNAL_CATCH_CATCH (   capturer)

Definition at line 2691 of file catch.hpp.

◆ INTERNAL_CATCH_DECLARE_SIG_TEST

◆ INTERNAL_CATCH_DECLARE_SIG_TEST0

#define INTERNAL_CATCH_DECLARE_SIG_TEST0 (   TestName)

Definition at line 830 of file catch.hpp.

◆ INTERNAL_CATCH_DECLARE_SIG_TEST1

#define INTERNAL_CATCH_DECLARE_SIG_TEST1 (   TestName,
  signature 
)
Value:
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
static void TestName()

Definition at line 831 of file catch.hpp.

◆ INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD

◆ INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD0

#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD0 (   TestName,
  ClassName 
)

Definition at line 874 of file catch.hpp.

◆ INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD1

#define INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD1 (   TestName,
  ClassName,
  signature 
)
Value:
template<typename TestType> \
struct TestName : INTERNAL_CATCH_REMOVE_PARENS(ClassName)<TestType> { \
void test();\
}
#define INTERNAL_CATCH_REMOVE_PARENS(...)
Definition: catch.hpp:755

Definition at line 875 of file catch.hpp.

◆ INTERNAL_CATCH_DECLARE_SIG_TEST_METHOD_X

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

Definition at line 881 of file catch.hpp.

◆ INTERNAL_CATCH_DECLARE_SIG_TEST_X

#define INTERNAL_CATCH_DECLARE_SIG_TEST_X (   TestName,
  signature,
  ... 
)
Value:
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
static void TestName()

Definition at line 834 of file catch.hpp.

◆ INTERNAL_CATCH_DEF

#define INTERNAL_CATCH_DEF (   ...)    INTERNAL_CATCH_DEF __VA_ARGS__

Definition at line 739 of file catch.hpp.

◆ INTERNAL_CATCH_DEFINE_SIG_TEST

◆ INTERNAL_CATCH_DEFINE_SIG_TEST0

#define INTERNAL_CATCH_DEFINE_SIG_TEST0 (   TestName)

Definition at line 838 of file catch.hpp.

◆ INTERNAL_CATCH_DEFINE_SIG_TEST1

#define INTERNAL_CATCH_DEFINE_SIG_TEST1 (   TestName,
  signature 
)
Value:
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
static void TestName()

Definition at line 839 of file catch.hpp.

◆ INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD

◆ INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD0

#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD0 (   TestName)

Definition at line 887 of file catch.hpp.

◆ INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD1

#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD1 (   TestName,
  signature 
)
Value:
template<typename TestType> \
void INTERNAL_CATCH_MAKE_NAMESPACE(TestName)::TestName<TestType>::test()
#define INTERNAL_CATCH_MAKE_NAMESPACE(name)
Definition: catch.hpp:753

Definition at line 888 of file catch.hpp.

◆ INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD_X

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

Definition at line 891 of file catch.hpp.

◆ INTERNAL_CATCH_DEFINE_SIG_TEST_X

#define INTERNAL_CATCH_DEFINE_SIG_TEST_X (   TestName,
  signature,
  ... 
)
Value:
template<INTERNAL_CATCH_REMOVE_PARENS(signature)>\
static void TestName()

Definition at line 842 of file catch.hpp.

◆ INTERNAL_CATCH_DYNAMIC_SECTION

#define INTERNAL_CATCH_DYNAMIC_SECTION (   ...)

◆ INTERNAL_CATCH_ELSE

#define INTERNAL_CATCH_ELSE (   macroName,
  resultDisposition,
  ... 
)
Value:
INTERNAL_CATCH_TEST( macroName, resultDisposition, __VA_ARGS__ ); \
if( !Catch::getResultCapture().lastAssertionPassed() )
#define INTERNAL_CATCH_TEST(macroName, resultDisposition,...)
Definition: catch.hpp:2703
IResultCapture & getResultCapture()

Definition at line 2722 of file catch.hpp.

◆ INTERNAL_CATCH_EXPAND1

#define INTERNAL_CATCH_EXPAND1 (   param)    INTERNAL_CATCH_EXPAND2(param)

Definition at line 737 of file catch.hpp.

◆ INTERNAL_CATCH_EXPAND2

#define INTERNAL_CATCH_EXPAND2 (   ...)    INTERNAL_CATCH_NO## __VA_ARGS__

Definition at line 738 of file catch.hpp.

◆ INTERNAL_CATCH_IF

#define INTERNAL_CATCH_IF (   macroName,
  resultDisposition,
  ... 
)
Value:
INTERNAL_CATCH_TEST( macroName, resultDisposition, __VA_ARGS__ ); \
if( Catch::getResultCapture().lastAssertionPassed() )

Definition at line 2717 of file catch.hpp.

◆ INTERNAL_CATCH_INFO

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

Definition at line 2791 of file catch.hpp.

◆ INTERNAL_CATCH_MAKE_NAMESPACE

#define INTERNAL_CATCH_MAKE_NAMESPACE (   name)    INTERNAL_CATCH_MAKE_NAMESPACE2(name)

Definition at line 753 of file catch.hpp.

◆ INTERNAL_CATCH_MAKE_NAMESPACE2

#define INTERNAL_CATCH_MAKE_NAMESPACE2 (   ...)    ns_##__VA_ARGS__

Definition at line 752 of file catch.hpp.

◆ INTERNAL_CATCH_MAKE_TYPE_LIST

#define INTERNAL_CATCH_MAKE_TYPE_LIST (   ...)    INTERNAL_CATCH_MAKE_TYPE_LIST2(INTERNAL_CATCH_REMOVE_PARENS(__VA_ARGS__))

Definition at line 759 of file catch.hpp.

◆ INTERNAL_CATCH_MAKE_TYPE_LIST2

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

Definition at line 758 of file catch.hpp.

◆ INTERNAL_CATCH_MAKE_TYPE_LISTS_FROM_TYPES

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

Definition at line 765 of file catch.hpp.

◆ INTERNAL_CATCH_METHOD_AS_TEST_CASE

#define INTERNAL_CATCH_METHOD_AS_TEST_CASE (   QualifiedMethod,
  ... 
)
Value:
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
auto makeTestInvoker(void(*testAsFunction)()) noexcept -> ITestInvoker *

Definition at line 1058 of file catch.hpp.

◆ INTERNAL_CATCH_MSG

#define INTERNAL_CATCH_MSG (   macroName,
  messageType,
  resultDisposition,
  ... 
)
Value:
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 )

Definition at line 2778 of file catch.hpp.

◆ INTERNAL_CATCH_NO_THROW

#define INTERNAL_CATCH_NO_THROW (   macroName,
  resultDisposition,
  ... 
)
Value:
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 )
#define CATCH_INTERNAL_STRINGIFY(...)
Definition: catch.hpp:2680

Definition at line 2727 of file catch.hpp.

◆ INTERNAL_CATCH_NOINTERNAL_CATCH_DEF

#define INTERNAL_CATCH_NOINTERNAL_CATCH_DEF

Definition at line 740 of file catch.hpp.

◆ INTERNAL_CATCH_NTTP_0

#define INTERNAL_CATCH_NTTP_0

Definition at line 896 of file catch.hpp.

◆ INTERNAL_CATCH_NTTP_1

#define INTERNAL_CATCH_NTTP_1 (   signature,
  ... 
)
Value:
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; };

Definition at line 815 of file catch.hpp.

◆ INTERNAL_CATCH_NTTP_GEN

#define 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)

Definition at line 897 of file catch.hpp.

◆ INTERNAL_CATCH_NTTP_REG_GEN

◆ INTERNAL_CATCH_NTTP_REG_METHOD_GEN

◆ INTERNAL_CATCH_NTTP_REGISTER

#define INTERNAL_CATCH_NTTP_REGISTER (   TestFunc,
  signature,
  ... 
)
Value:
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);\
}

Definition at line 853 of file catch.hpp.

◆ INTERNAL_CATCH_NTTP_REGISTER0

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

Definition at line 846 of file catch.hpp.

◆ INTERNAL_CATCH_NTTP_REGISTER_METHOD

#define INTERNAL_CATCH_NTTP_REGISTER_METHOD (   TestName,
  signature,
  ... 
)
Value:
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);\
}

Definition at line 867 of file catch.hpp.

◆ INTERNAL_CATCH_NTTP_REGISTER_METHOD0

#define INTERNAL_CATCH_NTTP_REGISTER_METHOD0 (   TestName,
  signature,
  ... 
)
Value:
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);\
}

Definition at line 860 of file catch.hpp.

◆ INTERNAL_CATCH_REACT

#define INTERNAL_CATCH_REACT (   handler)    handler.complete();

Definition at line 2700 of file catch.hpp.

◆ INTERNAL_CATCH_REGISTER_ENUM

#define INTERNAL_CATCH_REGISTER_ENUM (   enumName,
  ... 
)
Value:
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 ) )); \
} \
}; \
}
GeneratorWrapper< T > value(T &&value)
Definition: catch.hpp:4001
Definition: catch.hpp:98
IMutableRegistryHub & getMutableRegistryHub()
virtual Detail::EnumInfo const & registerEnum(StringRef enumName, StringRef allEnums, std::vector< int > const &values)=0
virtual IMutableEnumValuesRegistry & getMutableEnumValuesRegistry()=0
static std::enable_if<::Catch::Detail::IsStreamInsertable< Fake >::value, std::string >::type convert(const Fake &value)
Definition: catch.hpp:1619

Definition at line 2172 of file catch.hpp.

◆ INTERNAL_CATCH_REGISTER_TESTCASE

#define INTERNAL_CATCH_REGISTER_TESTCASE (   Function,
  ... 
)
Value:
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

Definition at line 1080 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS

#define INTERNAL_CATCH_REMOVE_PARENS (   ...)    INTERNAL_CATCH_EXPAND1(INTERNAL_CATCH_DEF __VA_ARGS__)

Definition at line 755 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_10_ARG

#define 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)

Definition at line 777 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_11_ARG

#define 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)

Definition at line 778 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_1_ARG

#define INTERNAL_CATCH_REMOVE_PARENS_1_ARG (   _0)    INTERNAL_CATCH_REMOVE_PARENS(_0)

Definition at line 768 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_2_ARG

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

Definition at line 769 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_3_ARG

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

Definition at line 770 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_4_ARG

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

Definition at line 771 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_5_ARG

#define 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)

Definition at line 772 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_6_ARG

#define 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)

Definition at line 773 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_7_ARG

#define 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)

Definition at line 774 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_8_ARG

#define 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)

Definition at line 775 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_9_ARG

#define 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)

Definition at line 776 of file catch.hpp.

◆ INTERNAL_CATCH_REMOVE_PARENS_GEN

◆ INTERNAL_CATCH_SECTION

#define INTERNAL_CATCH_SECTION (   ...)
Value:

Definition at line 2930 of file catch.hpp.

◆ INTERNAL_CATCH_STRINGIZE

#define INTERNAL_CATCH_STRINGIZE (   ...)    INTERNAL_CATCH_STRINGIZE2(__VA_ARGS__)

Definition at line 741 of file catch.hpp.

◆ INTERNAL_CATCH_STRINGIZE2

#define INTERNAL_CATCH_STRINGIZE2 (   ...)    #__VA_ARGS__

Definition at line 743 of file catch.hpp.

◆ INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS

#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS (   param)    INTERNAL_CATCH_STRINGIZE(INTERNAL_CATCH_REMOVE_PARENS(param))

Definition at line 744 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE

#define 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 )

Definition at line 1208 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2

#define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_2 (   TestName,
  TestFunc,
  Name,
  Tags,
  TmplList 
)
Value:
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()

Definition at line 1181 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD

#define 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 )

Definition at line 1338 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2

#define INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD_2 (   TestNameClass,
  TestName,
  ClassName,
  Name,
  Tags,
  TmplList 
)
Value:
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()

Definition at line 1308 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE

#define 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__)

Definition at line 1166 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE2

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

Definition at line 1132 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD

#define 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__ )

Definition at line 1293 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_2

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

Definition at line 1256 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG

#define 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__ )

Definition at line 1301 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG

#define 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__)

Definition at line 1174 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_TEST_CASE

#define 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__ )

Definition at line 1117 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_TEST_CASE_2

#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_2 (   TestName,
  TestFunc,
  Name,
  Tags,
  Signature,
  ... 
)
Value:
namespace {\
namespace INTERNAL_CATCH_MAKE_NAMESPACE(TestName){\
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;\
}();\
}\
}\
#define INTERNAL_CATCH_DECLARE_SIG_TEST(TestName,...)
Definition: catch.hpp:903
#define CATCH_REC_LIST(f,...)
Definition: catch.hpp:735
#define INTERNAL_CATCH_NTTP_GEN(...)
Definition: catch.hpp:897
#define INTERNAL_CATCH_DEFINE_SIG_TEST(TestName,...)
Definition: catch.hpp:902
#define INTERNAL_CATCH_STRINGIZE_WITHOUT_PARENS(param)
Definition: catch.hpp:744

Definition at line 1087 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD

#define 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__ )

Definition at line 1241 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2

#define INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_2 (   TestNameClass,
  TestName,
  ClassName,
  Name,
  Tags,
  Signature,
  ... 
)
Value:
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_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;\
}();\
}\
}\
#define INTERNAL_CATCH_DEFINE_SIG_TEST_METHOD(TestName,...)
Definition: catch.hpp:898

Definition at line 1211 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG

#define 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__ )

Definition at line 1249 of file catch.hpp.

◆ INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG

#define 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__ )

Definition at line 1125 of file catch.hpp.

◆ INTERNAL_CATCH_TEST

#define INTERNAL_CATCH_TEST (   macroName,
  resultDisposition,
  ... 
)
Value:
do { \
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__) ) )
#define INTERNAL_CATCH_CATCH(capturer)
Definition: catch.hpp:2691

Definition at line 2703 of file catch.hpp.

◆ INTERNAL_CATCH_TEST_CASE_METHOD

#define 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__ )

Definition at line 1076 of file catch.hpp.

◆ INTERNAL_CATCH_TEST_CASE_METHOD2

#define INTERNAL_CATCH_TEST_CASE_METHOD2 (   TestName,
  ClassName,
  ... 
)
Value:
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()

Definition at line 1065 of file catch.hpp.

◆ INTERNAL_CATCH_TESTCASE

#define INTERNAL_CATCH_TESTCASE (   ...)     INTERNAL_CATCH_TESTCASE2( INTERNAL_CATCH_UNIQUE_NAME( C_A_T_C_H_T_E_S_T_ ), __VA_ARGS__ )

Definition at line 1054 of file catch.hpp.

◆ INTERNAL_CATCH_TESTCASE2

#define INTERNAL_CATCH_TESTCASE2 (   TestName,
  ... 
)
Value:
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()

Definition at line 1047 of file catch.hpp.

◆ INTERNAL_CATCH_THROWS

#define INTERNAL_CATCH_THROWS (   macroName,
  resultDisposition,
  ... 
)
Value:
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 )

Definition at line 2741 of file catch.hpp.

◆ INTERNAL_CATCH_THROWS_AS

#define INTERNAL_CATCH_THROWS_AS (   macroName,
  exceptionType,
  resultDisposition,
  expr 
)
Value:
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 )

Definition at line 2758 of file catch.hpp.

◆ INTERNAL_CATCH_THROWS_MATCHES

#define INTERNAL_CATCH_THROWS_MATCHES (   macroName,
  exceptionType,
  resultDisposition,
  matcher,
  ... 
)
Value:
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 )
auto makeMatchExpr(ArgT const &arg, MatcherT const &matcher, StringRef const &matcherString) -> MatchExpr< ArgT, MatcherT >
Definition: catch.hpp:3797

Definition at line 3814 of file catch.hpp.

◆ INTERNAL_CATCH_THROWS_STR_MATCHES

#define INTERNAL_CATCH_THROWS_STR_MATCHES (   macroName,
  resultDisposition,
  matcher,
  ... 
)
Value:
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 )
void handleExceptionMatchExpr(AssertionHandler &handler, StringMatcher const &matcher, StringRef const &matcherString)

Definition at line 2800 of file catch.hpp.

◆ INTERNAL_CATCH_TRANSLATE_EXCEPTION

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

Definition at line 3068 of file catch.hpp.

◆ INTERNAL_CATCH_TRANSLATE_EXCEPTION2

#define INTERNAL_CATCH_TRANSLATE_EXCEPTION2 (   translatorName,
  signature 
)
Value:
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 )

Definition at line 3060 of file catch.hpp.

◆ INTERNAL_CATCH_TRY

#define INTERNAL_CATCH_TRY

Definition at line 2690 of file catch.hpp.

◆ INTERNAL_CATCH_TYPE_GEN

#define INTERNAL_CATCH_TYPE_GEN

Definition at line 782 of file catch.hpp.

◆ INTERNAL_CATCH_UNIQUE_NAME

#define INTERNAL_CATCH_UNIQUE_NAME (   name)    INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __COUNTER__ )

Definition at line 471 of file catch.hpp.

◆ INTERNAL_CATCH_UNIQUE_NAME_LINE

#define INTERNAL_CATCH_UNIQUE_NAME_LINE (   name,
  line 
)    INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line )

Definition at line 469 of file catch.hpp.

◆ INTERNAL_CATCH_UNIQUE_NAME_LINE2

#define INTERNAL_CATCH_UNIQUE_NAME_LINE2 (   name,
  line 
)    name##line

Definition at line 468 of file catch.hpp.

◆ INTERNAL_CATCH_UNSCOPED_INFO

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

Definition at line 2795 of file catch.hpp.

◆ INTERNAL_CATCH_VA_NARGS_IMPL

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

Definition at line 780 of file catch.hpp.

◆ INTERNAL_CHECK_THAT

#define INTERNAL_CHECK_THAT (   macroName,
  matcher,
  resultDisposition,
  arg 
)
Value:
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 )

Definition at line 3804 of file catch.hpp.

◆ METHOD_AS_TEST_CASE

#define METHOD_AS_TEST_CASE (   method,
  ... 
)    INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ )

Definition at line 17714 of file catch.hpp.

◆ REGISTER_TEST_CASE

#define REGISTER_TEST_CASE (   Function,
  ... 
)    INTERNAL_CATCH_REGISTER_TESTCASE( Function, __VA_ARGS__ )

Definition at line 17715 of file catch.hpp.

◆ REQUIRE

#define REQUIRE (   ...)    INTERNAL_CATCH_TEST( "REQUIRE", Catch::ResultDisposition::Normal, __VA_ARGS__ )

Definition at line 17676 of file catch.hpp.

◆ REQUIRE_FALSE

#define REQUIRE_FALSE (   ...)    INTERNAL_CATCH_TEST( "REQUIRE_FALSE", Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, __VA_ARGS__ )

Definition at line 17677 of file catch.hpp.

◆ REQUIRE_NOTHROW

#define REQUIRE_NOTHROW (   ...)    INTERNAL_CATCH_NO_THROW( "REQUIRE_NOTHROW", Catch::ResultDisposition::Normal, __VA_ARGS__ )

Definition at line 17685 of file catch.hpp.

◆ REQUIRE_THAT

#define REQUIRE_THAT (   arg,
  matcher 
)    INTERNAL_CHECK_THAT( "REQUIRE_THAT", matcher, Catch::ResultDisposition::Normal, arg )

Definition at line 17704 of file catch.hpp.

◆ REQUIRE_THROWS

#define REQUIRE_THROWS (   ...)    INTERNAL_CATCH_THROWS( "REQUIRE_THROWS", Catch::ResultDisposition::Normal, __VA_ARGS__ )

Definition at line 17679 of file catch.hpp.

◆ REQUIRE_THROWS_AS

#define REQUIRE_THROWS_AS (   expr,
  exceptionType 
)    INTERNAL_CATCH_THROWS_AS( "REQUIRE_THROWS_AS", exceptionType, Catch::ResultDisposition::Normal, expr )

Definition at line 17680 of file catch.hpp.

◆ REQUIRE_THROWS_MATCHES

#define REQUIRE_THROWS_MATCHES (   expr,
  exceptionType,
  matcher 
)    INTERNAL_CATCH_THROWS_MATCHES( "REQUIRE_THROWS_MATCHES", exceptionType, Catch::ResultDisposition::Normal, matcher, expr )

Definition at line 17683 of file catch.hpp.

◆ REQUIRE_THROWS_WITH

#define REQUIRE_THROWS_WITH (   expr,
  matcher 
)    INTERNAL_CATCH_THROWS_STR_MATCHES( "REQUIRE_THROWS_WITH", Catch::ResultDisposition::Normal, matcher, expr )

Definition at line 17681 of file catch.hpp.

◆ SCENARIO

#define SCENARIO (   ...)    TEST_CASE( "Scenario: " __VA_ARGS__ )

Definition at line 17760 of file catch.hpp.

◆ SCENARIO_METHOD

#define SCENARIO_METHOD (   className,
  ... 
)    INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ )

Definition at line 17761 of file catch.hpp.

◆ SECTION

#define SECTION (   ...)    INTERNAL_CATCH_SECTION( __VA_ARGS__ )

Definition at line 17716 of file catch.hpp.

◆ STATIC_REQUIRE

#define STATIC_REQUIRE (   ...)    static_assert( __VA_ARGS__, #__VA_ARGS__ ); SUCCEED( #__VA_ARGS__ )

Definition at line 17748 of file catch.hpp.

◆ STATIC_REQUIRE_FALSE

#define STATIC_REQUIRE_FALSE (   ...)    static_assert( !(__VA_ARGS__), "!(" #__VA_ARGS__ ")" ); SUCCEED( "!(" #__VA_ARGS__ ")" )

Definition at line 17749 of file catch.hpp.

◆ SUCCEED

#define SUCCEED (   ...)    INTERNAL_CATCH_MSG( "SUCCEED", Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, __VA_ARGS__ )

Definition at line 17720 of file catch.hpp.

◆ TEMPLATE_LIST_TEST_CASE

#define TEMPLATE_LIST_TEST_CASE (   ...)    INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE(__VA_ARGS__)

Definition at line 17732 of file catch.hpp.

◆ TEMPLATE_LIST_TEST_CASE_METHOD

#define TEMPLATE_LIST_TEST_CASE_METHOD (   className,
  ... 
)    INTERNAL_CATCH_TEMPLATE_LIST_TEST_CASE_METHOD( className, __VA_ARGS__ )

Definition at line 17733 of file catch.hpp.

◆ TEMPLATE_PRODUCT_TEST_CASE

#define TEMPLATE_PRODUCT_TEST_CASE (   ...)    INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE( __VA_ARGS__ )

Definition at line 17728 of file catch.hpp.

◆ TEMPLATE_PRODUCT_TEST_CASE_METHOD

#define TEMPLATE_PRODUCT_TEST_CASE_METHOD (   className,
  ... 
)    INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD( className, __VA_ARGS__ )

Definition at line 17730 of file catch.hpp.

◆ TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG

#define TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG (   className,
  ... 
)    INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ )

Definition at line 17731 of file catch.hpp.

◆ TEMPLATE_PRODUCT_TEST_CASE_SIG

#define TEMPLATE_PRODUCT_TEST_CASE_SIG (   ...)    INTERNAL_CATCH_TEMPLATE_PRODUCT_TEST_CASE_SIG( __VA_ARGS__ )

Definition at line 17729 of file catch.hpp.

◆ TEMPLATE_TEST_CASE

#define TEMPLATE_TEST_CASE (   ...)    INTERNAL_CATCH_TEMPLATE_TEST_CASE( __VA_ARGS__ )

Definition at line 17724 of file catch.hpp.

◆ TEMPLATE_TEST_CASE_METHOD

#define TEMPLATE_TEST_CASE_METHOD (   className,
  ... 
)    INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD( className, __VA_ARGS__ )

Definition at line 17726 of file catch.hpp.

◆ TEMPLATE_TEST_CASE_METHOD_SIG

#define TEMPLATE_TEST_CASE_METHOD_SIG (   className,
  ... 
)    INTERNAL_CATCH_TEMPLATE_TEST_CASE_METHOD_SIG( className, __VA_ARGS__ )

Definition at line 17727 of file catch.hpp.

◆ TEMPLATE_TEST_CASE_SIG

#define TEMPLATE_TEST_CASE_SIG (   ...)    INTERNAL_CATCH_TEMPLATE_TEST_CASE_SIG( __VA_ARGS__ )

Definition at line 17725 of file catch.hpp.

◆ TEST_CASE

#define TEST_CASE (   ...)    INTERNAL_CATCH_TESTCASE( __VA_ARGS__ )

Definition at line 17712 of file catch.hpp.

◆ TEST_CASE_METHOD

#define TEST_CASE_METHOD (   className,
  ... 
)    INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ )

Definition at line 17713 of file catch.hpp.

◆ THEN

#define THEN (   desc)    INTERNAL_CATCH_DYNAMIC_SECTION( " Then: " << desc )

Definition at line 17767 of file catch.hpp.

◆ UNSCOPED_INFO

#define UNSCOPED_INFO (   msg)    INTERNAL_CATCH_UNSCOPED_INFO( "UNSCOPED_INFO", msg )

Definition at line 17708 of file catch.hpp.

◆ WARN

#define WARN (   msg)    INTERNAL_CATCH_MSG( "WARN", Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, msg )

Definition at line 17709 of file catch.hpp.

◆ WHEN

#define WHEN (   desc)    INTERNAL_CATCH_DYNAMIC_SECTION( " When: " << desc )

Definition at line 17765 of file catch.hpp.

Function Documentation

◆ operator""_catch_sr()

constexpr auto operator""_catch_sr ( char const *  rawChars,
std::size_t  size 
) -> Catch::StringRef
constexprnoexcept

Definition at line 685 of file catch.hpp.

◆ operator<<()

std::ostream& operator<< ( std::ostream &  ,
Catch_global_namespace_dummy   
)