CppUTest
MockSupport_c.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_MockSupport_c_h
29 #define D_MockSupport_c_h
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 typedef enum {
36  MOCKVALUETYPE_INTEGER,
37  MOCKVALUETYPE_DOUBLE,
38  MOCKVALUETYPE_STRING,
39  MOCKVALUETYPE_POINTER,
40  MOCKVALUETYPE_OBJECT
41 } MockValueType_c;
42 
43 typedef struct SMockValue_c
44 {
45  MockValueType_c type;
46  union {
47  int intValue;
48  double doubleValue;
49  const char* stringValue;
50  void* pointerValue;
51  void* objectValue;
52  } value;
53 } MockValue_c;
54 
57 {
58  MockFunctionCall_c* (*withIntParameters)(const char* name, int value);
59  MockFunctionCall_c* (*withDoubleParameters)(const char* name, double value);
60  MockFunctionCall_c* (*withStringParameters)(const char* name, const char* value);
61  MockFunctionCall_c* (*withPointerParameters)(const char* name, void* value);
62  MockFunctionCall_c* (*withParameterOfType)(const char* type, const char* name, void* value);
63 
64  MockFunctionCall_c* (*andReturnIntValue)(int value);
65  MockFunctionCall_c* (*andReturnDoubleValue)(double value);
66  MockFunctionCall_c* (*andReturnStringValue)(const char* value);
67  MockFunctionCall_c* (*andReturnPointerValue)(void* value);
68 
69  MockValue_c (*returnValue)(void);
70 
71 };
72 
73 typedef int (*MockTypeEqualFunction_c)(void* object1, void* object2);
74 typedef char* (*MockTypeValueToStringFunction_c)(void* object1);
75 
76 typedef struct SMockSupport_c MockSupport_c;
78 {
79  MockFunctionCall_c* (*expectOneCall)(const char* name);
80  MockFunctionCall_c* (*actualCall)(const char* name);
81  MockValue_c (*returnValue)(void);
82 
83  void (*enable)(void);
84  void (*disable)(void);
85 
86  void (*setIntData) (const char* name, int value);
87  void (*setDoubleData) (const char* name, double value);
88  void (*setStringData) (const char* name, const char* value);
89  void (*setPointerData) (const char* name, void* value);
90  void (*setDataObject) (const char* name, const char* type, void* value);
91  MockValue_c (*getData)(const char* name);
92 
93  void (*checkExpectations)(void);
94  int (*expectedCallsLeft)(void);
95 
96  void (*clear)(void);
97 
98  void (*installComparator) (const char* typeName, MockTypeEqualFunction_c isEqual, MockTypeValueToStringFunction_c valueToString);
99  void (*removeAllComparators)(void);
100 };
101 
102 
103 MockSupport_c* mock_c(void);
104 MockSupport_c* mock_scope_c(const char* scope);
105 
106 #ifdef __cplusplus
107 }
108 #endif
109 
110 #endif
Definition: MockSupport_c.h:77
Definition: MockSupport_c.h:43
Definition: MockSupport_c.h:56