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) \