diff options
author | sanine-a <sanine.not@pm.me> | 2022-12-14 14:41:43 -0600 |
---|---|---|
committer | sanine-a <sanine.not@pm.me> | 2022-12-14 14:41:43 -0600 |
commit | db7c08e8ccaa7a7faf44a5a7def5db03c24f7934 (patch) | |
tree | 0d4b5406a3703bcb62692798a9171276bba30b71 | |
parent | ebf24e6f40f1c6cd322ee16fd1ad004b845bbc5c (diff) |
add macro counter
-rw-r--r-- | lily-test.h | 168 | ||||
-rw-r--r-- | tests/macro-tests.c | 150 | ||||
-rw-r--r-- | tests/tests.h | 1 |
3 files changed, 318 insertions, 1 deletions
diff --git a/lily-test.h b/lily-test.h index d04b9c2..54f214a 100644 --- a/lily-test.h +++ b/lily-test.h @@ -45,7 +45,7 @@ #ifndef LILY_TEST_H #define LILY_TEST_H -#define LILY_VERSION_MAJOR 1 +#define LILY_VERSION_MAJOR 2 #define LILY_VERSION_MINOR 0 #define LILY_VERSION_PATCH 0 @@ -64,4 +64,170 @@ #define LILY_LOCATION ((__FILE__ ":" STR(__LINE__)) + SOURCE_PATH_SIZE) #endif + +/* counter macros */ +#define LILY_HEX_(x) 0x##x +#define LILY_HEX(x) LILY_HEX_(x) +#define LILY_COUNTER_POS_0 0 +#define LILY_COUNTER_POS_1 0 +#define LILY_COUNTER_POS_2 0 +#define LILY_COUNTER__(a, b, c) 0x##a##b##c +#define LILY_COUNTER_(a, b, c) LILY_COUNTER__(a, b, c) +#define LILY_COUNTER LILY_COUNTER_(LILY_COUNTER_POS_2, LILY_COUNTER_POS_1, LILY_COUNTER_POS_0) + +/* ifdef LILY_TEST_H */ +#else + +/* counter incrementing */ +/* this counter can count up to 4096, but it should be pretty trivial to extend it more or less arbitrarily far */ +#ifdef LILY_COUNTER_INCREMENT +# if LILY_HEX(LILY_COUNTER_POS_0) == 0 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 1 +# elif LILY_HEX(LILY_COUNTER_POS_0) == 1 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 2 +# elif LILY_HEX(LILY_COUNTER_POS_0) == 2 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 3 +# elif LILY_HEX(LILY_COUNTER_POS_0) == 3 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 4 +# elif LILY_HEX(LILY_COUNTER_POS_0) == 4 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 5 +# elif LILY_HEX(LILY_COUNTER_POS_0) == 5 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 6 +# elif LILY_HEX(LILY_COUNTER_POS_0) == 6 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 7 +# elif LILY_HEX(LILY_COUNTER_POS_0) == 7 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 8 +# elif LILY_HEX(LILY_COUNTER_POS_0) == 8 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 9 +# elif LILY_HEX(LILY_COUNTER_POS_0) == 9 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 a +# elif LILY_HEX(LILY_COUNTER_POS_0) == 10 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 b +# elif LILY_HEX(LILY_COUNTER_POS_0) == 11 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 c +# elif LILY_HEX(LILY_COUNTER_POS_0) == 12 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 d +# elif LILY_HEX(LILY_COUNTER_POS_0) == 13 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 e +# elif LILY_HEX(LILY_COUNTER_POS_0) == 14 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 f +# elif LILY_HEX(LILY_COUNTER_POS_0) == 15 +# undef LILY_COUNTER_POS_0 +# define LILY_COUNTER_POS_0 0 +# if LILY_HEX(LILY_COUNTER_POS_1) == 0 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 1 +# elif LILY_HEX(LILY_COUNTER_POS_1) == 1 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 2 +# elif LILY_HEX(LILY_COUNTER_POS_1) == 2 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 3 +# elif LILY_HEX(LILY_COUNTER_POS_1) == 3 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 4 +# elif LILY_HEX(LILY_COUNTER_POS_1) == 4 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 5 +# elif LILY_HEX(LILY_COUNTER_POS_1) == 5 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 6 +# elif LILY_HEX(LILY_COUNTER_POS_1) == 6 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 7 +# elif LILY_HEX(LILY_COUNTER_POS_1) == 7 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 8 +# elif LILY_HEX(LILY_COUNTER_POS_1) == 8 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 9 +# elif LILY_HEX(LILY_COUNTER_POS_1) == 9 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 a +# elif LILY_HEX(LILY_COUNTER_POS_1) == 10 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 b +# elif LILY_HEX(LILY_COUNTER_POS_1) == 11 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 c +# elif LILY_HEX(LILY_COUNTER_POS_1) == 12 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 d +# elif LILY_HEX(LILY_COUNTER_POS_1) == 13 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 e +# elif LILY_HEX(LILY_COUNTER_POS_1) == 14 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 f +# elif LILY_HEX(LILY_COUNTER_POS_1) == 15 +# undef LILY_COUNTER_POS_1 +# define LILY_COUNTER_POS_1 0 +# if LILY_HEX(LILY_COUNTER_POS_2) == 0 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 1 +# elif LILY_HEX(LILY_COUNTER_POS_2) == 1 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 2 +# elif LILY_HEX(LILY_COUNTER_POS_2) == 2 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 3 +# elif LILY_HEX(LILY_COUNTER_POS_2) == 3 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 4 +# elif LILY_HEX(LILY_COUNTER_POS_2) == 4 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 5 +# elif LILY_HEX(LILY_COUNTER_POS_2) == 5 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 6 +# elif LILY_HEX(LILY_COUNTER_POS_2) == 6 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 7 +# elif LILY_HEX(LILY_COUNTER_POS_2) == 7 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 8 +# elif LILY_HEX(LILY_COUNTER_POS_2) == 8 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 9 +# elif LILY_HEX(LILY_COUNTER_POS_2) == 9 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 a +# elif LILY_HEX(LILY_COUNTER_POS_2) == 10 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 b +# elif LILY_HEX(LILY_COUNTER_POS_2) == 11 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 c +# elif LILY_HEX(LILY_COUNTER_POS_2) == 12 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 d +# elif LILY_HEX(LILY_COUNTER_POS_2) == 13 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 e +# elif LILY_HEX(LILY_COUNTER_POS_2) == 14 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 f +# elif LILY_HEX(LILY_COUNTER_POS_2) == 15 +# undef LILY_COUNTER_POS_2 +# define LILY_COUNTER_POS_2 0 +# endif +# endif +# endif +#endif + #endif diff --git a/tests/macro-tests.c b/tests/macro-tests.c index 71e9189..b5f0ac5 100644 --- a/tests/macro-tests.c +++ b/tests/macro-tests.c @@ -10,3 +10,153 @@ const char * test_LILY_LOCATION() } return 0; } + + +const char * test_LILY_COUNTER() +{ + if (LILY_COUNTER != 0) { + return "LILY_COUNTER is not 0!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 1) { + return "LILY_COUNTER is not 1!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 2) { + return "LILY_COUNTER is not 2!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 3) { + return "LILY_COUNTER is not 3!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 4) { + return "LILY_COUNTER is not 4!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 5) { + return "LILY_COUNTER is not 5!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 6) { + return "LILY_COUNTER is not 6!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 7) { + return "LILY_COUNTER is not 7!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 8) { + return "LILY_COUNTER is not 8!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 9) { + return "LILY_COUNTER is not 9!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 10) { + return "LILY_COUNTER is not 10!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 11) { + return "LILY_COUNTER is not 11!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 12) { + return "LILY_COUNTER is not 12!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 13) { + return "LILY_COUNTER is not 13!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 14) { + return "LILY_COUNTER is not 14!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 15) { + return "LILY_COUNTER is not 15!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 16) { + return "LILY_COUNTER is not 16!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 17) { + return "LILY_COUNTER is not 17!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 18) { + return "LILY_COUNTER is not 18!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 19) { + return "LILY_COUNTER is not 19!"; + } + + #define LILY_COUNTER_INCREMENT + #include "lily-test.h" + + if (LILY_COUNTER != 20) { + return "LILY_COUNTER is not 20!"; + } + + return 0; +} diff --git a/tests/tests.h b/tests/tests.h index f1ea9c1..86c9b88 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -9,6 +9,7 @@ int validate_message(const char* received, const char* expected, // test cases #define TESTS \ X(test_LILY_LOCATION) \ + X(test_LILY_COUNTER) \ #define X(test) const char * test(); TESTS |