diff --git a/test/test_mock.cpp b/test/test_mock.cpp index 4137a56..237610f 100644 --- a/test/test_mock.cpp +++ b/test/test_mock.cpp @@ -391,3 +391,36 @@ namespace } #endif //MOCK_VARIADIC_MACROS + +namespace +{ + struct base_1 + { + virtual ~base_1() + {} + virtual void f_1() = 0; + }; + struct base_2 + { + virtual ~base_2() + {} + virtual void f_2() = 0; + }; + MOCK_BASE_CLASS( mock_1, base_1 ) + { + MOCK_METHOD( f_1, 0 ) + }; + MOCK_BASE_CLASS( mock_2, base_2 ), mock_1 + { + MOCK_METHOD( f_2, 0 ) + }; +} + +BOOST_AUTO_TEST_CASE( mock_object_can_inherit_from_another_mock_object ) +{ + mock_2 m; + MOCK_EXPECT( m.f_1 ).once(); + //MOCK_EXPECT( m.f_2 ).once(); + //m.f_1(); + //m.f_2(); +} diff --git a/turtle/mock.hpp b/turtle/mock.hpp index f747bf2..f4be66f 100644 --- a/turtle/mock.hpp +++ b/turtle/mock.hpp @@ -33,7 +33,7 @@ #ifdef MOCK_VARIADIC_MACROS #define MOCK_BASE_CLASS(T, ...) \ - struct T : __VA_ARGS__, mock::object, mock::detail::base< __VA_ARGS__ > + struct T : __VA_ARGS__, virtual mock::object, mock::detail::base< __VA_ARGS__ > #define MOCK_FUNCTOR(f, ...) \ mock::detail::functor< MOCK_FUNCTION_TYPE((__VA_ARGS__),) > f, f##_mock @@ -44,7 +44,7 @@ #else // MOCK_VARIADIC_MACROS #define MOCK_BASE_CLASS(T, I) \ - struct T : I, mock::object, mock::detail::base< I > + struct T : I, virtual mock::object, mock::detail::base< I > #define MOCK_FUNCTOR(f, S) \ mock::detail::functor< MOCK_FUNCTION_TYPE(S,) > f, f##_mock