2a83ed0284
Refactor tests to use explicit testing assertions, rather than diff'ing test output. This makes the test code a bit shorter, more explicitly encodes testing intent, and makes test failure diagnosis more straightforward.
46 lines
993 B
C
46 lines
993 B
C
#include "test/jemalloc_test.h"
|
|
|
|
TEST_BEGIN(test_mremap)
|
|
{
|
|
int err;
|
|
size_t sz, lg_chunk, chunksize, i;
|
|
char *p, *q;
|
|
|
|
sz = sizeof(lg_chunk);
|
|
err = mallctl("opt.lg_chunk", &lg_chunk, &sz, NULL, 0);
|
|
assert_d_eq(err, 0, "Error in mallctl(): %s", strerror(err));
|
|
chunksize = ((size_t)1U) << lg_chunk;
|
|
|
|
p = (char *)malloc(chunksize);
|
|
assert_ptr_not_null(p, "malloc(%zu) --> %p", chunksize, p);
|
|
memset(p, 'a', chunksize);
|
|
|
|
q = (char *)realloc(p, chunksize * 2);
|
|
assert_ptr_not_null(q, "realloc(%p, %zu) --> %p", p, chunksize * 2,
|
|
q);
|
|
for (i = 0; i < chunksize; i++) {
|
|
assert_c_eq(q[i], 'a',
|
|
"realloc() should preserve existing bytes across copies");
|
|
}
|
|
|
|
p = q;
|
|
|
|
q = (char *)realloc(p, chunksize);
|
|
assert_ptr_not_null(q, "realloc(%p, %zu) --> %p", p, chunksize, q);
|
|
for (i = 0; i < chunksize; i++) {
|
|
assert_c_eq(q[i], 'a',
|
|
"realloc() should preserve existing bytes across copies");
|
|
}
|
|
|
|
free(q);
|
|
}
|
|
TEST_END
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
|
|
return (test(
|
|
test_mremap));
|
|
}
|