The TEST_ASSERT_EQUAL_INT macro compares the two inputs in the macro, and that comparison should handle all integer types okay. But, if the comparison fails, it calls the function assertImplementationInt(), which accepts int inputs.
This handles ints fine, but will not give good results for:
* unsigned ints
* longs on some platforms (e.g. most 16-bit or 8-bit embedded)
* long longs
* size_t on some platforms (some 16-bit or 8-bit embedded; 64-bit)
Probably extra macros are needed, to better handle a wider range of integer type comparisons.
Perhaps you could change assertImplementationInt() to handle the largest expected type (e.g. long or long long) and rely on automatic type conversions. But you would also need separate functions to handle signed vs unsigned values.
It should be noted that it is not the macro itself that is flawed, it is the function that formats the text. The macro should work fine for all the integers.
Providing the function for all the mentioned cases would be rather non-trivial since there is no mechanism in C we can use to make the compiler select the function with signature that matches best (as it is in C++). The only way this can be done is providing assertImplementationInt() that takes long long as an argument, but this still won't save us in the case of unsigned long longs.
Or we can provide a set of macros for each type... :-)