lily ==== **lily** is a testing library for C. It provides both basic assertions as well as mocking. To incorporate lily into a project, just copy `lily-test.h` and `lily-test.c` into your source code. usage ----- The function `lily_init()` must be called exactly once before any other lily functions may be called. Tests are simply functions with the signature `void ()`. Each test can contain any of the following assertion messages: * `lily_assert_true(bool)` * `lily_assert_false(bool)` * `lily_assert_not_null(void *)` * `lily_assert_null(void *)` * `lily_assert_ptr_equal(void *, void *)` * `lily_assert_ptr_not_equal(void *, void *)` * `lily_assert_int_equal(int, int)` * `lily_assert_int_not_equal(int, int)` * `lily_assert_float_equal(float, float, float epsilon)` * `lily_assert_float_not_equal(float, float, float epsilon)` * `lily_assert_string_equal(char *, char *)` * `lily_assert_string_not_equal(char *, char *)` * `lily_assert_memory_equal(void *, void *, size_t size)` * `lily_assert_memory_not_equal(void *, void *, size_t size)` Tests are run via the macro `lily_run_test(test_func)`. A test suite is simply a `void ()` function that runs some tests. Suites can be called via the macro `lily_run_suite(suite_func)`. A small script, called `prepare-tests.sh` is provided. It will automatically scan the given source root for all files matching `*.test.c` and qenerate a header file, main function, and Makefile to run all of the functions matching `void ()` in those test files. (If you want a utility function or something, just make it `static`). This script relies on POSIX utilities -- sorry, Windows users. :l