The test overrides the return value of STRUCTOBJ1 *Foo(LPCSTR,STRUCTOBJ2 **) but gets an error that param 2 cannot be converted from const char * to STRUCTOBJ2**
struct STRUCTOBJ1
{
int x;
};
#define LPSTRUCTOBJ1 STRUCTOBJ1*
struct STRUCTOBJ2
{
int y;
};
#define LPSTRUCTOBJ2 STRUCTOBJ2*
typedef const char *LPCSTR;
LPSTRUCTOBJ1 Foo(LPCSTR x, LPSTRUCTOBJ2* y)
{
return nullptr;
}
TEST_METHOD(JimTest)
{
STRUCTOBJ1 my_obj;
FAKE_GLOBAL(Foo);
//WHEN_CALLED(Foo(ANY_VAL(LPCSTR), TYPEOF(STRUCTOBJ2**))).Return(&my_obj);
//WHEN_CALLED(Foo(ANY_VAL(LPCSTR), TYPEOF(LPSTRUCTOBJ2*))).Return(&my_obj);
//WHEN_CALLED(Foo(_, TYPEOF(LPSTRUCTOBJ2*))).Return(&my_obj);
WHEN_CALLED(Foo(_, _)).Return(&my_obj);
//all of the above produce error:
//error C2664 : \\\\\\\'STRUCTOBJ1 *Foo(LPCSTR,STRUCTOBJ2 **)\\\\\\\' : cannot convert argument 2 from \\\\\\\'const char *\\\\\\\' to \\\\\\\'STRUCTOBJ2 **\\\\\\\'
}