From 68ae1ada4590d9fbebdc9692a98198b5f4d76e11 Mon Sep 17 00:00:00 2001 From: mat007 Date: Thu, 7 Mar 2013 07:16:52 +0000 Subject: [PATCH] Added variadic macro support for MOCK_BASE_CLASS and MOCK_FUNCTOR git-svn-id: https://svn.code.sf.net/p/turtle/code/trunk@599 860be788-9bd5-4423-9f1e-828f051e677b --- test/test_mock.cpp | 5 +++++ turtle/mock.hpp | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/test/test_mock.cpp b/test/test_mock.cpp index a62c0cb..b04ee2a 100644 --- a/test/test_mock.cpp +++ b/test/test_mock.cpp @@ -315,6 +315,9 @@ namespace MOCK_STATIC_METHOD( m9, 0, void(), m9 ) }; + MOCK_BASE_CLASS( comma_base, std::map< int, int > ) + {}; + template< typename T > MOCK_CLASS( variadic_tpl ) { @@ -330,6 +333,8 @@ namespace MOCK_FUNCTION( fun1, 0, void() ) MOCK_FUNCTION( fun2, 0, void(), fun2 ) + + MOCK_FUNCTOR( f_variadic, std::map< int, int >() ); } #endif //BOOST_NO_VARIADIC_MACROS diff --git a/turtle/mock.hpp b/turtle/mock.hpp index d582e78..f8d0a8a 100644 --- a/turtle/mock.hpp +++ b/turtle/mock.hpp @@ -23,13 +23,25 @@ #include #include -#define MOCK_BASE_CLASS(T, I) \ - struct T : I, mock::object, mock::detail::base< I > #define MOCK_CLASS(T) \ struct T : mock::object + +#ifdef BOOST_NO_VARIADIC_MACROS + +#define MOCK_BASE_CLASS(T, I) \ + struct T : I, mock::object, mock::detail::base< I > #define MOCK_FUNCTOR(f, S) \ mock::detail::functor< S > f, f##_mock +#else // BOOST_NO_VARIADIC_MACROS + +#define MOCK_BASE_CLASS(T, ...) \ + struct T : __VA_ARGS__, mock::object, mock::detail::base< __VA_ARGS__ > +#define MOCK_FUNCTOR(f, ...) \ + mock::detail::functor< __VA_ARGS__ > f, f##_mock + +#endif // BOOST_NO_VARIADIC_MACROS + #define MOCK_HELPER(t) \ t##_mock( mock::detail::root, BOOST_PP_STRINGIZE(t) ) #define MOCK_ANONYMOUS_HELPER(t) \