#ifndef TEST_SUITE_H_6XEHCUS5 #define TEST_SUITE_H_6XEHCUS5 #ifdef TEST typedef struct test { const char * const test_name; int (* const test_fn)(void *test_data, void *suite_data); int (* const test_pre_fn)(void *test_data, void *suite_data); int (* const test_post_fn)(void *test_data, void *suite_data); void *test_data; } test_t; /* define all of these within module to test */ extern test_t test_suite[]; extern int test_suite_pre(void *suite_data); extern int test_suite_post(void *suite_data); extern void *test_suite_data; /* use these in tests */ void test_verbose(const char *fmt, ...) __attribute__((format(printf, 1, 2))); /* stdout only with -v flag */ void test_info(const char *fmt, ...) __attribute__((format(printf, 1, 2))); /* stdout */ void test_error(const char *fmt, ...) __attribute__((format(printf, 1, 2))); /* stderr */ #define TEST_VERBOSE(fmt,...) do { test_verbose("%s@%s:%d/%s/" fmt "\n", "verbose", __FILE__, __LINE__, __func__, ##__VA_ARGS__); } while (0) #define TEST_INFO(fmt,...) do { test_info("%s@%s:%d/%s/" fmt "\n", "info", __FILE__, __LINE__, __func__, ##__VA_ARGS__); } while (0) #define TEST_ERROR(fmt,...) do { test_error("%s@%s:%d/%s/" fmt "\n", "error", __FILE__, __LINE__, __func__, ##__VA_ARGS__); } while (0) #else /* TEST */ #define TEST_VERBOSE(...) #define TEST_INFO(...) #define TEST_ERROR(...) #endif /* TEST */ #endif /* TEST_SUITE_H_6XEHCUS5 */