do { \
if( catchAssertionHandler.allowThrows() ) \
try { \
static_cast<void>(__VA_ARGS__ ); \
catchAssertionHandler.handleUnexpectedExceptionNotThrown(); \
} \
catch( exceptionType const& ex ) { \
} \
catch( ... ) { \
catchAssertionHandler.handleUnexpectedInflightException(); \
} \
else \
catchAssertionHandler.handleThrowingCallSkipped(); \
INTERNAL_CATCH_REACT( catchAssertionHandler ) \
} while( false )
#define CATCH_INTERNAL_STRINGIFY(...)
#define CATCH_INTERNAL_LINEINFO
auto makeMatchExpr(ArgT const &arg, MatcherT const &matcher, StringRef const &matcherString) -> MatchExpr< ArgT, MatcherT >
68#define INTERNAL_CATCH_THROWS_MATCHES( macroName, exceptionType, resultDisposition, matcher, ... ) \
69 do { \
70 Catch::AssertionHandler catchAssertionHandler( macroName##_catch_sr, CATCH_INTERNAL_LINEINFO, CATCH_INTERNAL_STRINGIFY(__VA_ARGS__) ", " CATCH_INTERNAL_STRINGIFY(exceptionType) ", " CATCH_INTERNAL_STRINGIFY(matcher), resultDisposition ); \
71 if( catchAssertionHandler.allowThrows() ) \
72 try { \
73 static_cast<void>(__VA_ARGS__ ); \
74 catchAssertionHandler.handleUnexpectedExceptionNotThrown(); \
75 } \
76 catch( exceptionType const& ex ) { \
77 catchAssertionHandler.handleExpr( Catch::makeMatchExpr( ex, matcher, #matcher##_catch_sr ) ); \
78 } \
79 catch( ... ) { \
80 catchAssertionHandler.handleUnexpectedInflightException(); \
81 } \
82 else \
83 catchAssertionHandler.handleThrowingCallSkipped(); \
84 INTERNAL_CATCH_REACT( catchAssertionHandler ) \
85 } while( false )