cppunit_fff.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Jens Wetterich <jens@wetterich-net.de>
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
16 #ifndef CPPUNIT_FFF_H
17 #define CPPUNIT_FFF_H
18 #if __cplusplus >= 201103L || defined(DOXYGEN)
26 #define EXPECT_FFF_CALL_COUNT(name, count) \
27  if (name##_fake.call_count != (count)) { \
28  fail(); \
29  printf("Expected %d calls to " #name ", but got %d\n", count, name##_fake.call_count); \
30  }
31 
33 #define EXPECT_FFF_CALL_1(name, val1) \
34  if (name##_fake.arg0_val != (val1)) { \
35  fail(); \
36  puts("Argument 0 to mock " #name " doesn't match the expectation.\n"); \
37  }
38 #define EXPECT_FFF_CALL_2(name, val1, val2) \
39  if (name##_fake.arg0_val != (val1)) { \
40  fail(); \
41  puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
42  } \
43  if (name##_fake.arg1_val != (val2)) { \
44  fail(); \
45  puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
46  }
47 #define EXPECT_FFF_CALL_3(name, val1, val2, val3) \
48  if (name##_fake.arg0_val != (val1)) { \
49  fail(); \
50  puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
51  } \
52  if (name##_fake.arg1_val != (val2)) { \
53  fail(); \
54  puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
55  } \
56  if (name##_fake.arg2_val != (val3)) { \
57  fail(); \
58  puts("Argument 3 to mock " #name " doesn't match the expectation.\n"); \
59  }
60 #define EXPECT_FFF_CALL_4(name, val1, val2, val3, val4) \
61  if (name##_fake.arg0_val != (val1)) { \
62  fail(); \
63  puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
64  } \
65  if (name##_fake.arg1_val != (val2)) { \
66  fail(); \
67  puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
68  } \
69  if (name##_fake.arg2_val != (val3)) { \
70  fail(); \
71  puts("Argument 3 to mock " #name " doesn't match the expectation.\n"); \
72  } \
73  if (name##_fake.arg3_val != (val4)) { \
74  fail(); \
75  puts("Argument 4 to mock " #name " doesn't match the expectation.\n"); \
76  }
77 #define EXPECT_FFF_CALL_5(name, val1, val2, val3, val4, val5) \
78  if (name##_fake.arg0_val != (val1)) { \
79  fail(); \
80  puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
81  } \
82  if (name##_fake.arg1_val != (val2)) { \
83  fail(); \
84  puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
85  } \
86  if (name##_fake.arg2_val != (val3)) { \
87  fail(); \
88  puts("Argument 3 to mock " #name " doesn't match the expectation.\n"); \
89  } \
90  if (name##_fake.arg3_val != (val4)) { \
91  fail(); \
92  puts("Argument 4 to mock " #name " doesn't match the expectation.\n"); \
93  } \
94  if (name##_fake.arg4_val != (val5)) { \
95  fail(); \
96  puts("Argument 5 to mock " #name " doesn't match the expectation.\n"); \
97  }
98 #define EXPECT_FFF_CALL_6(name, val1, val2, val3, val4, val5, val6) \
99  if (name##_fake.arg0_val != (val1)) { \
100  fail(); \
101  puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
102  } \
103  if (name##_fake.arg1_val != (val2)) { \
104  fail(); \
105  puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
106  } \
107  if (name##_fake.arg2_val != (val3)) { \
108  fail(); \
109  puts("Argument 3 to mock " #name " doesn't match the expectation.\n"); \
110  } \
111  if (name##_fake.arg3_val != (val4)) { \
112  fail(); \
113  puts("Argument 4 to mock " #name " doesn't match the expectation.\n"); \
114  } \
115  if (name##_fake.arg5_val != (val6)) { \
116  fail(); \
117  puts("Argument 6 to mock " #name " doesn't match the expectation.\n"); \
118  }
119 #define GET_FFF_MACRO(_1, _2, _3, _4, _5, _6, NAME, ...) NAME
128 #define EXPECT_FFF_CALL_PARAMS(mock, ...) \
129  GET_FFF_MACRO(__VA_ARGS__, EXPECT_FFF_CALL_6, EXPECT_FFF_CALL_5, EXPECT_FFF_CALL_4, \
130  EXPECT_FFF_CALL_3, EXPECT_FFF_CALL_2, EXPECT_FFF_CALL_1) \
131  (mock, __VA_ARGS__)
132 #else
133 #error This library needs C++11 and newer
134 #endif
135 #endif