diff options
author | Mitya Selivanov <0x7fffff@guattari.ru> | 2022-08-07 02:15:13 +0400 |
---|---|---|
committer | Mitya Selivanov <0x7fffff@guattari.ru> | 2022-08-07 02:15:13 +0400 |
commit | cf4feeb3c297f0ea1f72a2747dc65662dd18175f (patch) | |
tree | 073ffa06c123eaf6003dad4bcdaf06b8e792f2dc | |
parent | 1e2e4791ad9327a6d717d322da0331471914884f (diff) | |
download | kit-cf4feeb3c297f0ea1f72a2747dc65662dd18175f.zip |
[msvc] test
-rw-r--r-- | source/kit_test/test.h | 53 |
1 files changed, 30 insertions, 23 deletions
diff --git a/source/kit_test/test.h b/source/kit_test/test.h index 52a7b99..37abb9f 100644 --- a/source/kit_test/test.h +++ b/source/kit_test/test.h @@ -43,34 +43,41 @@ struct kit_tests_list { extern struct kit_tests_list kit_tests_list; -#ifdef _MSC_VER -# ifdef __cplusplus -# define KIT_EXTERN_C_ extern "C" -# else -# define KIT_EXTERN_C_ -# endif +#define KIT_TEST_CONCAT4_(a, b, c, d) a##b##c##d +#define KIT_TEST_CONCAT3_(a, b, c) KIT_TEST_CONCAT4_(a, b, _, c) -# pragma section(".CRT$XCU", read) -# define KIT_TEST_ON_START_2_(f, p) \ - KIT_EXTERN_C_ static void f(void); \ - __declspec(allocate(".CRT$XCU")) void (*f##_)(void) = f; \ - __pragma(comment(linker, "/include:" p #f "_")) \ - KIT_EXTERN_C_ static void \ - f(void) -# ifdef _WIN64 -# define KIT_TEST_ON_START_(f) KIT_TEST_ON_START_2_(f, "") +#ifdef __cplusplus +# define KIT_TEST_ON_START_(f) \ + static void f(void); \ + static int KIT_TEST_CONCAT3_(_kit_test_init_, __LINE__, \ + f) = (f(), 0); \ + static void f(void) +#else +# ifdef _MSC_VER +# ifdef __cplusplus +# define KIT_EXTERN_C_ extern "C" +# else +# define KIT_EXTERN_C_ +# endif + +# pragma section(".CRT$XCU", read) +# define KIT_TEST_ON_START_2_(f, p) \ + static void f(void); \ + __declspec(allocate(".CRT$XCU")) void (*f##_)(void) = f; \ + __pragma(comment(linker, "/include:" p #f "_")) static void f( \ + void) +# ifdef _WIN64 +# define KIT_TEST_ON_START_(f) KIT_TEST_ON_START_2_(f, "") +# else +# define KIT_TEST_ON_START_(f) KIT_TEST_ON_START_2_(f, "_") +# endif # else -# define KIT_TEST_ON_START_(f) KIT_TEST_ON_START_2_(f, "_") +# define KIT_TEST_ON_START_(f) \ + static void f(void) __attribute__((constructor)); \ + static void f(void) # endif -#else -# define KIT_TEST_ON_START_(f) \ - static void f(void) __attribute__((constructor)); \ - static void f(void) #endif -#define KIT_TEST_CONCAT4_(a, b, c, d) a##b##c##d -#define KIT_TEST_CONCAT3_(a, b, c) KIT_TEST_CONCAT4_(a, b, _, c) - #define KIT_TEST(name) \ static void KIT_TEST_CONCAT3_( \ kit_test_run_, __LINE__, KIT_TEST_FILE)(int, kit_test_report); \ |