CppUTest
MockFunctionCall.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_MockFunctionCall_h
29 #define D_MockFunctionCall_h
30 
31 /*
32  * MockFunctionCall is the main interface for recording and actualizing mock calls.
33  *
34  */
37 
38 #include "CppUTestExt/MockNamedValue.h"
39 
41 {
42 public:
44  virtual ~MockFunctionCall();
45 
46  virtual MockFunctionCall& withName(const SimpleString& name)=0;
47  virtual MockFunctionCall& withCallOrder(int)=0;
48  virtual MockFunctionCall& withParameter(const SimpleString& name, int value)=0;
49  virtual MockFunctionCall& withParameter(const SimpleString& name, double value)=0;
50  virtual MockFunctionCall& withParameter(const SimpleString& name, const char* value)=0;
51  virtual MockFunctionCall& withParameter(const SimpleString& name, void* value)=0;
52  virtual MockFunctionCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, void* value)=0;
53  virtual MockFunctionCall& ignoreOtherParameters() { return *this;}
54 
55  virtual MockFunctionCall& andReturnValue(int value)=0;
56  virtual MockFunctionCall& andReturnValue(double value)=0;
57  virtual MockFunctionCall& andReturnValue(const char* value)=0;
58  virtual MockFunctionCall& andReturnValue(void* value)=0;
59  virtual bool hasReturnValue()=0;
60  virtual MockNamedValue returnValue()=0;
61 
62  virtual MockFunctionCall& onObject(void* objectPtr)=0;
63 
64  virtual void setComparatorRepository(MockNamedValueComparatorRepository* repository);
65 
66 protected:
67  void setName(const SimpleString& name);
68  SimpleString getName() const;
69  MockNamedValueComparator* getComparatorForType(const SimpleString& type) const;
70 private:
71  SimpleString functionName_;
72  MockNamedValueComparatorRepository* comparatorRepository_;
73 };
74 
77 {
78 public:
80  virtual ~MockFunctionCallComposite();
81 
82  virtual MockFunctionCall& withName(const SimpleString&);
83  virtual MockFunctionCall& withCallOrder(int);
84  virtual MockFunctionCall& withParameter(const SimpleString&, int);
85  virtual MockFunctionCall& withParameter(const SimpleString&, double);
86  virtual MockFunctionCall& withParameter(const SimpleString&, const char*);
87  virtual MockFunctionCall& withParameter(const SimpleString& , void*);
88  virtual MockFunctionCall& withParameterOfType(const SimpleString&, const SimpleString&, void*);
89  virtual MockFunctionCall& ignoreOtherParameters();
90 
91  virtual MockFunctionCall& andReturnValue(int);
92  virtual MockFunctionCall& andReturnValue(double);
93  virtual MockFunctionCall& andReturnValue(const char*);
94  virtual MockFunctionCall& andReturnValue(void*);
95  virtual bool hasReturnValue();
96  virtual MockNamedValue returnValue();
97 
98  virtual MockFunctionCall& onObject(void* );
99 
100  virtual void add(MockFunctionCall& call);
101  virtual void clear();
102 private:
104 };
105 
107 {
108 public:
109  virtual MockFunctionCall& withName(const SimpleString&) { return *this;}
110  virtual MockFunctionCall& withCallOrder(int) { return *this; }
111  virtual MockFunctionCall& withParameter(const SimpleString&, int) { return *this; }
112  virtual MockFunctionCall& withParameter(const SimpleString&, double) { return *this; }
113  virtual MockFunctionCall& withParameter(const SimpleString&, const char*) { return *this; }
114  virtual MockFunctionCall& withParameter(const SimpleString& , void*) { return *this; }
115  virtual MockFunctionCall& withParameterOfType(const SimpleString&, const SimpleString&, void*) { return *this; }
116 
117  virtual MockFunctionCall& andReturnValue(int) { return *this; }
118  virtual MockFunctionCall& andReturnValue(double) { return *this;}
119  virtual MockFunctionCall& andReturnValue(const char*) { return *this; }
120  virtual MockFunctionCall& andReturnValue(void*) { return *this; }
121  virtual bool hasReturnValue() { return false; }
122  virtual MockNamedValue returnValue() { return MockNamedValue(""); }
123 
124  virtual MockFunctionCall& onObject(void* ) { return *this; }
125 
126  static MockFunctionCall& instance() { static MockIgnoredCall call; return call; }
127 };
128 
130 {
131 public:
133  virtual ~MockFunctionCallTrace();
134 
135  virtual MockFunctionCall& withName(const SimpleString& name);
136  virtual MockFunctionCall& withCallOrder(int);
137  virtual MockFunctionCall& withParameter(const SimpleString& name, int value);
138  virtual MockFunctionCall& withParameter(const SimpleString& name, double value);
139  virtual MockFunctionCall& withParameter(const SimpleString& name, const char* value);
140  virtual MockFunctionCall& withParameter(const SimpleString& name, void* value);
141  virtual MockFunctionCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, void* value);
142  virtual MockFunctionCall& ignoreOtherParameters();
143 
144  virtual MockFunctionCall& andReturnValue(int value);
145  virtual MockFunctionCall& andReturnValue(double value);
146  virtual MockFunctionCall& andReturnValue(const char* value);
147  virtual MockFunctionCall& andReturnValue(void* value);
148  virtual bool hasReturnValue();
149  virtual MockNamedValue returnValue();
150 
151  virtual MockFunctionCall& onObject(void* objectPtr);
152 
153  const char* getTraceOutput();
154  void clear();
155  static MockFunctionCallTrace& instance();
156 
157 private:
158  SimpleString traceBuffer_;
159 };
160 
161 #endif
Definition: SimpleString.h:46
Definition: MockFunctionCall.h:129
Definition: MockNamedValue.h:35
Definition: MockFunctionCall.cpp:62
Definition: MockNamedValue.h:149
Definition: MockFunctionCall.h:76
Definition: MockFunctionCall.h:40
Definition: MockNamedValue.h:69
Definition: MockFunctionCall.h:106