diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/helpers.c | 15 | ||||
-rw-r--r-- | tests/main.c | 13 | ||||
-rw-r--r-- | tests/test.c | 116 | ||||
-rw-r--r-- | tests/tests.h | 7 |
4 files changed, 35 insertions, 116 deletions
diff --git a/tests/helpers.c b/tests/helpers.c new file mode 100644 index 0000000..42a0724 --- /dev/null +++ b/tests/helpers.c @@ -0,0 +1,15 @@ +#include <stdio.h> + +#include "lily-test.h" +#include "tests.h" + +void run_test(const char *name, const char* (*test)()) +{ + printf("%s... ", name); + const char *result = test(); + if (result != 0) { + printf("FAILED (%s)\n", result); + } + else + printf("OK\n"); +} diff --git a/tests/main.c b/tests/main.c new file mode 100644 index 0000000..a3de945 --- /dev/null +++ b/tests/main.c @@ -0,0 +1,13 @@ +#include <stdio.h> +#include <stdbool.h> +#include <string.h> +#include <stdlib.h> + +#include "lily-test.h" +#include "tests.h" + +int main() +{ + printf("all tests finished.\n"); + return 0; +} diff --git a/tests/test.c b/tests/test.c deleted file mode 100644 index 85c1ad7..0000000 --- a/tests/test.c +++ /dev/null @@ -1,116 +0,0 @@ -#include <stdio.h> -#include <stdbool.h> -#include <string.h> -#include <stdlib.h> - -#include "lily-test.h" - -LILY_INIT(); - -void run_test(const char *name, lily_test (*fp)()) -{ - printf("%s... ", name); - const char *result = fp(); - if (result != 0) { - printf("FAILED (%s)\n", result); - } - else - printf("OK\n"); -} - - -lily_test check_init() -{ - // should fail to compile if lily_test_data is undefined - if (lily_test_data.tests_run != 0) - return "tests_run is not equal to zero!"; - if (lily_test_data.tests_failed != 0) - return "tests_failed is not equal to zero!"; - return 0; -} - - -int get_message(char **destination, const char *source) -{ - const char *s = source; - size_t size = 0; - while (*s != '\n') { - if (*s == 0) - return false; - s++; - size++; - } - - *destination = malloc((size+1) * sizeof(char)); - strncpy(*destination, source, size); - (*destination)[size] = 0; - return true; -} - -#define assert_msg "message" - -lily_test wrap_assert(bool statement) -{ - lily_assert_msg(statement, assert_msg); - return 0; -} - -lily_test check_assert() -{ - if (wrap_assert(true) != 0) - return "true assertion did not return 0!"; - - const char *result = wrap_assert(false); - - if (result == 0) - return "false assertion returned zero!"; - - char *message; - if (!get_message(&message, result)) - return "false assertion contained malformed message!"; - - if (strcmp(message, assert_msg) != 0) - return "false assertion message was not '" assert_msg "'!"; - free(message); - - return 0; -} - - -const char *assert_eq_true() -{ - lily_assert_equal(15, 15); - return 0; -} -const char *assert_eq_false() -{ - lily_assert_equal(14, 15); - return 0; -} - -lily_test check_other_asserts() -{ - if (assert_eq_true() != 0) - return "equality assertion returned non-zero when true!"; - const char *result = assert_eq_false(); - if (result == 0) - return "equality assertion returned zero when false!"; - char *message; - if (!get_message(&message, result)) - return "false equality assertion returned malformed message!"; - if (strcmp(message, "'14' is not equal to '15'") != 0) - return "false equality assertion returned incorrect message!"; - - return 0; -} - - -int main() -{ - run_test("check LILY_INIT()", check_init); - run_test("check basic assertion", check_assert); - run_test("check other asserts", check_other_asserts); - - printf("all tests finished.\n"); - return 0; -} diff --git a/tests/tests.h b/tests/tests.h new file mode 100644 index 0000000..cbe0f02 --- /dev/null +++ b/tests/tests.h @@ -0,0 +1,7 @@ +#ifndef LILY_META_TESTS_H +#define LILY_META_TESTS_H + +void run_test(const char *name, const char* (*fp)()); +int validate_message(const char* received, const char* expected, + const char* FILE, unsigned int LINE); +#endif |