-#if __STDC_VERSION__ < 199901L
-#if defined(_MSC_VER)
-#define TEST_CASE_NAME __FUNCTION__
-#else
-#define testutil_stringify_helper(s) #s
-#define testutil_stringify(s) testutil_stringify_helper(s)
-#define TEST_CASE_NAME __FILE__ ":" testutil_stringify(__LINE__)
-#endif /* _MSC_VER */
-#else
-#define TEST_CASE_NAME __func__
-#endif /* __STDC_VERSION__ */
+# if __STDC_VERSION__ < 199901L
+# if defined(_MSC_VER)
+# define TEST_CASE_NAME __FUNCTION__
+# else
+# define testutil_stringify_helper(s) #s
+# define testutil_stringify(s) testutil_stringify_helper(s)
+# define TEST_CASE_NAME __FILE__ ":" testutil_stringify(__LINE__)
+# endif /* _MSC_VER */
+# else
+# define TEST_CASE_NAME __func__
+# endif /* __STDC_VERSION__ */
+
+/*
+ * In main(), call ADD_TEST to register each test case function, then call
+ * run_tests() to execute all tests and report the results. The result
+ * returned from run_tests() should be used as the return value for main().
+ */
+# define ADD_TEST(test_function) add_test(#test_function, test_function)
+void add_test(const char *test_case_name, int (*test_fn) ());
+int run_tests(const char *test_prog_name);