X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=tests%2Ftest.h;h=7385763ddb9ef8d370852e87a9444fdd4c9d5831;hb=e26021d3a6abec207f79f129d620cef1c9a18e9a;hp=064dc0b236a0b823d45ef4709fe5f8d780eb78bb;hpb=a246ac50a88e4af750fd2dd209eff94dcadf72d2;p=awesomized%2Flibmemcached diff --git a/tests/test.h b/tests/test.h index 064dc0b2..7385763d 100644 --- a/tests/test.h +++ b/tests/test.h @@ -14,8 +14,10 @@ extern "C" { #endif -#include #include +#include +#include +#include typedef struct world_st world_st; typedef struct collection_st collection_st; @@ -29,7 +31,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 +59,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,13 +77,13 @@ 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; + test_callback_fn test_startup; /* This called on a test if the test requires a flush call (the bool is from test_st) */ test_callback_fn flush; @@ -92,15 +94,15 @@ struct world_st { */ 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; }; @@ -122,11 +124,16 @@ void get_world(world_st *world); void create_core(void); +/** + @note Friendly print function for errors. +*/ +const char *test_strerror(test_return_t code); + #define test_truth(A) \ do \ { \ if (! (A)) { \ - fprintf(stderr, "Assertion failed in %s:%d: %s\n", __FILE__, __LINE__, #A);\ + fprintf(stderr, "\nAssertion failed in %s:%d: %s\n", __FILE__, __LINE__, #A);\ create_core(); \ return TEST_FAILURE; \ } \ @@ -136,7 +143,7 @@ do \ do \ { \ if ((A)) { \ - fprintf(stderr, "Assertion failed in %s:%d: %s\n", __FILE__, __LINE__, #A);\ + fprintf(stderr, "\nAssertion failed in %s:%d: %s\n", __FILE__, __LINE__, #A);\ create_core(); \ return TEST_FAILURE; \ } \ @@ -147,7 +154,7 @@ do \ { \ if (strcmp((A), (B))) \ { \ - fprintf(stderr, "%d", __LINE__); \ + fprintf(stderr, "\n%s:%d: %s -> %s\n", __FILE__, __LINE__, (A), (B)); \ create_core(); \ return TEST_FAILURE; \ } \