Fn
#define TEST_R(Fn, ...) _test_##Fn(__LINE__, 0, __VA_ARGS__)
#define TEST_ER(Fn, ...) _test_##Fn(__LINE__, __VA_ARGS__)
#define TESTFUNC(Fn, Ft, Af, Rf, Op) \
_test_##Fn(int line, int ee, Ft er, FUNCPARA) \
ar = Fn(FUNCARGS); \
line, #Fn, FUNCARGS, ar, er); \
line, #Fn, FUNCARGS, errno, ee); \
#define STRTESTFUNC(Fn, Af) \
_test_##Fn(int line, int ee, const char *er, FUNCPARA) \
ar = Fn(FUNCARGS); \
line, #Fn, FUNCARGS, ar, er); \