From 5070426785a69dc0b5bd3bbf1cfe7968329b732c Mon Sep 17 00:00:00 2001 From: sanine Date: Mon, 19 Dec 2022 19:42:05 -0600 Subject: add basic assertion macros --- tests/assertions.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/main.c | 2 ++ tests/tests.h | 2 ++ 3 files changed, 83 insertions(+) create mode 100644 tests/assertions.c (limited to 'tests') diff --git a/tests/assertions.c b/tests/assertions.c new file mode 100644 index 0000000..6ad855a --- /dev/null +++ b/tests/assertions.c @@ -0,0 +1,79 @@ +#include "lily-test.h" +#include "tests.h" + + +const char * test_CHECK() +{ + lily_g.HEAD.next = NULL; + lily_g.TAIL = &(lily_g.HEAD); + lily_g.failed = 0; + CHECK(1 == 0); + CHECK(0 == 0); + CHECK(4 == 3); + + if (lily_g.HEAD.next == NULL) + return "CHECK did not append any failure messages"; + lily_test_msg_t *m = lily_g.HEAD.next; + + if (strcmp(m->msg, "1 == 0") != 0) + return "first assert has wrong message"; + + if (m->next == NULL) + return "only one message appended"; + m = m->next; + + if (strcmp(m->msg, "4 == 3") != 0) + return "second message is incorrect"; + + if (m->next != NULL) + return "more than two messages appended!"; + + if (!lily_g.failed) + return "test did not fail!"; + + lily_msg_destroy(lily_g.HEAD.next); + + return 0; +} + + +int aR, bR; +static void f_test_REQUIRE() +{ + aR = 5; + REQUIRE(2+2 == 5); + bR = 5; +} + +const char * test_REQUIRE() +{ + lily_g.HEAD.next = NULL; + lily_g.TAIL = &(lily_g.HEAD); + lily_g.failed = 0; + aR = 0; bR = 0; + int test_failed = setjmp(lily_g.env); + + if (test_failed) { + if (!lily_g.failed) + return "test did not fail!"; + + if (lily_g.HEAD.next == NULL) + return "test did not generate any messages"; + + if (strcmp(lily_g.HEAD.next->msg, "2+2 == 5") != 0) + return "test generated incorrect message"; + + if (lily_g.HEAD.next->next != NULL) + return "test generated too many messages"; + + if (bR == 5) + return "test kept executing after failed REQUIRE"; + + lily_msg_destroy(lily_g.HEAD.next); + return 0; + } + else { + f_test_REQUIRE(); + return "test function did not longjump!"; + } +} diff --git a/tests/main.c b/tests/main.c index 1598190..f1a6de6 100644 --- a/tests/main.c +++ b/tests/main.c @@ -3,6 +3,8 @@ #include #include +#define LILY_IMPLEMENTATION +#include "lily-test.h" #include "tests.h" int main() diff --git a/tests/tests.h b/tests/tests.h index 481260e..06c35af 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -12,6 +12,8 @@ int validate_message(const char* received, const char* expected, X(test_LILY_COUNTER) \ X(test_LILY_COUNTER_DECREMENT) \ X(test_auto_registration) \ + X(test_CHECK) \ + X(test_REQUIRE) \ #define X(test) const char * test(); TESTS -- cgit v1.2.1