NetBurner 3.1
MockCheckedExpectedCall.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_MockCheckedExpectedCall_h
29 #define D_MockCheckedExpectedCall_h
30 
31 #include "CppUTestExt/MockExpectedCall.h"
32 #include "CppUTestExt/MockNamedValue.h"
33 
34 class MockCheckedExpectedCall : public MockExpectedCall
35 {
36 
37 public:
38  MockCheckedExpectedCall();
39  virtual ~MockCheckedExpectedCall();
40 
41  virtual MockExpectedCall& withName(const SimpleString& name) _override;
42  virtual MockExpectedCall& withCallOrder(unsigned int callOrder) _override;
43  virtual MockExpectedCall& withBoolParameter(const SimpleString& name, bool value) _override;
44  virtual MockExpectedCall& withIntParameter(const SimpleString& name, int value) _override;
45  virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override;
46  virtual MockExpectedCall& withLongIntParameter(const SimpleString& name, long int value) _override;
47  virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override;
48  virtual MockExpectedCall& withDoubleParameter(const SimpleString& name, double value) _override;
49  virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value) _override;
50  virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value) _override;
51  virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value) _override;
52  virtual MockExpectedCall& withFunctionPointerParameter(const SimpleString& name, void (*value)()) _override;
53  virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override;
54  virtual MockExpectedCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override;
55  virtual MockExpectedCall& withOutputParameterReturning(const SimpleString& name, const void* value, size_t size) _override;
56  virtual MockExpectedCall& withOutputParameterOfTypeReturning(const SimpleString& typeName, const SimpleString& name, const void* value) _override;
57  virtual MockExpectedCall& ignoreOtherParameters() _override;
58 
59  virtual MockExpectedCall& andReturnValue(bool value) _override;
60  virtual MockExpectedCall& andReturnValue(int value) _override;
61  virtual MockExpectedCall& andReturnValue(unsigned int value) _override;
62  virtual MockExpectedCall& andReturnValue(long int value) _override;
63  virtual MockExpectedCall& andReturnValue(unsigned long int value) _override;
64  virtual MockExpectedCall& andReturnValue(double value) _override;
65  virtual MockExpectedCall& andReturnValue(const char* value) _override;
66  virtual MockExpectedCall& andReturnValue(void* value) _override;
67  virtual MockExpectedCall& andReturnValue(const void* value) _override;
68  virtual MockExpectedCall& andReturnValue(void (*value)()) _override;
69 
70  virtual MockNamedValue returnValue();
71 
72  virtual MockExpectedCall& onObject(void* objectPtr) _override;
73 
74  virtual MockNamedValue getInputParameter(const SimpleString& name);
75  virtual MockNamedValue getOutputParameter(const SimpleString& name);
76  virtual SimpleString getInputParameterType(const SimpleString& name);
77  virtual SimpleString getInputParameterValueString(const SimpleString& name);
78 
79  virtual bool hasInputParameterWithName(const SimpleString& name);
80  virtual bool hasInputParameter(const MockNamedValue& parameter);
81  virtual bool hasOutputParameterWithName(const SimpleString& name);
82  virtual bool hasOutputParameter(const MockNamedValue& parameter);
83  virtual bool relatesTo(const SimpleString& functionName);
84  virtual bool relatesToObject(const void* objectPtr) const;
85 
86  virtual bool isFulfilled();
87  virtual bool canMatchActualCalls();
88  virtual bool isMatchingActualCallAndFinalized();
89  virtual bool isMatchingActualCall();
90  virtual bool areParametersMatchingActualCall();
91  virtual bool isOutOfOrder() const;
92 
93  virtual void callWasMade(unsigned int callOrder);
94  virtual void inputParameterWasPassed(const SimpleString& name);
95  virtual void outputParameterWasPassed(const SimpleString& name);
96  virtual void finalizeActualCallMatch();
97  virtual void wasPassedToObject();
98  virtual void resetActualCallMatchingState();
99 
100  virtual SimpleString callToString();
101  virtual SimpleString missingParametersToString();
102 
103  enum { NOT_CALLED_YET = 0, NO_EXPECTED_CALL_ORDER = 0 };
104  virtual unsigned int getCallOrder() const;
105 
106 protected:
107  void setName(const SimpleString& name);
108  SimpleString getName() const;
109 
110 private:
111  SimpleString functionName_;
112 
113  class MockExpectedFunctionParameter : public MockNamedValue
114  {
115  public:
116  MockExpectedFunctionParameter(const SimpleString& name);
117  void setMatchesActualCall(bool b);
118  bool isMatchingActualCall() const;
119 
120  private:
121  bool matchesActualCall_;
122  };
123 
124  MockExpectedFunctionParameter* item(MockNamedValueListNode* node);
125 
126  bool ignoreOtherParameters_;
127  bool isActualCallMatchFinalized_;
128  unsigned int actualCallOrder_;
129  unsigned int expectedCallOrder_;
130  bool outOfOrder_;
131  MockNamedValueList* inputParameters_;
132  MockNamedValueList* outputParameters_;
133  MockNamedValue returnValue_;
134  void* objectPtr_;
135  bool wasPassedToObject_;
136 };
137 
138 struct MockExpectedCallCompositeNode;
139 class MockExpectedCallComposite : public MockExpectedCall
140 {
141 public:
142  MockExpectedCallComposite();
143  virtual ~MockExpectedCallComposite();
144 
145  virtual MockExpectedCall& withName(const SimpleString& name) _override;
146  virtual MockExpectedCall& withCallOrder(unsigned int callOrder) _override;
147  virtual MockExpectedCall& withBoolParameter(const SimpleString& name, bool value) _override;
148  virtual MockExpectedCall& withIntParameter(const SimpleString& name, int value) _override;
149  virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override;
150  virtual MockExpectedCall& withLongIntParameter(const SimpleString& name, long int value) _override;
151  virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override;
152  virtual MockExpectedCall& withDoubleParameter(const SimpleString& name, double value) _override;
153  virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value) _override;
154  virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value) _override;
155  virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value) _override;
156  virtual MockExpectedCall& withFunctionPointerParameter(const SimpleString& name, void (*value)()) _override;
157  virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override;
158  virtual MockExpectedCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override;
159  virtual MockExpectedCall& withOutputParameterReturning(const SimpleString& name, const void* value, size_t size) _override;
160  virtual MockExpectedCall& withOutputParameterOfTypeReturning(const SimpleString& typeName, const SimpleString& name, const void* value) _override;
161  virtual MockExpectedCall& ignoreOtherParameters() _override;
162 
163  virtual MockExpectedCall& andReturnValue(bool value) _override;
164  virtual MockExpectedCall& andReturnValue(int value) _override;
165  virtual MockExpectedCall& andReturnValue(unsigned int value) _override;
166  virtual MockExpectedCall& andReturnValue(long int value) _override;
167  virtual MockExpectedCall& andReturnValue(unsigned long int value) _override;
168  virtual MockExpectedCall& andReturnValue(double value) _override;
169  virtual MockExpectedCall& andReturnValue(const char* value) _override;
170  virtual MockExpectedCall& andReturnValue(void* value) _override;
171  virtual MockExpectedCall& andReturnValue(const void* value) _override;
172  virtual MockExpectedCall& andReturnValue(void (*value)()) _override;
173 
174  virtual MockExpectedCall& onObject(void* objectPtr) _override;
175 
176  virtual void add(MockExpectedCall& call);
177  virtual void clear();
178 private:
179  MockExpectedCallCompositeNode* head_;
180 };
181 
182 class MockIgnoredExpectedCall: public MockExpectedCall
183 {
184 public:
185 
186  virtual MockExpectedCall& withName(const SimpleString&) _override { return *this;}
187  virtual MockExpectedCall& withCallOrder(unsigned int) _override { return *this; }
188  virtual MockExpectedCall& withBoolParameter(const SimpleString&, bool) _override { return *this; }
189  virtual MockExpectedCall& withIntParameter(const SimpleString&, int) _override { return *this; }
190  virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString&, unsigned int) _override{ return *this; }
191  virtual MockExpectedCall& withLongIntParameter(const SimpleString&, long int) _override { return *this; }
192  virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString&, unsigned long int) _override { return *this; }
193  virtual MockExpectedCall& withDoubleParameter(const SimpleString&, double) _override { return *this; }
194  virtual MockExpectedCall& withStringParameter(const SimpleString&, const char*) _override { return *this; }
195  virtual MockExpectedCall& withPointerParameter(const SimpleString& , void*) _override { return *this; }
196  virtual MockExpectedCall& withConstPointerParameter(const SimpleString& , const void*) _override { return *this; }
197  virtual MockExpectedCall& withFunctionPointerParameter(const SimpleString& , void(*)()) _override { return *this; }
198  virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString&, const unsigned char*, size_t) _override { return *this; }
199  virtual MockExpectedCall& withParameterOfType(const SimpleString&, const SimpleString&, const void*) _override { return *this; }
200  virtual MockExpectedCall& withOutputParameterReturning(const SimpleString&, const void*, size_t) _override { return *this; }
201  virtual MockExpectedCall& withOutputParameterOfTypeReturning(const SimpleString&, const SimpleString&, const void*) _override { return *this; }
202  virtual MockExpectedCall& ignoreOtherParameters() _override { return *this;}
203 
204  virtual MockExpectedCall& andReturnValue(bool) _override { return *this; }
205  virtual MockExpectedCall& andReturnValue(int) _override { return *this; }
206  virtual MockExpectedCall& andReturnValue(unsigned int) _override { return *this; }
207  virtual MockExpectedCall& andReturnValue(long int) _override { return *this; }
208  virtual MockExpectedCall& andReturnValue(unsigned long int) _override { return *this; }
209  virtual MockExpectedCall& andReturnValue(double) _override { return *this;}
210  virtual MockExpectedCall& andReturnValue(const char*) _override { return *this; }
211  virtual MockExpectedCall& andReturnValue(void*) _override { return *this; }
212  virtual MockExpectedCall& andReturnValue(const void*) _override { return *this; }
213  virtual MockExpectedCall& andReturnValue(void (*)()) _override { return *this; }
214 
215  virtual MockExpectedCall& onObject(void*) _override { return *this; }
216 
217  static MockExpectedCall& instance();
218 };
219 
220 #endif