From 9bc220eb2ba77e6a7184d7b63f086e6a268b75e3 Mon Sep 17 00:00:00 2001 From: sanine-a Date: Thu, 15 Dec 2022 11:04:34 -0600 Subject: implement basic auto-registration --- tests/helpers.c | 1 - tests/macro-tests.c | 196 ++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/main.c | 1 - tests/tests.h | 2 + 4 files changed, 198 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/tests/helpers.c b/tests/helpers.c index 37afcae..b20483a 100644 --- a/tests/helpers.c +++ b/tests/helpers.c @@ -1,6 +1,5 @@ #include -#include "lily-test.h" #include "tests.h" void _run_test(const char *name, const char* (*test)()) diff --git a/tests/macro-tests.c b/tests/macro-tests.c index b5f0ac5..81a2932 100644 --- a/tests/macro-tests.c +++ b/tests/macro-tests.c @@ -160,3 +160,199 @@ const char * test_LILY_COUNTER() return 0; } + + +const char * test_LILY_COUNTER_DECREMENT() +{ + if (LILY_COUNTER != 20) + return "LILY_COUNTER is not 20!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 19) + return "LILY_COUNTER is not 19!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 18) + return "LILY_COUNTER is not 18!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 17) + return "LILY_COUNTER is not 17!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 16) + return "LILY_COUNTER is not 16!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 15) + return "LILY_COUNTER is not 15!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 14) + return "LILY_COUNTER is not 14!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 13) + return "LILY_COUNTER is not 13!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 12) + return "LILY_COUNTER is not 12!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 11) + return "LILY_COUNTER is not 11!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 10) + return "LILY_COUNTER is not 10!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 9) + return "LILY_COUNTER is not 9!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 8) + return "LILY_COUNTER is not 8!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 7) + return "LILY_COUNTER is not 7!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 6) + return "LILY_COUNTER is not 6!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 5) + return "LILY_COUNTER is not 5!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 4) + return "LILY_COUNTER is not 4!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 3) + return "LILY_COUNTER is not 3!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 2) + return "LILY_COUNTER is not 2!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 1) + return "LILY_COUNTER is not 1!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 0) + return "LILY_COUNTER is not 0!"; + + #define LILY_COUNTER_DECREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 0xfff) + return "LILY_COUNTER is not 0xfff!"; + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 0) + return "LILY_COUNTER is not 0 again!"; + + return 0; +} + + +LILY_FILE_BEGIN() + + +int array[3] = { 0, 0, 0 }; + +LILY_TEST("set array[0] to 1") +{ + array[0] = 1; +} +#include LILY_PUSH_TEST() + + +LILY_TEST("set array[1] to 2") +{ + array[1] = 2; +} +#include LILY_PUSH_TEST() + + +LILY_TEST("set array[2] to 3") +{ + array[2] = 3; +} +#include LILY_PUSH_TEST() + + +#define LILY_FILE_END +#include LILY_REGISTER_TESTS() + +const char * test_auto_registration() +{ + lily_ll_node_t *n = &LILY_LIST_HEAD; + if (n->next == NULL) { + return "No functions were registered!"; + } + if (n->next == n) { + return "List loops!"; + } + + while (n->next != NULL) { + n->f(); + n = n->next; + } + + if (array[0] != 1) + return "Function 0 didn't run!"; + if (array[1] != 2) + return "Function 1 didn't run!"; + if (array[2] != 3) + return "Function 2 didn't run!"; + + return 0; +} diff --git a/tests/main.c b/tests/main.c index 49c6aa8..1598190 100644 --- a/tests/main.c +++ b/tests/main.c @@ -3,7 +3,6 @@ #include #include -#include "lily-test.h" #include "tests.h" int main() diff --git a/tests/tests.h b/tests/tests.h index 86c9b88..481260e 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -10,6 +10,8 @@ int validate_message(const char* received, const char* expected, #define TESTS \ X(test_LILY_LOCATION) \ X(test_LILY_COUNTER) \ + X(test_LILY_COUNTER_DECREMENT) \ + X(test_auto_registration) \ #define X(test) const char * test(); TESTS -- cgit v1.2.1