X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ftest.h;h=77aa5303bbe2bd580e7c1c1d8670463c8e565d00;hb=4effcb18b27e2d84a8b29bc311b5edbee3c004b6;hp=5d6bb4b72b70c8e775b0aa6a384fda28502d908a;hpb=b101e640d4f8e0f3ee7a2b3b75c6c2578433e66d;p=awesomized%2Flibmemcached diff --git a/tests/test.h b/tests/test.h index 5d6bb4b7..77aa5303 100644 --- a/tests/test.h +++ b/tests/test.h @@ -16,9 +16,12 @@ extern "C" { #include #include -#include #include +#if !defined(__cplusplus) +# include +#endif + typedef struct world_st world_st; typedef struct collection_st collection_st; typedef struct test_st test_st; @@ -36,6 +39,8 @@ typedef test_return_t (*test_callback_fn)(void *); typedef test_return_t (*test_callback_runner_fn)(test_callback_fn, void *); typedef test_return_t (*test_callback_error_fn)(test_return_t, void *); +/* Help function for use with gettimeofday() */ +long int timedif(struct timeval a, struct timeval b); /** A structure describing the test case. @@ -82,23 +87,34 @@ struct world_st { test_callback_create_fn create; test_callback_fn destroy; - /* This is called a the beginning of any collection run. */ - test_callback_fn collection_startup; + struct { + /* This is called a the beginning of any test run. */ + test_callback_fn startup; - /* This called on a test if the test requires a flush call (the bool is from test_st) */ - test_callback_fn flush; + /* This called on a test if the test requires a flush call (the bool is from test_st) */ + test_callback_fn flush; - /** - These are run before/after the test. If implemented. Their execution is not controlled - by the test. - */ - test_callback_fn pre_run; - test_callback_fn post_run; + /** + These are run before/after the test. If implemented. Their execution is not controlled + by the test. + */ + test_callback_fn pre_run; + test_callback_fn post_run; + + /** + If an error occurs during the test, this is called. + */ + test_callback_error_fn on_error; + } test; + + struct { + /* This is called a the beginning of any collection run. */ + test_callback_fn startup; + + /* This is called at the end of any collection run. */ + test_callback_fn shutdown; + } collection; - /** - If an error occurs during the test, this is called. - */ - test_callback_error_fn on_error; /** Runner represents the callers for the tests. If not implemented we will use @@ -113,6 +129,10 @@ struct world_st { @note world_stats_st is a simple structure for tracking test successes. */ typedef struct { + uint32_t collection_success; + uint32_t collection_skipped; + uint32_t collection_failed; + uint32_t collection_total; uint32_t success; uint32_t skipped; uint32_t failed; @@ -129,7 +149,17 @@ void create_core(void); */ const char *test_strerror(test_return_t code); -#define test_truth(A) \ +#define test_fail(A) \ +do \ +{ \ + if (1) { \ + fprintf(stderr, "\nFailed in %s:%d: %s\n", __FILE__, __LINE__, #A);\ + create_core(); \ + return TEST_FAILURE; \ + } \ +} while (0) + +#define test_true(A) \ do \ { \ if (! (A)) { \