summaryrefslogtreecommitdiff
path: root/lily-test.h
diff options
context:
space:
mode:
Diffstat (limited to 'lily-test.h')
-rw-r--r--lily-test.h30
1 files changed, 29 insertions, 1 deletions
diff --git a/lily-test.h b/lily-test.h
index b9a57f7..6ada538 100644
--- a/lily-test.h
+++ b/lily-test.h
@@ -16,20 +16,22 @@
#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);
@@ -41,6 +43,7 @@ void _lily_run_suite(const char *name, lily_test_t suite);
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
+/** basic assertion function, mostly used by the other assertions */
void lily_assert_msg(bool statement, const char *location,
const char *format_string, ...);
@@ -122,6 +125,7 @@ void _lily_assert_memory_not_equal(const char *name_a, const char *name_b,
*/
+/** queue structure capable of containing arbitrary data */
typedef struct lily_queue_t {
size_t buf_size;
uint8_t *buf;
@@ -129,9 +133,19 @@ typedef struct lily_queue_t {
} 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; \
@@ -140,6 +154,12 @@ void lily_queue_destroy(lily_queue_t *q);
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);
@@ -152,19 +172,25 @@ struct lily_mock_arg_t {
#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,
@@ -172,8 +198,10 @@ void _lily_get_call(lily_mock_t *m,
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)