#include #include #include #include #include #include #include #include #include #include typedef void (*testfunc)(void); void check_failed(const char *expr, const char *file, int line); void add_test(testfunc fn, const char *name); #define CHECK(x) \ do { if (!(x)) check_failed(#x, __FILE__, __LINE__); } while(0) #define ADD_TEST(fn) \ extern void fn(void); \ __attribute__((__constructor__)) \ void fn ## _add(void) \ { \ add_test(fn, #fn); \ }