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 #ifndef MOCKPP_ABSTRACTEXPECTATION_H
00032 #define MOCKPP_ABSTRACTEXPECTATION_H
00033
00034 #include <mockpp/mockpp.h>
00035
00036 #include <mockpp/Expectation.h>
00037 #include <mockpp/compat/Asserter.h>
00038 #include <mockpp/compat/Formatter.h>
00039
00040
00041 MOCKPP_NS_START
00042
00043
00044 class VerifiableList;
00045
00048 template <class T>
00049 class AbstractExpectation : public Expectation
00050 {
00051 public:
00052
00057 AbstractExpectation(const String &name, VerifiableList *parent)
00058 : Expectation(name, parent)
00059 {
00060 clearFailOnVerify();
00061 clearHasExpectations();
00062 }
00063
00064
00069 bool hasExpectations() const
00070 {
00071 return myHasExpectations;
00072 }
00073
00074
00079 void setFailOnVerify()
00080 {
00081 myFailureModeIsImmediate = false;
00082 }
00083
00084
00088 void clearFailOnVerify()
00089 {
00090 myFailureModeIsImmediate = true;
00091 }
00092
00093
00097 virtual void clearActual() = 0;
00098
00099
00104 virtual void verify() = 0;
00105
00106 protected:
00107
00114 void assertEquals(
00115 const String &message,
00116 const T &expectedValue,
00117 const T &actualValue) const
00118 {
00119 if (!hasExpectations() )
00120 return;
00121
00122 if (expectedValue == actualValue)
00123 return;
00124
00125 if (message.length() == 0)
00126 {
00127 String fmt = mockpp_i18n(MOCKPP_PCHAR("%1 assertion failed.\nExpected: %2\nReceived: %3"));
00128 fmt << getVerifiableName() << expectedValue << actualValue;
00129 MOCKPP_FAIL(fmt);
00130 }
00131 else
00132 MOCKPP_FAIL(message);
00133 }
00134
00135
00141 bool shouldCheckImmediately() const
00142 {
00143 return myFailureModeIsImmediate && myHasExpectations;
00144 }
00145
00146
00154 void setHasExpectations()
00155 {
00156 myHasExpectations = true;
00157 }
00158
00161 void clearHasExpectations()
00162 {
00163 myHasExpectations = false;
00164 }
00165
00166 private:
00167
00168 bool myFailureModeIsImmediate;
00169 bool myHasExpectations;
00170 };
00171
00172
00173 MOCKPP_NS_END
00174
00175
00176 #endif // MOCKPP_ABSTRACTEXPECTATION_H