00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef MOCKPP_ReturnAndCallStub_H
00031 #define MOCKPP_ReturnAndCallStub_H
00032
00033 #include <mockpp/mockpp.h>
00034
00035 #include <mockpp/compat/Formatter.h>
00036
00037 #include <mockpp/stub/TypelessStub.h>
00038
00039
00040 MOCKPP_NS_START
00041
00042
00047 template < typename R
00048 , typename F
00049 >
00050 class ReturnAndCallStub : public TypelessStub<R>
00051 {
00052 public:
00053
00058 ReturnAndCallStub( const R &in_result
00059 , F in_functor
00060 )
00061 : result(in_result)
00062 , functor(in_functor)
00063 {}
00064
00069 virtual R typelessInvoke()
00070 {
00071 functor();
00072 return result;
00073 }
00074
00079 virtual String describeTo( String &buffer ) const
00080 {
00081 String fmt;
00082 fmt += MOCKPP_PCHAR("calls functor\n");
00083 fmt += MOCKPP_PCHAR("returns <%1>");
00084 fmt << result;
00085 buffer += fmt;
00086
00087 return buffer;
00088 }
00089
00090 private:
00091
00092 R result;
00093 F functor;
00094 };
00095
00096
00097 MOCKPP_NS_END
00098
00099 #endif // MOCKPP_ReturnAndCallStub_H
00100
00101