diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/assertions.c | 307 | ||||
-rw-r--r-- | tests/macro-tests.c | 12 | ||||
-rw-r--r-- | tests/main.c | 21 | ||||
-rw-r--r-- | tests/mock_queue.c | 120 | ||||
-rw-r--r-- | tests/tests.h | 19 |
5 files changed, 21 insertions, 458 deletions
diff --git a/tests/assertions.c b/tests/assertions.c deleted file mode 100644 index 0e14a2b..0000000 --- a/tests/assertions.c +++ /dev/null @@ -1,307 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "lily-test.h" -#include "tests.h" - -const char *test_LILY_LOCATION() -{ - // if you move this line, you MUST update the expected string! - const char *location = LILY_LOCATION; - int diff = strcmp(location, "tests/assertions.c:11"); - if (diff != 0) - return "LILY_LOCATION did not resolve correctly!"; - - return 0; -} - - -/* overarching assert function */ -const char *test_assert_msg() -{ - int val = setjmp(_lily_globals.env); - if (val != 0) - return "true assertion failed incorrectly!"; - - lily_assert_msg(true, LILY_LOCATION, "should not fail!"); - - int passed_thru = 0; - _lily_globals.error_msg = NULL; - _lily_globals.error_location = ""; - val = setjmp(_lily_globals.env); - - if (passed_thru == 0) { - passed_thru = 1; - // another line that you SHOULD NOT MOVE! - lily_assert_msg(false, LILY_LOCATION, "%s %s!", "should", "fail"); - return "false assertion incorrectly succeeded!"; - } - else { - if (strcmp(_lily_globals.error_msg, "should fail!") != 0) - return "false assertion produced incorrect error message!"; - if (strcmp(_lily_globals.error_location, "tests/assertions.c:37")) - return "false assertion produced incorrect error location!"; - } - - free(_lily_globals.error_msg); - return 0; -} - - -/* basic asserts */ -const char *test_assert_true() -{ - int val = setjmp(_lily_globals.env); - if (val != 0) - return "true assertion failed incorrectly!"; - - lily_assert_true(true); - - int passed_thru = 0; - _lily_globals.error_msg = NULL; - _lily_globals.error_location = ""; - val = setjmp(_lily_globals.env); - - if (passed_thru == 0) { - passed_thru = 1; - lily_assert_true(false); - return "false assertion incorrectly succeeded!"; - } - else { - if (strcmp(_lily_globals.error_msg, "false is not true") != 0) - return "false assertion produced incorrect error message!"; - } - - free(_lily_globals.error_msg); - return 0; -} - - -const char *test_assert_false() -{ - int val = setjmp(_lily_globals.env); - if (val != 0) - return "true assertion failed incorrectly!"; - - lily_assert_false(false); - - int passed_thru = 0; - _lily_globals.error_msg = NULL; - _lily_globals.error_location = ""; - val = setjmp(_lily_globals.env); - - if (passed_thru == 0) { - passed_thru = 1; - lily_assert_false(true); - return "false assertion incorrectly succeeded!"; - } - else { - if (strcmp(_lily_globals.error_msg, "true is not false") != 0) - return "false assertion produced incorrect error message!"; - } - - free(_lily_globals.error_msg); - return 0; -} - - -/* pointer assertions */ -const char *test_assert_not_null() -{ - int a = 5; - - int val = setjmp(_lily_globals.env); - if (val != 0) - return "true assertion failed incorrectly!"; - - lily_assert_not_null(&a); - - int passed_thru = 0; - _lily_globals.error_msg = NULL; - _lily_globals.error_location = ""; - val = setjmp(_lily_globals.env); - - int *ptr = NULL; - - if (passed_thru == 0) { - passed_thru = 1; - lily_assert_not_null(ptr); - return "false assertion incorrectly succeeded!"; - } - else { - if (strcmp(_lily_globals.error_msg, "ptr is NULL") != 0) - return "false assertion produced incorrect error message!"; - } - - free(_lily_globals.error_msg); - return 0; -} - - -const char *test_assert_null() -{ - int a = 5; - int *ptr = NULL; - - int val = setjmp(_lily_globals.env); - if (val != 0) - return "true assertion failed incorrectly!"; - - lily_assert_null(ptr); - - int passed_thru = 0; - _lily_globals.error_msg = NULL; - _lily_globals.error_location = ""; - val = setjmp(_lily_globals.env); - - if (passed_thru == 0) { - passed_thru = 1; - lily_assert_null(&a); - return "false assertion incorrectly succeeded!"; - } - else { - char buf[256]; - sprintf(buf, "&a (%p) is not NULL", &a); - if (strcmp(_lily_globals.error_msg, buf) != 0) - return "false assertion produced incorrect error message!"; - } - - free(_lily_globals.error_msg); - return 0; -} - - -const char *test_assert_ptr_equal() -{ - int a = 0; - int b = 0; - int *ptr = &a; - - int val = setjmp(_lily_globals.env); - if (val != 0) - return "true assertion failed incorrectly!"; - - lily_assert_ptr_equal(&a, ptr); - - int passed_thru = 0; - _lily_globals.error_msg = NULL; - _lily_globals.error_location = ""; - val = setjmp(_lily_globals.env); - ptr = &b; - - if (passed_thru == 0) { - passed_thru = 1; - lily_assert_ptr_equal(&a, ptr); - return "false assertion incorrectly succeeded!"; - } - else { - char buf[256]; - sprintf(buf, "&a (%p) is not equal to ptr (%p)", &a, &b); - if (strcmp(_lily_globals.error_msg, buf) != 0) - return "false assertion produced incorrect error message!"; - } - - free(_lily_globals.error_msg); - return 0; -} - - -const char *test_assert_ptr_not_equal() -{ - int a = 0; - int b = 0; - int *ptr = &b; - - int val = setjmp(_lily_globals.env); - if (val != 0) - return "true assertion failed incorrectly!"; - - lily_assert_ptr_not_equal(&a, ptr); - - int passed_thru = 0; - _lily_globals.error_msg = NULL; - _lily_globals.error_location = ""; - val = setjmp(_lily_globals.env); - ptr = &a; - - if (passed_thru == 0) { - passed_thru = 1; - lily_assert_ptr_not_equal(&a, ptr); - return "false assertion incorrectly succeeded!"; - } - else { - char buf[256]; - sprintf(buf, "&a (%p) is equal to ptr", &a); - if (strcmp(_lily_globals.error_msg, buf) != 0) - return "false assertion produced incorrect error message!"; - } - - free(_lily_globals.error_msg); - return 0; -} - - -/* integer assertions */ -const char *test_assert_int_equal() -{ - int a = 56; - int b = 56; - - int val = setjmp(_lily_globals.env); - if (val != 0) - return "true assertion failed incorrectly!"; - - lily_assert_int_equal(a, b); - - int passed_thru = 0; - _lily_globals.error_msg = NULL; - _lily_globals.error_location = ""; - val = setjmp(_lily_globals.env); - a = 25; - - if (passed_thru == 0) { - passed_thru = 1; - lily_assert_int_equal(a, b); - return "false assertion succeeded incorrectly!"; - } - else { - if (strcmp(_lily_globals.error_msg, "a (25) is not equal to b (56)") != 0) - return "false assertion produced incorrect error message!"; - } - - free(_lily_globals.error_msg); - return 0; -} - - -const char *test_assert_int_not_equal() -{ - int a = 25; - int b = 26; - - int val = setjmp(_lily_globals.env); - if (val != 0) - return "true assertion failed incorrectly!"; - - lily_assert_int_not_equal(a, b); - - int passed_thru = 0; - _lily_globals.error_msg = NULL; - _lily_globals.error_location = ""; - val = setjmp(_lily_globals.env); - b = 25; - - if (passed_thru == 0) { - passed_thru = 1; - lily_assert_int_not_equal(a, b); - return "false assertion incorrectly succeeded!"; - } - else { - if (strcmp(_lily_globals.error_msg, "a (25) is equal to b") != 0) - return "false assertion produced incorrect error message!"; - } - - free(_lily_globals.error_msg); - return 0; -} diff --git a/tests/macro-tests.c b/tests/macro-tests.c new file mode 100644 index 0000000..71e9189 --- /dev/null +++ b/tests/macro-tests.c @@ -0,0 +1,12 @@ +#include "lily-test.h" +#include "tests.h" + + +const char * test_LILY_LOCATION() +{ + /* do NOT move the following line, or this test will break! */ + if (strcmp(LILY_LOCATION, "tests/macro-tests.c:8") != 0) { + return "LILY_LOCATION refers to the wrong location!"; + } + return 0; +} diff --git a/tests/main.c b/tests/main.c index f3f1f06..49c6aa8 100644 --- a/tests/main.c +++ b/tests/main.c @@ -8,21 +8,8 @@ int main() { - run_test(test_LILY_LOCATION); - run_test(test_assert_msg); - run_test(test_assert_true); - run_test(test_assert_false); - run_test(test_assert_not_null); - run_test(test_assert_null); - run_test(test_assert_ptr_equal); - run_test(test_assert_ptr_not_equal); - run_test(test_assert_int_equal); - run_test(test_assert_int_not_equal); - - run_test(test_mock_enqueue_dequeue_int); - run_test(test_mock_enqueue_dequeue_heterogenous); - run_test(test_LILY_NARGS); - run_test(test_lily_mock_call); - - return 0; + #define X(test) run_test(test); + TESTS + #undef X + return 0; } diff --git a/tests/mock_queue.c b/tests/mock_queue.c deleted file mode 100644 index 493d397..0000000 --- a/tests/mock_queue.c +++ /dev/null @@ -1,120 +0,0 @@ -#include <stdio.h> -#include <string.h> - -#include "lily-test.h" -#include "tests.h" - - -const char* test_mock_enqueue_dequeue_int() { - lily_queue_t *q = lily_queue_create(); - - /* enqueue A259482, for no particular reason */ - lily_enqueue(q, int, 2); - lily_enqueue(q, int, 6); - lily_enqueue(q, int, 44); - int n = 2014; - lily_enqueue(q, int, n); - - lily_dequeue(q, int, &n); - if (n != 2) return "dequeued incorrect first value"; - lily_dequeue(q, int, &n); - - /* queue next value after already popping */ - lily_enqueue(q, long, 1651377); - - if (n != 6) return "dequeued incorrect second value"; - lily_dequeue(q, int, &n); - if (n != 44) return "dequeued incorrect third value"; - lily_dequeue(q, int, &n); - if (n != 2014) return "dequeued incorrect fourth value"; - long m; - lily_dequeue(q, long, &m); - if (m != 1651377) return "dequeued incorrect fifth value"; - - lily_queue_destroy(q); - - return 0; -} - - -const char* test_mock_enqueue_dequeue_heterogenous() -{ - lily_queue_t *q = lily_queue_create(); - - lily_enqueue(q, int, 2); - lily_enqueue(q, lily_queue_t *, q); - lily_enqueue(q, const char *, "hello, world!"); - - int n; - lily_dequeue(q, int, &n); - if (n != 2) return "dequeued incorrect int value"; - lily_queue_t *p; - lily_dequeue(q, lily_queue_t *, &p); - if (p != q) return "dequeued incorrect pointer value"; - const char *str; - lily_dequeue(q, const char *, &str); - if (strcmp(str, "hello, world!") != 0) return "dequeued incorrect string value"; - - lily_queue_destroy(q); - - return 0; -} - - -const char* test_LILY_NARGS() -{ - int n = 5; - const char *str = "hello, world!"; - lily_queue_t *q; - - struct lily_mock_arg_t args[] = - { { sizeof(int), &n }, - { sizeof(const char *), &str }, - { sizeof(lily_queue_t *), &q }, - }; - if (LILY_NARGS(args) != 3) return "incorrect argument count!"; - - return 0; -} - - -const char* test_lily_mock_call() -{ - lily_mock_t *m = lily_mock_create(); - - int n = 5; - const char *str = "hello, world!"; - lily_queue_t *q; - - struct lily_mock_arg_t args[] = - { { sizeof(int), &n }, - { sizeof(const char *), &str }, - { sizeof(lily_queue_t *), &q }, - }; - - lily_mock_call(m, args); - n = 16; - str = "hi there"; - lily_mock_call(m, args); - - if (m->n_calls != 2) return "incorrect number of calls registered"; - - int k; const char *s; lily_queue_t *p; - struct lily_mock_arg_t get_args[] = - { { sizeof(int), &k }, - { sizeof(const char *), &s }, - { sizeof(lily_queue_t *), &p }, - }; - lily_get_call(m, get_args, 0); - if (k != 5) return "incorrect int argument 0 registered"; - if (strcmp(s, "hello, world!") != 0) return "incorrect string argument 0 registered"; - if (p != q) return "incorrect pointer argument 0 registered"; - - lily_get_call(m, get_args, 1); - if (k != 16) return "incorrect int argument 1 registered"; - if (strcmp(s, "hi there") != 0) return "incorrect string argument 1 registered"; - if (p != q) return "incorrect pointer argument 1 registered"; - - lily_mock_destroy(m); - return 0; -} diff --git a/tests/tests.h b/tests/tests.h index 9584cac..f1ea9c1 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -7,20 +7,11 @@ int validate_message(const char* received, const char* expected, const char* FILE, unsigned int LINE); // test cases -const char* test_LILY_LOCATION(); -const char* test_assert_msg(); -const char* test_assert_true(); -const char* test_assert_false(); -const char* test_assert_not_null(); -const char* test_assert_null(); -const char* test_assert_ptr_equal(); -const char* test_assert_ptr_not_equal(); -const char* test_assert_int_equal(); -const char* test_assert_int_not_equal(); +#define TESTS \ + X(test_LILY_LOCATION) \ -const char* test_mock_enqueue_dequeue_int(); -const char* test_mock_enqueue_dequeue_heterogenous(); -const char* test_LILY_NARGS(); -const char* test_lily_mock_call(); +#define X(test) const char * test(); +TESTS +#undef X #endif |