NetBurner 3.1
MockCheckedActualCall.h
1 /*
2  * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of the <organization> nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 #ifndef D_MockCheckedActualCall_h
29 #define D_MockCheckedActualCall_h
30 
31 #include "CppUTestExt/MockActualCall.h"
32 #include "CppUTestExt/MockExpectedCallsList.h"
33 
34 class MockCheckedActualCall : public MockActualCall
35 {
36 public:
37  MockCheckedActualCall(unsigned int callOrder, MockFailureReporter* reporter, const MockExpectedCallsList& expectations);
38  virtual ~MockCheckedActualCall();
39 
40  virtual MockActualCall& withName(const SimpleString& name) _override;
41  virtual MockActualCall& withCallOrder(unsigned int) _override;
42  virtual MockActualCall& withBoolParameter(const SimpleString& name, bool value) _override;
43  virtual MockActualCall& withIntParameter(const SimpleString& name, int value) _override;
44  virtual MockActualCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override;
45  virtual MockActualCall& withLongIntParameter(const SimpleString& name, long int value) _override;
46  virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override;
47  virtual MockActualCall& withDoubleParameter(const SimpleString& name, double value) _override;
48  virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value) _override;
49  virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value) _override;
50  virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value) _override;
51  virtual MockActualCall& withFunctionPointerParameter(const SimpleString& name, void (*value)()) _override;
52  virtual MockActualCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override;
53  virtual MockActualCall& withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value) _override;
54  virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output) _override;
55  virtual MockActualCall& withOutputParameterOfType(const SimpleString& type, const SimpleString& name, void* output) _override;
56 
57  virtual bool hasReturnValue() _override;
58  virtual MockNamedValue returnValue() _override;
59 
60  virtual bool returnBoolValueOrDefault(bool default_value) _override;
61  virtual bool returnBoolValue() _override;
62 
63  virtual int returnIntValueOrDefault(int default_value) _override;
64  virtual int returnIntValue() _override;
65 
66  virtual unsigned long int returnUnsignedLongIntValue() _override;
67  virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int) _override;
68 
69  virtual long int returnLongIntValue() _override;
70  virtual long int returnLongIntValueOrDefault(long int default_value) _override;
71 
72  virtual unsigned int returnUnsignedIntValue() _override;
73  virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int default_value) _override;
74 
75  virtual const char * returnStringValueOrDefault(const char * default_value) _override;
76  virtual const char * returnStringValue() _override;
77 
78  virtual double returnDoubleValue() _override;
79  virtual double returnDoubleValueOrDefault(double default_value) _override;
80 
81  virtual const void * returnConstPointerValue() _override;
82  virtual const void * returnConstPointerValueOrDefault(const void * default_value) _override;
83 
84  virtual void * returnPointerValue() _override;
85  virtual void * returnPointerValueOrDefault(void *) _override;
86 
87  virtual void (*returnFunctionPointerValue())() _override;
88  virtual void (*returnFunctionPointerValueOrDefault(void (*)()))() _override;
89 
90  virtual MockActualCall& onObject(const void* objectPtr) _override;
91 
92  virtual bool isFulfilled() const;
93  virtual bool hasFailed() const;
94 
95  virtual void checkExpectations();
96 
97  virtual void setMockFailureReporter(MockFailureReporter* reporter);
98 protected:
99  void setName(const SimpleString& name);
100  SimpleString getName() const;
101  virtual UtestShell* getTest() const;
102  virtual void callHasSucceeded();
103  virtual void copyOutputParameters(MockCheckedExpectedCall* call);
104  virtual void completeCallWhenMatchIsFound();
105  virtual void failTest(const MockFailure& failure);
106  virtual void checkInputParameter(const MockNamedValue& actualParameter);
107  virtual void checkOutputParameter(const MockNamedValue& outputParameter);
108  virtual void callIsInProgress();
109 
110  enum ActualCallState {
111  CALL_IN_PROGRESS,
112  CALL_FAILED,
113  CALL_SUCCEED
114  };
115  virtual void setState(ActualCallState state);
116 
117 private:
118  SimpleString functionName_;
119  unsigned int callOrder_;
120  MockFailureReporter* reporter_;
121 
122  ActualCallState state_;
123  MockCheckedExpectedCall* matchingExpectation_;
124 
125  MockExpectedCallsList potentiallyMatchingExpectations_;
126  const MockExpectedCallsList& allExpectations_;
127 
128  class MockOutputParametersListNode
129  {
130  public:
131  SimpleString name_;
132  SimpleString type_;
133  void* ptr_;
134 
135  MockOutputParametersListNode* next_;
136  MockOutputParametersListNode(const SimpleString& name, const SimpleString& type, void* ptr)
137  : name_(name), type_(type), ptr_(ptr), next_(NULL) {}
138  };
139 
140  MockOutputParametersListNode* outputParameterExpectations_;
141 
142  virtual void addOutputParameter(const SimpleString& name, const SimpleString& type, void* ptr);
143  virtual void cleanUpOutputParameterList();
144 };
145 
146 class MockActualCallTrace : public MockActualCall
147 {
148 public:
149  MockActualCallTrace();
150  virtual ~MockActualCallTrace();
151 
152  virtual MockActualCall& withName(const SimpleString& name) _override;
153  virtual MockActualCall& withCallOrder(unsigned int) _override;
154  virtual MockActualCall& withBoolParameter(const SimpleString& name, bool value) _override;
155  virtual MockActualCall& withIntParameter(const SimpleString& name, int value) _override;
156  virtual MockActualCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override;
157  virtual MockActualCall& withLongIntParameter(const SimpleString& name, long int value) _override;
158  virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override;
159  virtual MockActualCall& withDoubleParameter(const SimpleString& name, double value) _override;
160  virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value) _override;
161  virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value) _override;
162  virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value) _override;
163  virtual MockActualCall& withFunctionPointerParameter(const SimpleString& name, void (*value)()) _override;
164  virtual MockActualCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override;
165  virtual MockActualCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override;
166  virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output) _override;
167  virtual MockActualCall& withOutputParameterOfType(const SimpleString& typeName, const SimpleString& name, void* output) _override;
168 
169  virtual bool hasReturnValue() _override;
170  virtual MockNamedValue returnValue() _override;
171 
172  virtual bool returnBoolValueOrDefault(bool default_value) _override;
173  virtual bool returnBoolValue() _override;
174 
175  virtual int returnIntValueOrDefault(int default_value) _override;
176  virtual int returnIntValue() _override;
177 
178  virtual unsigned long int returnUnsignedLongIntValue() _override;
179  virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int) _override;
180 
181  virtual long int returnLongIntValue() _override;
182  virtual long int returnLongIntValueOrDefault(long int default_value) _override;
183 
184  virtual unsigned int returnUnsignedIntValue() _override;
185  virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int default_value) _override;
186 
187  virtual const char * returnStringValueOrDefault(const char * default_value) _override;
188  virtual const char * returnStringValue() _override;
189 
190  virtual double returnDoubleValue() _override;
191  virtual double returnDoubleValueOrDefault(double default_value) _override;
192 
193  virtual void * returnPointerValue() _override;
194  virtual void * returnPointerValueOrDefault(void *) _override;
195 
196  virtual const void * returnConstPointerValue() _override;
197  virtual const void * returnConstPointerValueOrDefault(const void * default_value) _override;
198 
199  virtual void (*returnFunctionPointerValue())() _override;
200  virtual void (*returnFunctionPointerValueOrDefault(void (*)()))() _override;
201 
202  virtual MockActualCall& onObject(const void* objectPtr) _override;
203 
204  const char* getTraceOutput();
205  void clear();
206  static MockActualCallTrace& instance();
207 
208 private:
209  SimpleString traceBuffer_;
210 
211  void addParameterName(const SimpleString& name);
212 };
213 
214 class MockIgnoredActualCall: public MockActualCall
215 {
216 public:
217  virtual MockActualCall& withName(const SimpleString&) _override { return *this;}
218  virtual MockActualCall& withCallOrder(unsigned int) _override { return *this; }
219  virtual MockActualCall& withBoolParameter(const SimpleString&, bool) _override { return *this; }
220  virtual MockActualCall& withIntParameter(const SimpleString&, int) _override { return *this; }
221  virtual MockActualCall& withUnsignedIntParameter(const SimpleString&, unsigned int) _override { return *this; }
222  virtual MockActualCall& withLongIntParameter(const SimpleString&, long int) _override { return *this; }
223  virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString&, unsigned long int) _override { return *this; }
224  virtual MockActualCall& withDoubleParameter(const SimpleString&, double) _override { return *this; }
225  virtual MockActualCall& withStringParameter(const SimpleString&, const char*) _override { return *this; }
226  virtual MockActualCall& withPointerParameter(const SimpleString& , void*) _override { return *this; }
227  virtual MockActualCall& withConstPointerParameter(const SimpleString& , const void*) _override { return *this; }
228  virtual MockActualCall& withFunctionPointerParameter(const SimpleString& , void (*)()) _override { return *this; }
229  virtual MockActualCall& withMemoryBufferParameter(const SimpleString&, const unsigned char*, size_t) _override { return *this; }
230  virtual MockActualCall& withParameterOfType(const SimpleString&, const SimpleString&, const void*) _override { return *this; }
231  virtual MockActualCall& withOutputParameter(const SimpleString&, void*) _override { return *this; }
232  virtual MockActualCall& withOutputParameterOfType(const SimpleString&, const SimpleString&, void*) _override { return *this; }
233 
234  virtual bool hasReturnValue() _override { return false; }
235  virtual MockNamedValue returnValue() _override { return MockNamedValue(""); }
236 
237  virtual bool returnBoolValueOrDefault(bool) _override { return false; }
238  virtual bool returnBoolValue() _override { return false; }
239 
240  virtual int returnIntValue() _override { return 0; }
241  virtual int returnIntValueOrDefault(int value) _override { return value; }
242 
243  virtual unsigned long int returnUnsignedLongIntValue() _override { return 0; }
244  virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int value) _override { return value; }
245 
246  virtual long int returnLongIntValue() _override { return 0; }
247  virtual long int returnLongIntValueOrDefault(long int value) _override { return value; }
248 
249  virtual unsigned int returnUnsignedIntValue() _override { return 0; }
250  virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int value) _override { return value; }
251 
252  virtual double returnDoubleValue() _override { return 0.0; }
253  virtual double returnDoubleValueOrDefault(double value) _override { return value; }
254 
255  virtual const char * returnStringValue() _override { return ""; }
256  virtual const char * returnStringValueOrDefault(const char * value) _override { return value; }
257 
258  virtual void * returnPointerValue() _override { return NULL; }
259  virtual void * returnPointerValueOrDefault(void * value) _override { return value; }
260 
261  virtual const void * returnConstPointerValue() _override { return NULL; }
262  virtual const void * returnConstPointerValueOrDefault(const void * value) _override { return value; }
263 
264  virtual void (*returnFunctionPointerValue())() _override { return NULL; }
265  virtual void (*returnFunctionPointerValueOrDefault(void (*value)()))() _override { return value; }
266 
267  virtual MockActualCall& onObject(const void* ) _override { return *this; }
268 
269  static MockIgnoredActualCall& instance();
270 };
271 
272 #endif
#define NULL
Definition: nm_bsp.h:76