#ifndef CORE_TEST_H #define CORE_TEST_H #include "core/utils/Types.h" void coreFinalizeTests(void); #define CORE_TEST_ARGS const char *file, int line #define CORE_TEST_FUNCTION(name, type) \ bool coreTest##name(CORE_TEST_ARGS, type wanted, type actual) CORE_TEST_FUNCTION(Int, int); CORE_TEST_FUNCTION(U64, u64); CORE_TEST_FUNCTION(Size, size_t); CORE_TEST_FUNCTION(Bool, bool); CORE_TEST_FUNCTION(String, const char*); bool coreTestFloat(CORE_TEST_ARGS, float wanted, float actual, float error); bool coreTestNull(CORE_TEST_ARGS, const void* p); bool coreTestNotNull(CORE_TEST_ARGS, const void* p); #define CORE_TEST(wanted, actual, name) \ coreTest##name(__FILE__, __LINE__, wanted, actual) #define CORE_TEST_FLOAT(wanted, actual, error) \ coreTestFloat(__FILE__, __LINE__, wanted, actual, error) #define CORE_TEST_BOOL(wanted, actual) CORE_TEST(wanted, actual, Bool) #define CORE_TEST_INT(wanted, actual) CORE_TEST(wanted, actual, Int) #define CORE_TEST_U64(wanted, actual) CORE_TEST(wanted, actual, U64) #define CORE_TEST_SIZE(wanted, actual) CORE_TEST(wanted, actual, Size) #define CORE_TEST_STRING(wanted, actual) CORE_TEST(wanted, actual, String) #define CORE_TEST_FALSE(actual) CORE_TEST(false, actual, Bool) #define CORE_TEST_TRUE(actual) CORE_TEST(true, actual, Bool) #define CORE_TEST_NULL(actual) coreTestNull(__FILE__, __LINE__, actual) #define CORE_TEST_NOT_NULL(actual) coreTestNotNull(__FILE__, __LINE__, actual) #endif