I know it's not 'possible' to mock free functions yet, so I wondered if I could create macro that does this for me. Ideally I could just copy what's inside the MOCK_METHOD and paste it in MOCK_FREE kind of macro.
#define MOCK_FREE_VOID(ret, name, args, ...) ret name args { Mockups::GetInstance()->name (__VA_ARGS__); }
#define MOCK_FREE_NON_VOID(ret, name, args, ...) ret name args { return Mockups::GetInstance()->name (__VA_ARGS__); }
class Mockusp {
public:
MOCK_METHOD(void, fun_foo, (foo_t foo, bar_t bar))
MOCK_METHOD(bar_t, fun_bar, (foo_t foo, bar_t bar))
...
}
// This works
MOCK_FREE_VOID(void, fun_foo, (foo_t foo, bar_t bar), foo, bar)
MOCK_FREE_NON_VOID(bar_t, fun_bar, (foo_t foo, bar_t bar), foo, bar)
// I'd like to have
MOCK_FREE_VOID(void, fun_foo, (foo_t foo, bar_t bar))
MOCK_FREE_NON_VOID(bar_t, fun_bar, (foo_t foo, bar_t bar))
Which creates me free functions and passes their parameters to the mock:
void fun_foo (foo_t foo, bar_t bar) { Mockups::GetInstance()->fun_foo (foo, bar); }
bar_t fun_bar (foo_t foo, bar_t bar) { return Mockups::GetInstance()->fun_bar (foo, bar); }
At the moment, my macro requires one to append parameter names to the end, can I get rid of them?