Thread: [Mockpp-commits] mockpp/mockpp/chaining ChainableMockMethod.h,1.1,1.2
Brought to you by:
ewald-arnold
From: Ewald A. <ewa...@us...> - 2005-10-02 18:51:46
|
Update of /cvsroot/mockpp/mockpp/mockpp/chaining In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27415/mockpp/chaining Modified Files: ChainableMockMethod.h Log Message: new files Index: ChainableMockMethod.h =================================================================== RCS file: /cvsroot/mockpp/mockpp/mockpp/chaining/ChainableMockMethod.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- ChainableMockMethod.h 2 Oct 2005 10:56:02 -0000 1.1 +++ ChainableMockMethod.h 2 Oct 2005 18:51:33 -0000 1.2 @@ -39,28 +39,48 @@ namespace mockpp { +template <typename R> +class ChainableMockMethodBase : public MockObject +{ + public: + + /** Constructs the mock object. + * @param name human readable description about the expectation + * @param parent parent chainable mock object + */ + ChainableMockMethodBase(const String &name, ChainableMockObject *parent = 0) + : MockObject(name, parent) + {} + + String getMethodName() const + { +// static CppString method_name = getVerifiableName() + MOCKPP_PCHAR(".") + m_name; + return getVerifiableName(); + } +}; + + template <typename R, typename P1> -class ChainableMockMethod : public MockObject +class ChainableMockMethod1 : public ChainableMockMethodBase<R> { public: - typedef Invocation1<P1> InvocationType; - typedef CoreMock<R, InvocationType> CoreMockType; - typedef R ReturnType; + typedef R ReturnType; + typedef Invocation1<P1> InvocationType; + typedef CoreMock<R, InvocationType> CoreMockType; /** Constructs the mock object. * @param name human readable description about the expectation * @param parent parent chainable mock object */ - ChainableMockMethod(const String &name, ChainableMockObject *parent = 0) - : MockObject(name, parent) - , chainable_parent(parent) + ChainableMockMethod1(const String &name, ChainableMockObject *parent = 0) + : ChainableMockMethodBase<R>(name, parent) , coremock(MOCKPP_PCHAR("CoreMock_in_") + name, this) {} R forward(P1 param1) const { - Invocation1<P1> inv(MOCKPP_PCHAR("name"), param1); + InvocationType inv(MOCKPP_PCHAR("name"), param1); return coremock.invoke(inv); } @@ -69,11 +89,16 @@ return coremock; } - String getMethodName() const + typedef ChainingMockBuilder <ArgumentsMatchBuilder1<ReturnType, InvocationType> > Builder; + + class ChainerFor : public Builder { -// static CppString method_name = getVerifiableName() + MOCKPP_PCHAR(".") + m_name; - return getVerifiableName(); - } + public: + + ChainerFor(ChainableMockObject &obj, ChainableMockMethod1 &method) + : Builder(&method.getCoreMock(), &obj, method.getMethodName()) + {} + }; private: @@ -82,19 +107,49 @@ }; -template <typename CMM> -class ChainerFor - : public ChainingMockBuilder <ArgumentsMatchBuilder1<typename CMM::ReturnType, - typename CMM::InvocationType> > +template <typename R, typename P1, typename P2> +class ChainableMockMethod2 : public ChainableMockMethodBase<R> { public: - typedef ChainingMockBuilder <ArgumentsMatchBuilder1<typename CMM::ReturnType, - typename CMM::InvocationType> > Builder; + typedef R ReturnType; + typedef Invocation2<P1, P2> InvocationType; + typedef CoreMock<R, InvocationType> CoreMockType; - ChainerFor(ChainableMockObject &obj, CMM &method) - : Builder(&method.getCoreMock(), &obj, method.getMethodName()) + /** Constructs the mock object. + * @param name human readable description about the expectation + * @param parent parent chainable mock object + */ + ChainableMockMethod2(const String &name, ChainableMockObject *parent = 0) + : ChainableMockMethodBase<R>(name, parent) + , coremock(MOCKPP_PCHAR("CoreMock_in_") + name, this) {} + + R forward(P1 param1, P2 param2) const + { + InvocationType inv(MOCKPP_PCHAR("name"), param1, param2); + return coremock.invoke(inv); + } + + CoreMockType & getCoreMock() + { + return coremock; + } + + typedef ChainingMockBuilder <ArgumentsMatchBuilder2<ReturnType, InvocationType> > Builder; + + class ChainerFor : public Builder + { + public: + + ChainerFor(ChainableMockObject &obj, ChainableMockMethod2 &method) + : Builder(&method.getCoreMock(), &obj, method.getMethodName()) + {} + }; + + private: + + mutable CoreMockType coremock; }; |