summaryrefslogtreecommitdiffstats
path: root/test/unit
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2015-07-23 20:56:25 (GMT)
committerJason Evans <jasone@canonware.com>2015-07-23 20:56:25 (GMT)
commit5fae7dc1b316d0e93aa20cc3aaf050f509aec705 (patch)
treee17384be2f44b4cdffa4748f50f4f30dc7dd9c12 /test/unit
parente475ff16004d9a7c76a01a71e6a52323e6bf1485 (diff)
downloadjemalloc-5fae7dc1b316d0e93aa20cc3aaf050f509aec705.zip
jemalloc-5fae7dc1b316d0e93aa20cc3aaf050f509aec705.tar.gz
jemalloc-5fae7dc1b316d0e93aa20cc3aaf050f509aec705.tar.bz2
Fix MinGW-related portability issues.
Create and use FMT* macros that are equivalent to the PRI* macros that inttypes.h defines. This allows uniform use of the Unix-specific format specifiers, e.g. "%zu", as well as avoiding Windows-specific definitions of e.g. PRIu64. Add ffs()/ffsl() support for compiling with gcc. Extract compatibility definitions of ENOENT, EINVAL, EAGAIN, EPERM, ENOMEM, and ENORANGE into include/msvc_compat/windows_extra.h and use the file for tests as well as for core jemalloc code.
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/SFMT.c8
-rw-r--r--test/unit/atomic.c12
-rw-r--r--test/unit/ckh.c43
-rw-r--r--test/unit/junk.c26
-rw-r--r--test/unit/rtree.c2
5 files changed, 44 insertions, 47 deletions
diff --git a/test/unit/SFMT.c b/test/unit/SFMT.c
index 88b31f6..ba4be87 100644
--- a/test/unit/SFMT.c
+++ b/test/unit/SFMT.c
@@ -1543,13 +1543,13 @@ TEST_BEGIN(test_gen_rand_64)
}
r = gen_rand64(ctx);
assert_u64_eq(r, array64[i],
- "Mismatch at array64[%d]=%"PRIx64", gen=%"PRIx64, i,
+ "Mismatch at array64[%d]=%"FMTx64", gen=%"FMTx64, i,
array64[i], r);
}
for (i = 0; i < COUNT_2; i++) {
r = gen_rand64(ctx);
assert_u64_eq(r, array64_2[i],
- "Mismatch at array64_2[%d]=%"PRIx64" gen=%"PRIx64"", i,
+ "Mismatch at array64_2[%d]=%"FMTx64" gen=%"FMTx64"", i,
array64_2[i], r);
}
fini_gen_rand(ctx);
@@ -1580,13 +1580,13 @@ TEST_BEGIN(test_by_array_64)
}
r = gen_rand64(ctx);
assert_u64_eq(r, array64[i],
- "Mismatch at array64[%d]=%"PRIx64" gen=%"PRIx64, i,
+ "Mismatch at array64[%d]=%"FMTx64" gen=%"FMTx64, i,
array64[i], r);
}
for (i = 0; i < COUNT_2; i++) {
r = gen_rand64(ctx);
assert_u64_eq(r, array64_2[i],
- "Mismatch at array64_2[%d]=%"PRIx64" gen=%"PRIx64, i,
+ "Mismatch at array64_2[%d]=%"FMTx64" gen=%"FMTx64, i,
array64_2[i], r);
}
fini_gen_rand(ctx);
diff --git a/test/unit/atomic.c b/test/unit/atomic.c
index 9217ca9..bdd74f6 100644
--- a/test/unit/atomic.c
+++ b/test/unit/atomic.c
@@ -8,7 +8,7 @@ struct p##_test_s { \
}; \
typedef struct p##_test_s p##_test_t;
-#define TEST_BODY(p, t, tc, ta, PRI) do { \
+#define TEST_BODY(p, t, tc, ta, FMT) do { \
const p##_test_t tests[] = { \
{(t)-1, (t)-1, (t)-2}, \
{(t)-1, (t) 0, (t)-2}, \
@@ -38,7 +38,7 @@ typedef struct p##_test_s p##_test_t;
\
assert_##ta##_eq(atomic_add_##p(&accum, tests[i].x), \
(t)((tc)tests[i].accum0 + (tc)tests[i].x), \
- "i=%u, accum=%"PRI", x=%"PRI, \
+ "i=%u, accum=%"FMT", x=%"FMT, \
i, tests[i].accum0, tests[i].x); \
assert_##ta##_eq(atomic_read_##p(&accum), accum, \
"Erroneous add, i=%u", i); \
@@ -46,7 +46,7 @@ typedef struct p##_test_s p##_test_t;
accum = tests[i].accum0; \
assert_##ta##_eq(atomic_sub_##p(&accum, tests[i].x), \
(t)((tc)tests[i].accum0 - (tc)tests[i].x), \
- "i=%u, accum=%"PRI", x=%"PRI, \
+ "i=%u, accum=%"FMT", x=%"FMT, \
i, tests[i].accum0, tests[i].x); \
assert_##ta##_eq(atomic_read_##p(&accum), accum, \
"Erroneous sub, i=%u", i); \
@@ -72,7 +72,7 @@ TEST_BEGIN(test_atomic_uint64)
#if !(LG_SIZEOF_PTR == 3 || LG_SIZEOF_INT == 3)
test_skip("64-bit atomic operations not supported");
#else
- TEST_BODY(uint64, uint64_t, uint64_t, u64, PRIx64);
+ TEST_BODY(uint64, uint64_t, uint64_t, u64, FMTx64);
#endif
}
TEST_END
@@ -81,7 +81,7 @@ TEST_STRUCT(uint32, uint32_t)
TEST_BEGIN(test_atomic_uint32)
{
- TEST_BODY(uint32, uint32_t, uint32_t, u32, "#"PRIx32);
+ TEST_BODY(uint32, uint32_t, uint32_t, u32, "#"FMTx32);
}
TEST_END
@@ -97,7 +97,7 @@ TEST_STRUCT(z, size_t)
TEST_BEGIN(test_atomic_z)
{
- TEST_BODY(z, size_t, size_t, zu, "#"PRIzx);
+ TEST_BODY(z, size_t, size_t, zu, "#zx");
}
TEST_END
diff --git a/test/unit/ckh.c b/test/unit/ckh.c
index 1f22baf..b117595 100644
--- a/test/unit/ckh.c
+++ b/test/unit/ckh.c
@@ -35,15 +35,15 @@ TEST_BEGIN(test_count_insert_search_remove)
assert_false(ckh_new(tsd, &ckh, 2, ckh_string_hash, ckh_string_keycomp),
"Unexpected ckh_new() error");
assert_zu_eq(ckh_count(&ckh), 0,
- "ckh_count() should return %"PRIzu", but it returned %"PRIzu, ZU(0),
+ "ckh_count() should return %zu, but it returned %zu", ZU(0),
ckh_count(&ckh));
/* Insert. */
for (i = 0; i < sizeof(strs)/sizeof(const char *); i++) {
ckh_insert(tsd, &ckh, strs[i], strs[i]);
assert_zu_eq(ckh_count(&ckh), i+1,
- "ckh_count() should return %"PRIzu", but it returned "
- "%"PRIzu, i+1, ckh_count(&ckh));
+ "ckh_count() should return %zu, but it returned %zu", i+1,
+ ckh_count(&ckh));
}
/* Search. */
@@ -64,10 +64,10 @@ TEST_BEGIN(test_count_insert_search_remove)
ks = (i & 1) ? strs[i] : (const char *)NULL;
vs = (i & 2) ? strs[i] : (const char *)NULL;
- assert_ptr_eq((void *)ks, (void *)k.s,
- "Key mismatch, i=%"PRIzu, i);
- assert_ptr_eq((void *)vs, (void *)v.s,
- "Value mismatch, i=%"PRIzu, i);
+ assert_ptr_eq((void *)ks, (void *)k.s, "Key mismatch, i=%zu",
+ i);
+ assert_ptr_eq((void *)vs, (void *)v.s, "Value mismatch, i=%zu",
+ i);
}
assert_true(ckh_search(&ckh, missing, NULL, NULL),
"Unexpected ckh_search() success");
@@ -90,14 +90,14 @@ TEST_BEGIN(test_count_insert_search_remove)
ks = (i & 1) ? strs[i] : (const char *)NULL;
vs = (i & 2) ? strs[i] : (const char *)NULL;
- assert_ptr_eq((void *)ks, (void *)k.s,
- "Key mismatch, i=%"PRIzu, i);
- assert_ptr_eq((void *)vs, (void *)v.s,
- "Value mismatch, i=%"PRIzu, i);
+ assert_ptr_eq((void *)ks, (void *)k.s, "Key mismatch, i=%zu",
+ i);
+ assert_ptr_eq((void *)vs, (void *)v.s, "Value mismatch, i=%zu",
+ i);
assert_zu_eq(ckh_count(&ckh),
sizeof(strs)/sizeof(const char *) - i - 1,
- "ckh_count() should return %"PRIzu", but it returned "
- "%"PRIzu, sizeof(strs)/sizeof(const char *) - i - 1,
+ "ckh_count() should return %zu, but it returned %zu",
+ sizeof(strs)/sizeof(const char *) - i - 1,
ckh_count(&ckh));
}
@@ -137,8 +137,8 @@ TEST_BEGIN(test_insert_iter_remove)
}
assert_zu_eq(ckh_count(&ckh), NITEMS,
- "ckh_count() should return %"PRIzu", but it returned "
- "%"PRIzu, NITEMS, ckh_count(&ckh));
+ "ckh_count() should return %zu, but it returned %zu",
+ NITEMS, ckh_count(&ckh));
for (j = i + 1; j < NITEMS; j++) {
assert_false(ckh_search(&ckh, p[j], NULL, NULL),
@@ -167,20 +167,17 @@ TEST_BEGIN(test_insert_iter_remove)
for (k = 0; k < NITEMS; k++) {
if (p[k] == q) {
assert_false(seen[k],
- "Item %"PRIzu" already "
- "seen", k);
+ "Item %zu already seen", k);
seen[k] = true;
break;
}
}
}
- for (j = 0; j < i + 1; j++) {
- assert_true(seen[j], "Item %"PRIzu" not seen",
- j);
- }
+ for (j = 0; j < i + 1; j++)
+ assert_true(seen[j], "Item %zu not seen", j);
for (; j < NITEMS; j++)
- assert_false(seen[j], "Item %"PRIzu" seen", j);
+ assert_false(seen[j], "Item %zu seen", j);
}
}
@@ -199,7 +196,7 @@ TEST_BEGIN(test_insert_iter_remove)
}
assert_zu_eq(ckh_count(&ckh), 0,
- "ckh_count() should return %"PRIzu", but it returned %"PRIzu,
+ "ckh_count() should return %zu, but it returned %zu",
ZU(0), ckh_count(&ckh));
ckh_delete(tsd, &ckh);
#undef NITEMS
diff --git a/test/unit/junk.c b/test/unit/junk.c
index 8499d06..733f661 100644
--- a/test/unit/junk.c
+++ b/test/unit/junk.c
@@ -30,8 +30,8 @@ arena_dalloc_junk_small_intercept(void *ptr, arena_bin_info_t *bin_info)
arena_dalloc_junk_small_orig(ptr, bin_info);
for (i = 0; i < bin_info->reg_size; i++) {
assert_c_eq(((char *)ptr)[i], 0x5a,
- "Missing junk fill for byte %"PRIzu"/%"PRIzu" of "
- "deallocated region", i, bin_info->reg_size);
+ "Missing junk fill for byte %zu/%zu of deallocated region",
+ i, bin_info->reg_size);
}
if (ptr == watch_for_junking)
saw_junking = true;
@@ -45,8 +45,8 @@ arena_dalloc_junk_large_intercept(void *ptr, size_t usize)
arena_dalloc_junk_large_orig(ptr, usize);
for (i = 0; i < usize; i++) {
assert_c_eq(((char *)ptr)[i], 0x5a,
- "Missing junk fill for byte %"PRIzu"/%"PRIzu" of "
- "deallocated region", i, usize);
+ "Missing junk fill for byte %zu/%zu of deallocated region",
+ i, usize);
}
if (ptr == watch_for_junking)
saw_junking = true;
@@ -89,18 +89,18 @@ test_junk(size_t sz_min, size_t sz_max)
sz_prev = sz, sz = sallocx(s, 0)) {
if (sz_prev > 0) {
assert_c_eq(s[0], 'a',
- "Previously allocated byte %"PRIzu"/%"PRIzu" is "
- "corrupted", ZU(0), sz_prev);
+ "Previously allocated byte %zu/%zu is corrupted",
+ ZU(0), sz_prev);
assert_c_eq(s[sz_prev-1], 'a',
- "Previously allocated byte %"PRIzu"/%"PRIzu" is "
- "corrupted", sz_prev-1, sz_prev);
+ "Previously allocated byte %zu/%zu is corrupted",
+ sz_prev-1, sz_prev);
}
for (i = sz_prev; i < sz; i++) {
if (opt_junk_alloc) {
assert_c_eq(s[i], 0xa5,
- "Newly allocated byte %"PRIzu"/%"PRIzu
- " isn't junk-filled", i, sz);
+ "Newly allocated byte %zu/%zu isn't "
+ "junk-filled", i, sz);
}
s[i] = 'a';
}
@@ -111,15 +111,15 @@ test_junk(size_t sz_min, size_t sz_max)
assert_ptr_not_null((void *)s,
"Unexpected rallocx() failure");
assert_true(!opt_junk_free || saw_junking,
- "Expected region of size %"PRIzu" to be "
- "junk-filled", sz);
+ "Expected region of size %zu to be junk-filled",
+ sz);
}
}
watch_junking(s);
dallocx(s, 0);
assert_true(!opt_junk_free || saw_junking,
- "Expected region of size %"PRIzu" to be junk-filled", sz);
+ "Expected region of size %zu to be junk-filled", sz);
if (opt_junk_free) {
arena_dalloc_junk_small = arena_dalloc_junk_small_orig;
diff --git a/test/unit/rtree.c b/test/unit/rtree.c
index 3d75bd0..305c08a 100644
--- a/test/unit/rtree.c
+++ b/test/unit/rtree.c
@@ -72,7 +72,7 @@ TEST_BEGIN(test_rtree_bits)
&node, "rtree_get() should return "
"previously set value and ignore "
"insignificant key bits; i=%u, j=%u, k=%u, "
- "set key=%#"PRIxPTR", get key=%#"PRIxPTR, i,
+ "set key=%#"FMTxPTR", get key=%#"FMTxPTR, i,
j, k, keys[j], keys[k]);
}
assert_ptr_null(rtree_get(&rtree,