| @@ -28,7 +28,10 @@ | |||||
| #define WEAK | #define WEAK | ||||
| #endif | #endif | ||||
| #ifndef __MSC_VER | |||||
| #include <inttypes.h> /* intmax_t, uintmax_t, PRI* */ | #include <inttypes.h> /* intmax_t, uintmax_t, PRI* */ | ||||
| #endif | |||||
| #include <stddef.h> /* size_t */ | #include <stddef.h> /* size_t */ | ||||
| typedef void (*SetupFunc)(void*); | typedef void (*SetupFunc)(void*); | ||||
| @@ -72,6 +75,13 @@ struct ctest { | |||||
| #define __CTEST_NO_TIME | #define __CTEST_NO_TIME | ||||
| #define CTEST_NO_COLORS | #define CTEST_NO_COLORS | ||||
| #if __MSC_VER >= 1500 | |||||
| #include <inttypes.h> | |||||
| #else | |||||
| #include <stdint.h> | |||||
| #define CTEST_NO_INTTYPES | |||||
| #endif | |||||
| #ifndef CTEST_ADD_TESTS_MANUALLY | #ifndef CTEST_ADD_TESTS_MANUALLY | ||||
| #pragma section(".ctest$a") | #pragma section(".ctest$a") | ||||
| #pragma section(".ctest$u") | #pragma section(".ctest$u") | ||||
| @@ -480,11 +490,19 @@ void assert_data(const unsigned char* exp, size_t expsize, | |||||
| const char* caller, int line) { | const char* caller, int line) { | ||||
| size_t i; | size_t i; | ||||
| if (expsize != realsize) { | if (expsize != realsize) { | ||||
| #ifndef CTEST_NO_INTTYPES | |||||
| CTEST_ERR("%s:%d expected %" PRIuMAX " bytes, got %" PRIuMAX, caller, line, (uintmax_t) expsize, (uintmax_t) realsize); | CTEST_ERR("%s:%d expected %" PRIuMAX " bytes, got %" PRIuMAX, caller, line, (uintmax_t) expsize, (uintmax_t) realsize); | ||||
| #else | |||||
| CTEST_ERR("%s:%d expected %u bytes, got %u", caller, line, (uintmax_t) expsize, (uintmax_t) realsize); | |||||
| #endif | |||||
| } | } | ||||
| for (i=0; i<expsize; i++) { | for (i=0; i<expsize; i++) { | ||||
| if (exp[i] != real[i]) { | if (exp[i] != real[i]) { | ||||
| #ifndef CTEST_NO_INTTYPES | |||||
| CTEST_ERR("%s:%d expected 0x%02x at offset %" PRIuMAX " got 0x%02x", | CTEST_ERR("%s:%d expected 0x%02x at offset %" PRIuMAX " got 0x%02x", | ||||
| #else | |||||
| CTEST_ERR("%s:%d expected 0x%02x at offset %u got 0x%02x", | |||||
| #endif | |||||
| caller, line, exp[i], (uintmax_t) i, real[i]); | caller, line, exp[i], (uintmax_t) i, real[i]); | ||||
| } | } | ||||
| } | } | ||||
| @@ -492,31 +510,51 @@ void assert_data(const unsigned char* exp, size_t expsize, | |||||
| void assert_equal(intmax_t exp, intmax_t real, const char* caller, int line) { | void assert_equal(intmax_t exp, intmax_t real, const char* caller, int line) { | ||||
| if (exp != real) { | if (exp != real) { | ||||
| #ifndef CTEST_NO_INTTYPES | |||||
| CTEST_ERR("%s:%d expected %" PRIdMAX ", got %" PRIdMAX, caller, line, exp, real); | CTEST_ERR("%s:%d expected %" PRIdMAX ", got %" PRIdMAX, caller, line, exp, real); | ||||
| #else | |||||
| CTEST_ERR("%s:%d expected %d, got %d", caller, line, exp, real); | |||||
| #endif | |||||
| } | } | ||||
| } | } | ||||
| void assert_equal_u(uintmax_t exp, uintmax_t real, const char* caller, int line) { | void assert_equal_u(uintmax_t exp, uintmax_t real, const char* caller, int line) { | ||||
| if (exp != real) { | if (exp != real) { | ||||
| #ifndef CTEST_NO_INTTYPES | |||||
| CTEST_ERR("%s:%d expected %" PRIuMAX ", got %" PRIuMAX, caller, line, exp, real); | CTEST_ERR("%s:%d expected %" PRIuMAX ", got %" PRIuMAX, caller, line, exp, real); | ||||
| #else | |||||
| CTEST_ERR("%s:%d expected %u, got %u", caller, line, exp, real); | |||||
| #endif | |||||
| } | } | ||||
| } | } | ||||
| void assert_not_equal(intmax_t exp, intmax_t real, const char* caller, int line) { | void assert_not_equal(intmax_t exp, intmax_t real, const char* caller, int line) { | ||||
| if ((exp) == (real)) { | if ((exp) == (real)) { | ||||
| #ifndef CTEST_NO_INTTYPES | |||||
| CTEST_ERR("%s:%d should not be %" PRIdMAX, caller, line, real); | CTEST_ERR("%s:%d should not be %" PRIdMAX, caller, line, real); | ||||
| #else | |||||
| CTEST_ERR("%s:%d should not be %d", caller, line, real); | |||||
| #endif | |||||
| } | } | ||||
| } | } | ||||
| void assert_not_equal_u(uintmax_t exp, uintmax_t real, const char* caller, int line) { | void assert_not_equal_u(uintmax_t exp, uintmax_t real, const char* caller, int line) { | ||||
| if ((exp) == (real)) { | if ((exp) == (real)) { | ||||
| #ifndef CTEST_NO_INTTYPES | |||||
| CTEST_ERR("%s:%d should not be %" PRIuMAX, caller, line, real); | CTEST_ERR("%s:%d should not be %" PRIuMAX, caller, line, real); | ||||
| #else | |||||
| CTEST_ERR("%s:%d should not be %u", caller, line, real); | |||||
| #endif | |||||
| } | } | ||||
| } | } | ||||
| void assert_interval(intmax_t exp1, intmax_t exp2, intmax_t real, const char* caller, int line) { | void assert_interval(intmax_t exp1, intmax_t exp2, intmax_t real, const char* caller, int line) { | ||||
| if (real < exp1 || real > exp2) { | if (real < exp1 || real > exp2) { | ||||
| #ifndef CTEST_NO_INTTYPES | |||||
| CTEST_ERR("%s:%d expected %" PRIdMAX "-%" PRIdMAX ", got %" PRIdMAX, caller, line, exp1, exp2, real); | CTEST_ERR("%s:%d expected %" PRIdMAX "-%" PRIdMAX ", got %" PRIdMAX, caller, line, exp1, exp2, real); | ||||
| #else | |||||
| CTEST_ERR("%s:%d expected %d-%d, got %d", caller, line, exp1, exp2, real); | |||||
| #endif | |||||
| } | } | ||||
| } | } | ||||