diff options
Diffstat (limited to 'lily-test.h')
-rw-r--r-- | lily-test.h | 189 |
1 files changed, 0 insertions, 189 deletions
diff --git a/lily-test.h b/lily-test.h index b3df728..d04b9c2 100644 --- a/lily-test.h +++ b/lily-test.h @@ -64,193 +64,4 @@ #define LILY_LOCATION ((__FILE__ ":" STR(__LINE__)) + SOURCE_PATH_SIZE) #endif -/** a few nasty globals that make everything clean for the end user */ -struct lily_globals_t { - jmp_buf env; - size_t error_msg_len; - char *error_msg; - const char *error_location; -}; -extern struct lily_globals_t _lily_globals; - -typedef void (*lily_test_t)(void); - -/** run a single test */ -#define lily_run_test(test) _lily_run_test(#test, test) -void _lily_run_test(const char *name, lily_test_t test); - -/** run a suite */ -#define lily_run_suite(suite) _lily_run_suite(#suite, suite) -void _lily_run_suite(const char *name, lily_test_t suite); - - -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * assertions - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - -/** basic assertion function, mostly used by the other assertions */ -void lily_assert_msg(bool statement, const char *location, - const char *format_string, ...); - -#define lily_assert_true(statement) _lily_assert_true(#statement, statement, LILY_LOCATION) -void _lily_assert_true(const char *statement, bool value, const char *location); - - -#define lily_assert_false(statement) _lily_assert_false(#statement, statement, LILY_LOCATION) -void _lily_assert_false(const char *statement, bool value, const char *location); - - -#define lily_assert_not_null(ptr) _lily_assert_not_null(#ptr, ptr, LILY_LOCATION) -void _lily_assert_not_null(const char *name, void *ptr, const char *location); - - -#define lily_assert_null(ptr) _lily_assert_null(#ptr, ptr, LILY_LOCATION) -void _lily_assert_null(const char *name, void *ptr, const char *location); - - -#define lily_assert_ptr_equal(a, b) _lily_assert_ptr_equal(#a, #b, a, b, LILY_LOCATION) -void _lily_assert_ptr_equal(const char *name_a, const char *name_b, - void *a, void *b, const char *location); - - -#define lily_assert_ptr_not_equal(a, b) _lily_assert_ptr_not_equal(#a, #b, a, b, LILY_LOCATION) -void _lily_assert_ptr_not_equal(const char *name_a, const char *name_b, - void *a, void *b, const char *location); - - -#define lily_assert_int_equal(a, b) _lily_assert_int_equal(#a, #b, a, b, LILY_LOCATION) -void _lily_assert_int_equal(const char *name_a, const char *name_b, - intmax_t a, intmax_t b, const char *location); - - -#define lily_assert_int_not_equal(a, b) _lily_assert_int_not_equal(#a, #b, a, b, LILY_LOCATION) -void _lily_assert_int_not_equal(const char *name_a, const char *name_b, - intmax_t a, intmax_t b, const char *location); - - -#define lily_assert_float_equal(a, b, epsilon) \ - _lily_assert_float_equal(#a, #b, a, b, epsilon, LILY_LOCATION) -void _lily_assert_float_equal(const char *name_a, const char *name_b, - double a, double b, double epsilon, const char *location); - - -#define lily_assert_float_not_equal(a, b, epsilon) \ - _lily_assert_float_not_equal(#a, #b, a, b, epsilon, LILY_LOCATION) -void _lily_assert_float_not_equal(const char *name_a, const char *name_b, - double a, double b, double epsilon, const char *location); - - -#define lily_assert_string_equal(a, b) _lily_assert_string_equal(#a, #b, a, b, LILY_LOCATION) -void _lily_assert_string_equal(const char *name_a, const char *name_b, - char *a, char *b, const char *location); - - -#define lily_assert_string_not_equal(a, b) _lily_assert_string_not_equal(#a, #b, a, b, LILY_LOCATION) -void _lily_assert_string_not_equal(const char *name_a, const char *name_b, - char *a, char *b, const char *location); - - -#define lily_assert_memory_equal(a, b, size) \ - _lily_assert_memory_equal(#a, #b, a, b, size, LILY_LOCATION) -void _lily_assert_memory_equal(const char *name_a, const char *name_b, - void *a, void *b, size_t size, const char *location); - - -#define lily_assert_memory_not_equal(a, b, size) \ - _lily_assert_memory_not_equal(#a, #b, a, b, size, LILY_LOCATION) -void _lily_assert_memory_not_equal(const char *name_a, const char *name_b, - void *a, void *b, size_t size, const char *location); - - -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - * - * mocks - * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - */ - - -/** queue structure capable of containing arbitrary data */ -typedef struct lily_queue_t { - size_t buf_size; - uint8_t *buf; - uint8_t *front, *back; -} lily_queue_t; - - -/** create a queue */ -lily_queue_t* lily_queue_create(); - -/** destroy a queue */ -void lily_queue_destroy(lily_queue_t *q); - - -/** enqueue a value - * - * q - the queue to append to - * type - the type of the value to append - * value - the value to append - */ -#define lily_enqueue(q, type, value) \ - do { \ - type _var = value; \ - _lily_enqueue(q, sizeof(type), (uint8_t*)(&_var)); \ - } while(0) -void _lily_enqueue(lily_queue_t *q, size_t size, uint8_t *data); - - -/** pop a value from the queue - * - * q - the queue to pop from - * type - the type of the value to pop - * ptr - the location to store the popped value - */ -#define lily_dequeue(q, type, ptr) \ - _lily_dequeue(q, sizeof(type), (uint8_t*) ptr) -void _lily_dequeue(lily_queue_t *q, size_t size, uint8_t *ptr); - - -struct lily_mock_arg_t { - size_t size; - void *var; -}; - -#define LILY_NARGS(args) (sizeof(args)/sizeof(struct lily_mock_arg_t)) - -/** structure to store data for mock functions */ -typedef struct lily_mock_t { - unsigned int n_calls; - lily_queue_t *arguments; - lily_queue_t *values; -} lily_mock_t; - -/** setup mock function storage */ -lily_mock_t * lily_mock_create(); -/** tear down mock function storage */ -void lily_mock_destroy(lily_mock_t *m); - - -/** store a call to a mock function */ -#define lily_mock_call(m, args) \ - _lily_mock_call(m, args, LILY_NARGS(args)) -void _lily_mock_call(lily_mock_t *m, struct lily_mock_arg_t *args, size_t n_args); - -/** retrieve a call to a mock function */ -#define lily_get_call(m, args, call_num) \ - _lily_get_call(m, args, LILY_NARGS(args), call_num) -void _lily_get_call(lily_mock_t *m, - struct lily_mock_arg_t *args, - size_t n_args, - unsigned int call_num); - -/** store a value in a mock structure */ -#define lily_store_value(m, type, value) \ - lily_enqueue(m->values, type, value) -/** retrieve a value from a mock structure */ -#define lily_get_value(m, type, ptr) \ - lily_dequeue(m->values, type, ptr) - #endif |