1

I am writing a series of mock functions in C using CMocka

Some of these take pointers as input variables and I am not sure whether I should check them (ptr != NULL) or not.

In general, is the mock function responsible to perform input checking?

If yes, how should it behave when an error is found? Should it use the assert functions provided by the framework?

Muffo
  • 1,733
  • 2
  • 19
  • 29

1 Answers1

1

If your mentioned pointers are parameters which are passed to some mocked functions you can check them with check_expected(...) and expect_value().

void function_under_test(){
   char c = 'c'; 
   int ret;
   //...
   ret = subfunction(&c);
   if(ret == 0)
      printf("Success");
   //...
}

int __wrap_mocked_subfunction(int* p_paramater){
   check_expected(p_paramater);
   return mock();
}

test(void **state){
    expect_not_value(__wrap_mocked_functions, p_paramater, NULL);
    will_return(0);

    function_under_test();
}

Errors are then reported automatically.

An example can be found here: https://lwn.net/Articles/558106/

If you really need to check them depends on you and your code and your opinion and your requirements.

eDeviser
  • 1,605
  • 2
  • 17
  • 44