mirror of
https://github.com/mat007/turtle.git
synced 2026-06-22 12:13:43 +00:00
noexcept and override support for MOCK_METHOD (issue #48)
This commit is contained in:
parent
e92f52821d
commit
817dabc15e
4 changed files with 356 additions and 16 deletions
|
|
@ -120,6 +120,83 @@
|
|||
MOCK_METHOD_AUX(M, n, S, t,, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
|
||||
#define MOCK_OVERRIDE_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, override, typename) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const override, typename) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
#define MOCK_CONST_OVERRIDE_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const override, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
#define MOCK_NON_CONST_OVERRIDE_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, override, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
|
||||
#define MOCK_OVERRIDE_METHOD_EXT(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, override,) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const override,) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
#define MOCK_CONST_OVERRIDE_METHOD_EXT(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const override,) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
#define MOCK_NON_CONST_OVERRIDE_METHOD_EXT(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, override,) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
|
||||
#define MOCK_OVERRIDE_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, override, typename) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const override, typename) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
#define MOCK_CONST_OVERRIDE_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const override, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
#define MOCK_NON_CONST_OVERRIDE_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, override, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
|
||||
#define MOCK_NOEXCEPT_OVERRIDE_METHOD_EXT(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, noexcept override,) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const noexcept override,) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
#define MOCK_CONST_NOEXCEPT_OVERRIDE_METHOD_EXT(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const noexcept override,) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
#define MOCK_NON_CONST_NOEXCEPT_OVERRIDE_METHOD_EXT(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, noexcept override,) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
|
||||
#define MOCK_NOEXCEPT_OVERRIDE_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, noexcept override, typename) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const noexcept override, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
#define MOCK_CONST_NOEXCEPT_OVERRIDE_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const noexcept override, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
#define MOCK_NON_CONST_NOEXCEPT_OVERRIDE_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, noexcept override, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
|
||||
#define MOCK_NOEXCEPT_METHOD_EXT(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, noexcept,) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const noexcept,) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
#define MOCK_CONST_NOEXCEPT_METHOD_EXT(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const noexcept,) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
#define MOCK_NON_CONST_NOEXCEPT_METHOD_EXT(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, noexcept,) \
|
||||
MOCK_METHOD_HELPER(S, t,)
|
||||
|
||||
#define MOCK_NOEXCEPT_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, noexcept, typename) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const noexcept, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
#define MOCK_CONST_NOEXCEPT_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, const noexcept, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
#define MOCK_NON_CONST_NOEXCEPT_METHOD_EXT_TPL(M, n, S, t) \
|
||||
MOCK_METHOD_AUX(M, n, S, t, noexcept, typename) \
|
||||
MOCK_METHOD_HELPER(S, t, typename)
|
||||
|
||||
#define MOCK_CONVERSION_OPERATOR(M, T, t) \
|
||||
M T() const { return MOCK_ANONYMOUS_HELPER(t)(); } \
|
||||
M T() { return MOCK_ANONYMOUS_HELPER(t)(); } \
|
||||
|
|
@ -177,6 +254,15 @@
|
|||
return MOCK_HELPER(t)( MOCK_FORWARD_PARAMS(n, S, tpn) ); \
|
||||
}
|
||||
|
||||
#define MOCK_FUNCTION_NOEXCEPT_AUX(F, n, S, t, s, tpn) \
|
||||
MOCK_FUNCTION_HELPER(S, t, s, tpn) \
|
||||
s MOCK_DECL(F, n, S, noexcept,tpn) \
|
||||
{ \
|
||||
BOOST_MPL_ASSERT_RELATION( n, ==, \
|
||||
boost::function_types::function_arity< \
|
||||
MOCK_FUNCTION_TYPE((S), tpn) >::value ); \
|
||||
return MOCK_HELPER(t)( MOCK_FORWARD_PARAMS(n, S, tpn) ); \
|
||||
}
|
||||
#ifdef MOCK_VARIADIC_MACROS
|
||||
|
||||
#define MOCK_VARIADIC_ELEM_0(e0, ...) e0
|
||||
|
|
@ -197,6 +283,48 @@
|
|||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
|
||||
#define MOCK_NOEXCEPT_METHOD(M, ...) \
|
||||
MOCK_NOEXCEPT_METHOD_EXT(M, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__ ), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, MOCK_SIGNATURE(M)), \
|
||||
MOCK_VARIADIC_ELEM_2(__VA_ARGS__, M, M))
|
||||
#define MOCK_CONST_NOEXCEPT_METHOD(M, n, ...) \
|
||||
MOCK_CONST_NOEXCEPT_METHOD_EXT(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
#define MOCK_NON_CONST_NOEXCEPT_METHOD(M, n, ...) \
|
||||
MOCK_NON_CONST_NOEXCEPT_METHOD_EXT(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
|
||||
#define MOCK_NOEXCEPT_OVERRIDE_METHOD(M, ...) \
|
||||
MOCK_NOEXCEPT_OVERRIDE_METHOD_EXT(M, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__ ), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, MOCK_SIGNATURE(M)), \
|
||||
MOCK_VARIADIC_ELEM_2(__VA_ARGS__, M, M))
|
||||
#define MOCK_CONST_NOEXCEPT_OVERRIDE_METHOD(M, n, ...) \
|
||||
MOCK_CONST_NOEXCEPT_OVERRIDE_METHOD_EXT(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
#define MOCK_NON_CONST_NOEXCEPT_OVERRIDE_METHOD(M, n, ...) \
|
||||
MOCK_NON_CONST_NOEXCEPT_OVERRIDE_METHOD_EXT(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
|
||||
#define MOCK_OVERRIDE_METHOD(M, ...) \
|
||||
MOCK_OVERRIDE_METHOD_EXT(M, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__ ), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, MOCK_SIGNATURE(M)), \
|
||||
MOCK_VARIADIC_ELEM_2(__VA_ARGS__, M, M))
|
||||
#define MOCK_CONST_OVERRIDE_METHOD(M, n, ...) \
|
||||
MOCK_CONST_OVERRIDE_METHOD_EXT(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
#define MOCK_NON_CONST_OVERRIDE_METHOD(M, n, ...) \
|
||||
MOCK_NON_CONST_OVERRIDE_METHOD_EXT(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
|
||||
#define MOCK_METHOD_TPL(M, n, ...) \
|
||||
MOCK_METHOD_EXT_TPL(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
|
|
@ -210,12 +338,60 @@
|
|||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
|
||||
#define MOCK_NOEXCEPT_METHOD_TPL(M, ...) \
|
||||
MOCK_NOEXCEPT_METHOD_EXT_TPL(M, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__ ), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, MOCK_SIGNATURE(M)), \
|
||||
MOCK_VARIADIC_ELEM_2(__VA_ARGS__, M, M))
|
||||
#define MOCK_CONST_NOEXCEPT_METHOD_TPL(M, n, ...) \
|
||||
MOCK_CONST_NOEXCEPT_METHOD_EXT_TPL(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
#define MOCK_NON_CONST_NOEXCEPT_METHOD_TPL(M, n, ...) \
|
||||
MOCK_NON_CONST_NOEXCEPT_METHOD_EXT_TPL(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
|
||||
#define MOCK_NOEXCEPT_OVERRIDE_METHOD_TPL(M, ...) \
|
||||
MOCK_NOEXCEPT_OVERRIDE_METHOD_EXT_TPL(M, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__ ), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, MOCK_SIGNATURE(M)), \
|
||||
MOCK_VARIADIC_ELEM_2(__VA_ARGS__, M, M))
|
||||
#define MOCK_CONST_NOEXCEPT_OVERRIDE_METHOD_TPL(M, n, ...) \
|
||||
MOCK_CONST_NOEXCEPT_OVERRIDE_METHOD_EXT_TPL(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
#define MOCK_NON_CONST_NOEXCEPT_OVERRIDE_METHOD_TPL(M, n, ...) \
|
||||
MOCK_NON_CONST_NOEXCEPT_OVERRIDE_METHOD_EXT_TPL(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
|
||||
#define MOCK_OVERRIDE_METHOD_TPL(M, ...) \
|
||||
MOCK_OVERRIDE_METHOD_EXT_TPL(M, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__ ), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, MOCK_SIGNATURE(M)), \
|
||||
MOCK_VARIADIC_ELEM_2(__VA_ARGS__, M, M))
|
||||
#define MOCK_CONST_OVERRIDE_METHOD_TPL(M, n, ...) \
|
||||
MOCK_CONST_OVERRIDE_METHOD_EXT_TPL(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
#define MOCK_NON_CONST_OVERRIDE_METHOD_TPL(M, n, ...) \
|
||||
MOCK_NON_CONST_OVERRIDE_METHOD_EXT_TPL(M, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, M))
|
||||
|
||||
#define MOCK_FUNCTION(F, n, ...) \
|
||||
MOCK_FUNCTION_AUX(F, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, F), \
|
||||
inline,)
|
||||
|
||||
#define MOCK_NOEXCEPT_FUNCTION(F, n, ...) \
|
||||
MOCK_FUNCTION_NOEXCEPT_AUX(F, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, F), \
|
||||
inline,)
|
||||
|
||||
#define MOCK_STATIC_METHOD(F, n, ...) \
|
||||
MOCK_FUNCTION_AUX(F, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
|
|
@ -228,6 +404,17 @@
|
|||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, F), \
|
||||
static, typename)
|
||||
|
||||
#define MOCK_STATIC_NOEXCEPT_METHOD(F, n, ...) \
|
||||
MOCK_FUNCTION_NOEXCEPT_AUX(F, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, F), \
|
||||
static,)
|
||||
|
||||
#define MOCK_STATIC_NOEXCEPT_METHOD_TPL(F, n, ...) \
|
||||
MOCK_FUNCTION_NOEXCEPT_AUX(F, n, \
|
||||
MOCK_VARIADIC_ELEM_0(__VA_ARGS__), \
|
||||
MOCK_VARIADIC_ELEM_1(__VA_ARGS__, F), \
|
||||
static, typename)
|
||||
#else // MOCK_VARIADIC_MACROS
|
||||
|
||||
#define MOCK_METHOD(M, n) \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue