#include "precompiled_unittests_core.h" #include #include namespace ITF { class AnyClassMock { public: MOCK_METHOD1(methodInt, void(const int &_param)); MOCK_METHOD1(methodString, void(const String8 &_param)); }; class AnotherClassMock { public: MOCK_METHOD1(methodInt, void(const int &_param)); }; TEST(Delegate, ConcreteInvokation) { testing::StrictMock obj; Delegate delegate1(&obj, &AnyClassMock::methodInt); Delegate delegate2(&obj, &AnyClassMock::methodInt); Delegate delegate3(&obj, &AnyClassMock::methodString); EXPECT_CALL(obj, methodInt(42)).Times(1); EXPECT_CALL(obj, methodInt(12)).Times(1); EXPECT_CALL(obj, methodString(String8("Plop"))).Times(1); delegate1.invokeHandler(42); delegate2.invokeHandler(12); delegate3.invokeHandler("Plop"); } TEST(Delegate, AbstractInvokation) { testing::StrictMock obj1; testing::StrictMock obj2; ITF_VECTOR *> delegates; delegates.push_back(newAlloc(mId_Misc, (Delegate)(&obj1, &AnyClassMock::methodInt))); delegates.push_back(newAlloc(mId_Misc, (Delegate)(&obj2, &AnotherClassMock::methodInt))); EXPECT_CALL(obj1, methodInt(42)).Times(1); EXPECT_CALL(obj2, methodInt(42)).Times(1); ITF_VECTOR *>::iterator it; for (it = delegates.begin(); it != delegates.end(); ++it) { (*it)->invokeHandler(42); delete (*it); } } }