18 #if __cplusplus >= 201103L || defined(DOXYGEN) 
   26 #define EXPECT_FFF_CALL_COUNT(name, count)                                                     \ 
   27     if (name##_fake.call_count != (count)) {                                                   \ 
   29         printf("Expected %d calls to " #name ", but got %d\n", count, name##_fake.call_count); \
 
   33 #define EXPECT_FFF_CALL_1(name, val1)                                          \ 
   34     if (name##_fake.arg0_val != (val1)) {                                      \ 
   36         puts("Argument 0 to mock " #name " doesn't match the expectation.\n"); \
 
   38 #define EXPECT_FFF_CALL_2(name, val1, val2)                                    \ 
   39     if (name##_fake.arg0_val != (val1)) {                                      \ 
   41         puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
 
   43     if (name##_fake.arg1_val != (val2)) {                                      \
 
   45         puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
 
   47 #define EXPECT_FFF_CALL_3(name, val1, val2, val3)                              \ 
   48     if (name##_fake.arg0_val != (val1)) {                                      \ 
   50         puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
 
   52     if (name##_fake.arg1_val != (val2)) {                                      \
 
   54         puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
 
   56     if (name##_fake.arg2_val != (val3)) {                                      \
 
   58         puts("Argument 3 to mock " #name " doesn't match the expectation.\n"); \
 
   60 #define EXPECT_FFF_CALL_4(name, val1, val2, val3, val4)                        \ 
   61     if (name##_fake.arg0_val != (val1)) {                                      \ 
   63         puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
 
   65     if (name##_fake.arg1_val != (val2)) {                                      \
 
   67         puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
 
   69     if (name##_fake.arg2_val != (val3)) {                                      \
 
   71         puts("Argument 3 to mock " #name " doesn't match the expectation.\n"); \
 
   73     if (name##_fake.arg3_val != (val4)) {                                      \
 
   75         puts("Argument 4 to mock " #name " doesn't match the expectation.\n"); \
 
   77 #define EXPECT_FFF_CALL_5(name, val1, val2, val3, val4, val5)                  \ 
   78     if (name##_fake.arg0_val != (val1)) {                                      \ 
   80         puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
 
   82     if (name##_fake.arg1_val != (val2)) {                                      \
 
   84         puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
 
   86     if (name##_fake.arg2_val != (val3)) {                                      \
 
   88         puts("Argument 3 to mock " #name " doesn't match the expectation.\n"); \
 
   90     if (name##_fake.arg3_val != (val4)) {                                      \
 
   92         puts("Argument 4 to mock " #name " doesn't match the expectation.\n"); \
 
   94     if (name##_fake.arg4_val != (val5)) {                                      \
 
   96         puts("Argument 5 to mock " #name " doesn't match the expectation.\n"); \
 
   98 #define EXPECT_FFF_CALL_6(name, val1, val2, val3, val4, val5, val6)            \ 
   99     if (name##_fake.arg0_val != (val1)) {                                      \ 
  101         puts("Argument 1 to mock " #name " doesn't match the expectation.\n"); \
 
  103     if (name##_fake.arg1_val != (val2)) {                                      \
 
  105         puts("Argument 2 to mock " #name " doesn't match the expectation.\n"); \
 
  107     if (name##_fake.arg2_val != (val3)) {                                      \
 
  109         puts("Argument 3 to mock " #name " doesn't match the expectation.\n"); \
 
  111     if (name##_fake.arg3_val != (val4)) {                                      \
 
  113         puts("Argument 4 to mock " #name " doesn't match the expectation.\n"); \
 
  115     if (name##_fake.arg5_val != (val6)) {                                      \
 
  117         puts("Argument 6 to mock " #name " doesn't match the expectation.\n"); \
 
  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)              \ 
  133 #error This library needs C++11 and newer