@@ -202,18 +202,26 @@ struct jc_test_params_class : public jc_test_base_class {
202202#endif
203203
204204#if !defined(JC_FMT_U64)
205- #if defined(__ANDROID__)
206- #define JC_FMT_U64 " %llu"
207- #define JC_FMT_I64 " %lld"
208- #else
209- #if __cplusplus == 199711L && (defined(__GNUC__) && !defined(__clang__))
210- // For some reason GCC would always warn about the format not working in c++98 (it does though)
211- #pragma GCC diagnostic ignored "-Wformat"
205+ #if defined(__has_include)
206+ #if __has_include(<inttypes.h>)
207+ #include < inttypes.h>
212208 #endif
213- #include < inttypes.h>
214- #define JC_FMT_U64 " %" PRIu64
215- #define JC_FMT_I64 " %" PRId64
216209 #endif
210+
211+ #if !defined(PRId64)
212+ #if defined(_MSC_VER)
213+ #define PRId64 " I64d"
214+ #define PRIi64 " I64i"
215+ #define PRIu64 " I64u"
216+ #define PRIx64 " I64x"
217+ #else
218+ #define PRIu64 " llu"
219+ #define PRIx64 " lld"
220+ #endif
221+ #endif
222+
223+ #define JC_FMT_U64 " %" PRIu64
224+ #define JC_FMT_I64 " %" PRId64
217225#endif
218226
219227#if defined(__x86_64__) || defined(__arm64) || defined(__aarch64__) || defined(__ppc64__) || defined(_WIN64)
@@ -1042,7 +1050,7 @@ template <> char* jc_test_print_value(char* buffer, size_t buffer_len, std::null
10421050
10431051static int jc_get_formatted_test_name (char * buffer, size_t buffer_len, const jc_test_fixture* fixture, const jc_test_entry* test, int usecolor) {
10441052 if (fixture->index != 0xFFFFFFFF )
1045- return JC_TEST_SNPRINTF (buffer, buffer_len, " %s%s%s.%s%s%s/%d " , JC_TEST_COL2 (CYAN,usecolor), fixture->name , JC_TEST_COL2 (DEFAULT,usecolor), JC_TEST_COL2 (YELLOW,usecolor), test->name , JC_TEST_COL2 (DEFAULT,usecolor), fixture->index );
1053+ return JC_TEST_SNPRINTF (buffer, buffer_len, " %s%s%s.%s%s%s/%u " , JC_TEST_COL2 (CYAN,usecolor), fixture->name , JC_TEST_COL2 (DEFAULT,usecolor), JC_TEST_COL2 (YELLOW,usecolor), test->name , JC_TEST_COL2 (DEFAULT,usecolor), fixture->index );
10461054 else
10471055 return JC_TEST_SNPRINTF (buffer, buffer_len, " %s%s%s.%s%s%s" , JC_TEST_COL2 (CYAN,usecolor), fixture->name , JC_TEST_COL2 (DEFAULT,usecolor), JC_TEST_COL2 (YELLOW,usecolor), test->name , JC_TEST_COL2 (DEFAULT,usecolor));
10481056}
@@ -1206,7 +1214,7 @@ void jc_test_print_logger::OnTestSetup(const jc_test_fixture* fixture, const jc_
12061214 str->Appendf (" %s%s%s" , JC_TEST_COL (YELLOW), test->name , JC_TEST_COL (DEFAULT));
12071215
12081216 if (fixture->index != 0xFFFFFFFF ) {
1209- str->Appendf (" /%d " , fixture->index );
1217+ str->Appendf (" /%u " , fixture->index );
12101218 }
12111219 str->Append (" \n " );
12121220
@@ -1219,7 +1227,7 @@ void jc_test_print_logger::OnTestTeardown(const jc_test_fixture* fixture, const
12191227
12201228 str->Appendf (" %s%s%s" , JC_TEST_COL (YELLOW), test->name , JC_TEST_COL (DEFAULT));
12211229 if (fixture->index != 0xFFFFFFFF ) {
1222- str->Appendf (" /%d " , fixture->index );
1230+ str->Appendf (" /%u " , fixture->index );
12231231 }
12241232 if (test->fail )
12251233 str->Appendf (" %s%s%s (" , JC_TEST_COL (FAIL), " FAIL" , JC_TEST_COL (DEFAULT));
@@ -2054,6 +2062,7 @@ INSTANTIATE_TEST_CASE_P(EvenValues, MyParamTest, jc_test_values(2,4,6,8,10));
20542062 * Made sure to compile with highest warning/error levels possible
20552063 *
20562064 * HISTORY:
2065+ * 0.12 2025-09-24 * Added more robust way to check for PRIu64 etc
20572066 * 0.11 2023-10-13 * Added JC_TEST_OUTPUT_FN for customizing log output
20582067 * * Added JC_TEST_USE_PRINTF to choose printf() over write()
20592068 * 0.10 2023-05-19 * Introduced JC_TEXT_LOGGER_CLASS for easier log printing
0 commit comments