00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef MOCKPP_INVOKEDAFTERMATCHER_H
00035 #define MOCKPP_INVOKEDAFTERMATCHER_H
00036
00037 #include <mockpp/mockpp.h>
00038
00039 #include <mockpp/matcher/StatelessInvocationMatcher.h>
00040 #include <mockpp/matcher/InvokedRecorder.h>
00041
00042
00043 MOCKPP_NS_START
00044
00045
00050 template <typename I>
00051 class InvokedAfterMatcher : public StatelessInvocationMatcher<I>
00052 {
00053 public:
00054
00059 InvokedAfterMatcher( InvokedRecorder *in_priorCallRecorder,
00060 const String &in_priorCallDescription )
00061 : priorCallRecorder(in_priorCallRecorder)
00062 , priorCallDescription(in_priorCallDescription)
00063 {
00064 }
00065
00070 virtual bool matches( const I &invocation )
00071 {
00072 MOCKPP_UNUSED(invocation);
00073 return priorCallRecorder->hasBeenInvoked();
00074 }
00075
00079 virtual void incInvoked( const I &invocation )
00080 {
00081 if (!matches(invocation))
00082 assertionFailed(__LINE__, __FILE__,
00083 MOCKPP_PCHAR("called out of order; should be called after ")
00084 + priorCallDescription);
00085 }
00086
00091 virtual String describeTo( String &buffer ) const
00092 {
00093 buffer += MOCKPP_PCHAR("after ") + priorCallDescription;
00094 if( priorCallRecorder->hasBeenInvoked() )
00095 buffer += MOCKPP_PCHAR(" (invoked)");
00096 else
00097 buffer += MOCKPP_PCHAR(" (not invoked)");
00098
00099 return buffer;
00100 }
00101
00102 private:
00103
00104 InvokedRecorder *priorCallRecorder;
00105 String priorCallDescription;
00106
00107 };
00108
00109
00110 MOCKPP_NS_END
00111
00112
00113 #endif // MOCKPP_INVOKEDAFTERMATCHER_H
00114