X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Ftest.h;h=cf19057250f347c755cb44c4acdd0b4d15a937b8;hb=3928e14fbe1ed17cefe9bdbbb282fb7ecf053e7a;hp=302a09075ea3a8b22b51cc78be1c0b82509c8253;hpb=3936140765093cf4e3b28e0a4b837a67b79c1cbf;p=awesomized%2Flibmemcached diff --git a/tests/test.h b/tests/test.h index 302a0907..cf190572 100644 --- a/tests/test.h +++ b/tests/test.h @@ -14,8 +14,13 @@ extern "C" { #endif -#include #include +#include +#include + +#if !defined(__cplusplus) +# include +#endif typedef struct world_st world_st; typedef struct collection_st collection_st; @@ -29,7 +34,7 @@ typedef enum { TEST_MAXIMUM_RETURN /* Always add new error code before */ } test_return_t; -typedef void *(*test_callback_create_fn)(void); +typedef void *(*test_callback_create_fn)(test_return_t *error); 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 *); @@ -57,7 +62,7 @@ struct collection_st { /** - Structure which houses the actual callers for the test cases contained in + Structure which houses the actual callers for the test cases contained in the collections. */ typedef struct { @@ -75,32 +80,43 @@ typedef struct { struct world_st { collection_st *collections; - + /* These methods are called outside of any collection call. */ 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; + + /** + 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; - /** - 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; /** Runner represents the callers for the tests. If not implemented we will use - a set of default implementations. + a set of default implementations. */ world_runner_st *runner; }; @@ -111,6 +127,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;