Merge branch 'release-1.0'
[reservoir_sample] / test_suite.h
diff --git a/test_suite.h b/test_suite.h
new file mode 100644 (file)
index 0000000..09fd24d
--- /dev/null
@@ -0,0 +1,35 @@
+#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 */