diff options
Diffstat (limited to 'test/pkmem.cpp')
| -rw-r--r-- | test/pkmem.cpp | 313 |
1 files changed, 174 insertions, 139 deletions
diff --git a/test/pkmem.cpp b/test/pkmem.cpp index 1a6dd8f..98d2dd2 100644 --- a/test/pkmem.cpp +++ b/test/pkmem.cpp @@ -3,7 +3,14 @@ #include "../pkmem.h" -#include <new> +#define PK_IMPL_FUNCINSTR +#include "../pkfuncinstr.h" + +#ifndef PK_MEMORY_FORCE_MALLOC + #define pk_mem_assert(expr) assert(expr) +#else + #define pk_mem_assert(expr) (void)0; +#endif class FreeTest { public: @@ -48,12 +55,12 @@ class FreeTest01 : public FreeTest { virtual ~FreeTest01() {} virtual void ensureState() override { - assert(3 == bkt->lastEmptyBlockIndex); - assert(80 == bkt->head); - assert(bkt->ptr + 00 == ptrs[0]); - assert(bkt->ptr + 64 == ptrs[1]); - assert(bkt->ptr + 16 == ptrs[2]); - assert(bkt->ptr + 8 == ptrs[3]); + pk_mem_assert(3 == bkt->lastEmptyBlockIndex); + pk_mem_assert(80 == bkt->head); + pk_mem_assert(bkt->ptr + 00 == ptrs[0]); + pk_mem_assert(bkt->ptr + 64 == ptrs[1]); + pk_mem_assert(bkt->ptr + 16 == ptrs[2]); + pk_mem_assert(bkt->ptr + 8 == ptrs[3]); } }; @@ -82,20 +89,21 @@ class FreeTest02 : public FreeTest { virtual ~FreeTest02() {} virtual void ensureState() override { - assert(2 == bkt->lastEmptyBlockIndex); - assert(65 == bkt->head); - assert(bkt->ptr + 00 == ptrs[0]); - assert(bkt->ptr + 64 == ptrs[1]); - assert(bkt->ptr + 32 == ptrs[2]); + pk_mem_assert(2 == bkt->lastEmptyBlockIndex); + pk_mem_assert(65 == bkt->head); + pk_mem_assert(bkt->ptr + 00 == ptrs[0]); + pk_mem_assert(bkt->ptr + 64 == ptrs[1]); + pk_mem_assert(bkt->ptr + 32 == ptrs[2]); - assert(bkt->ptr + 19 == bkt->blocks[0].data); - assert(13 == bkt->blocks[0].size); + pk_mem_assert(bkt->ptr + 19 == bkt->blocks[0].data); + pk_mem_assert(13 == bkt->blocks[0].size); - assert(bkt->ptr + 33 == bkt->blocks[1].data); - assert(31 == bkt->blocks[1].size); + pk_mem_assert(bkt->ptr + 33 == bkt->blocks[1].data); + pk_mem_assert(31 == bkt->blocks[1].size); } }; +const char *test_basic_alloc = "test_basic_alloc"; const char *test_misalignment01 = "test_misalignment01"; const char *test_misalignment02 = "test_misalignment02"; const char *test_free_0000 = "test_free_0000"; @@ -113,6 +121,14 @@ const char *test_bucket_count03 = "test_bucket_count03"; const char *test_bucket_count04 = "test_bucket_count04"; const char *test_bucket_count05 = "test_bucket_count05"; +void pk_test_pkmem_spinup(bool init_funcinstr = false) { + if (init_funcinstr) pk_funcinstr_init(); +} +void pk_test_pkmem_teardown() { + pk_funcinstr_teardown(); + pk_memory_teardown_all(); +} + /* static bool expected_exit = false; static bool caught = false; @@ -127,7 +143,7 @@ exit(int code) _exit(code); } } -// assert() calls abort(), handle +// pk_mem_assert() calls abort(), handle void handle_assert_abort(int sig) { @@ -149,14 +165,18 @@ int main(int argc, char *argv[]) int i; // pk_new<T> + pk_test_pkmem_spinup(true); + fprintf(stdout, "[pkmem.cpp] start: %s\n", test_basic_alloc); { char *some_dang_string = pk_new<char>(64); fprintf(stdout, "some_dang_string: %s: %p\n", some_dang_string, (void *)some_dang_string); pk_delete<char>(some_dang_string, 64); } - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); + fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_basic_alloc); // assert misalignment + pk_test_pkmem_spinup(true); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_misalignment01); { pk_membucket *bkt = pk_bucket_create("misalignment", 1024 * 1024, false); @@ -165,21 +185,22 @@ int main(int argc, char *argv[]) pk_new(9, 1, bkt); fprintf(stdout, "lastEmptyBlockIndex: %li\n", bkt->lastEmptyBlockIndex); - assert(1 == bkt->lastEmptyBlockIndex); + pk_mem_assert(1 == bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", bkt->head); - assert(65 == bkt->head); + pk_mem_assert(65 == bkt->head); fprintf(stdout, "blocks[0].data : %p\n", (void *)bkt->blocks[0].data); - assert(bkt->ptr + 10 == bkt->blocks[0].data); + pk_mem_assert(bkt->ptr + 10 == bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", bkt->blocks[0].size); - assert(54 == bkt->blocks[0].size); + pk_mem_assert(54 == bkt->blocks[0].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_misalignment01); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // assert misalignment + blank block test + pk_test_pkmem_spinup(); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_misalignment02); { pk_membucket *bkt = pk_bucket_create("misalignment", 1024 * 1024, false); @@ -188,51 +209,53 @@ int main(int argc, char *argv[]) pk_new(9, 16, bkt); fprintf(stdout, "lastEmptyBlockIndex: %li\n", bkt->lastEmptyBlockIndex); - assert(2 == bkt->lastEmptyBlockIndex); + pk_mem_assert(2 == bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", bkt->head); - assert(65 == bkt->head); + pk_mem_assert(65 == bkt->head); fprintf(stdout, "blocks[0].data : %p\n", (void *)bkt->blocks[0].data); - assert(bkt->ptr + 1 == bkt->blocks[0].data); + pk_mem_assert(bkt->ptr + 1 == bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", bkt->blocks[0].size); - assert(15 == bkt->blocks[0].size); + pk_mem_assert(15 == bkt->blocks[0].size); fprintf(stdout, "blocks[1].data : %p\n", (void *)bkt->blocks[1].data); - assert(bkt->ptr + 25 == bkt->blocks[1].data); + pk_mem_assert(bkt->ptr + 25 == bkt->blocks[1].data); fprintf(stdout, "blocks[1].size : %li\n", bkt->blocks[1].size); - assert(39 == bkt->blocks[1].size); + pk_mem_assert(39 == bkt->blocks[1].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_misalignment02); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // predictable free 0000 + pk_test_pkmem_spinup(true); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_free_0000); { FreeTest01 ft{}; ft.ensureState(); fprintf(stdout, "blocks[0].data : %p\n", (void *)ft.bkt->blocks[0].data); - assert(ft.bkt->ptr + 2 == ft.bkt->blocks[0].data); + pk_mem_assert(ft.bkt->ptr + 2 == ft.bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", ft.bkt->blocks[0].size); - assert(6 == ft.bkt->blocks[0].size); + pk_mem_assert(6 == ft.bkt->blocks[0].size); fprintf(stdout, "blocks[1].data : %p\n", (void *)ft.bkt->blocks[1].data); - assert(ft.bkt->ptr + 12 == ft.bkt->blocks[1].data); + pk_mem_assert(ft.bkt->ptr + 12 == ft.bkt->blocks[1].data); fprintf(stdout, "blocks[1].size : %li\n", ft.bkt->blocks[1].size); - assert(4 == ft.bkt->blocks[1].size); + pk_mem_assert(4 == ft.bkt->blocks[1].size); fprintf(stdout, "blocks[2].data : %p\n", (void *)ft.bkt->blocks[2].data); - assert(ft.bkt->ptr + 32 == ft.bkt->blocks[2].data); + pk_mem_assert(ft.bkt->ptr + 32 == ft.bkt->blocks[2].data); fprintf(stdout, "blocks[2].size : %li\n", ft.bkt->blocks[2].size); - assert(32 == ft.bkt->blocks[2].size); + pk_mem_assert(32 == ft.bkt->blocks[2].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_0000); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // predictable free 1000 + pk_test_pkmem_spinup(); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_free_1000); { size_t expected_head = 80; @@ -246,29 +269,30 @@ int main(int argc, char *argv[]) pk_delete(ft.ptrs[free_index], ft.sz[free_index], ft.bkt); fprintf(stdout, "lastEmptyBlockIndex: %li\n", ft.bkt->lastEmptyBlockIndex); - assert(3 == ft.bkt->lastEmptyBlockIndex); + pk_mem_assert(3 == ft.bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", ft.bkt->head); - assert(expected_head == ft.bkt->head); + pk_mem_assert(expected_head == ft.bkt->head); fprintf(stdout, "blocks[0].data : %p\n", (void *)ft.bkt->blocks[0].data); - assert(ft.bkt->ptr + 0 == ft.bkt->blocks[0].data); + pk_mem_assert(ft.bkt->ptr + 0 == ft.bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", ft.bkt->blocks[0].size); - assert(8 == ft.bkt->blocks[0].size); + pk_mem_assert(8 == ft.bkt->blocks[0].size); fprintf(stdout, "blocks[1].data : %p\n", (void *)ft.bkt->blocks[1].data); - assert(ft.bkt->ptr + 12 == ft.bkt->blocks[1].data); + pk_mem_assert(ft.bkt->ptr + 12 == ft.bkt->blocks[1].data); fprintf(stdout, "blocks[1].size : %li\n", ft.bkt->blocks[1].size); - assert(4 == ft.bkt->blocks[1].size); + pk_mem_assert(4 == ft.bkt->blocks[1].size); fprintf(stdout, "blocks[2].data : %p\n", (void *)ft.bkt->blocks[2].data); - assert(ft.bkt->ptr + 32 == ft.bkt->blocks[2].data); + pk_mem_assert(ft.bkt->ptr + 32 == ft.bkt->blocks[2].data); fprintf(stdout, "blocks[2].size : %li\n", ft.bkt->blocks[2].size); - assert(32 == ft.bkt->blocks[2].size); + pk_mem_assert(32 == ft.bkt->blocks[2].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_1000); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // predictable free 0100 + pk_test_pkmem_spinup(); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_free_0100); { size_t expected_head = 32; @@ -282,24 +306,25 @@ int main(int argc, char *argv[]) pk_delete(ft.ptrs[free_index], ft.sz[free_index], ft.bkt); fprintf(stdout, "lastEmptyBlockIndex: %li\n", ft.bkt->lastEmptyBlockIndex); - assert(2 == ft.bkt->lastEmptyBlockIndex); + pk_mem_assert(2 == ft.bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", ft.bkt->head); - assert(expected_head == ft.bkt->head); + pk_mem_assert(expected_head == ft.bkt->head); fprintf(stdout, "blocks[0].data : %p\n", (void *)ft.bkt->blocks[0].data); - assert(ft.bkt->ptr + 2 == ft.bkt->blocks[0].data); + pk_mem_assert(ft.bkt->ptr + 2 == ft.bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", ft.bkt->blocks[0].size); - assert(6 == ft.bkt->blocks[0].size); + pk_mem_assert(6 == ft.bkt->blocks[0].size); fprintf(stdout, "blocks[1].data : %p\n", (void *)ft.bkt->blocks[1].data); - assert(ft.bkt->ptr + 12 == ft.bkt->blocks[1].data); + pk_mem_assert(ft.bkt->ptr + 12 == ft.bkt->blocks[1].data); fprintf(stdout, "blocks[1].size : %li\n", ft.bkt->blocks[1].size); - assert(4 == ft.bkt->blocks[1].size); + pk_mem_assert(4 == ft.bkt->blocks[1].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_0100); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // predictable free 0010 + pk_test_pkmem_spinup(); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_free_0010); { size_t expected_head = 80; @@ -314,24 +339,25 @@ int main(int argc, char *argv[]) pk_delete(ft.ptrs[free_index], ft.sz[free_index], ft.bkt); fprintf(stdout, "lastEmptyBlockIndex: %li\n", ft.bkt->lastEmptyBlockIndex); - assert(2 == ft.bkt->lastEmptyBlockIndex); + pk_mem_assert(2 == ft.bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", ft.bkt->head); - assert(expected_head == ft.bkt->head); + pk_mem_assert(expected_head == ft.bkt->head); fprintf(stdout, "blocks[0].data : %p\n", (void *)ft.bkt->blocks[0].data); - assert(ft.bkt->ptr + 2 == ft.bkt->blocks[0].data); + pk_mem_assert(ft.bkt->ptr + 2 == ft.bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", ft.bkt->blocks[0].size); - assert(6 == ft.bkt->blocks[0].size); + pk_mem_assert(6 == ft.bkt->blocks[0].size); fprintf(stdout, "blocks[1].data : %p\n", (void *)ft.bkt->blocks[1].data); - assert(ft.bkt->ptr + 12 == ft.bkt->blocks[1].data); + pk_mem_assert(ft.bkt->ptr + 12 == ft.bkt->blocks[1].data); fprintf(stdout, "blocks[1].size : %li\n", ft.bkt->blocks[1].size); - assert(52 == ft.bkt->blocks[1].size); + pk_mem_assert(52 == ft.bkt->blocks[1].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_0010); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // predictable free 0001 + pk_test_pkmem_spinup(); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_free_0001); { size_t expected_head = 80; @@ -346,24 +372,25 @@ int main(int argc, char *argv[]) pk_delete(ft.ptrs[free_index], ft.sz[free_index], ft.bkt); fprintf(stdout, "lastEmptyBlockIndex: %li\n", ft.bkt->lastEmptyBlockIndex); - assert(2 == ft.bkt->lastEmptyBlockIndex); + pk_mem_assert(2 == ft.bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", ft.bkt->head); - assert(expected_head == ft.bkt->head); + pk_mem_assert(expected_head == ft.bkt->head); fprintf(stdout, "blocks[0].data : %p\n", (void *)ft.bkt->blocks[0].data); - assert(ft.bkt->ptr + 2 == ft.bkt->blocks[0].data); + pk_mem_assert(ft.bkt->ptr + 2 == ft.bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", ft.bkt->blocks[0].size); - assert(14 == ft.bkt->blocks[0].size); + pk_mem_assert(14 == ft.bkt->blocks[0].size); fprintf(stdout, "blocks[1].data : %p\n", (void *)ft.bkt->blocks[1].data); - assert(ft.bkt->ptr + 32 == ft.bkt->blocks[1].data); + pk_mem_assert(ft.bkt->ptr + 32 == ft.bkt->blocks[1].data); fprintf(stdout, "blocks[1].size : %li\n", ft.bkt->blocks[1].size); - assert(32 == ft.bkt->blocks[1].size); + pk_mem_assert(32 == ft.bkt->blocks[1].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_0001); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // ensure free touching after only + pk_test_pkmem_spinup(); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_free_after); { FreeTest02 ft{}; @@ -374,24 +401,25 @@ int main(int argc, char *argv[]) pk_delete(ft.ptrs[0], ft.sz[0], ft.bkt); fprintf(stdout, "lastEmptyBlockIndex: %li\n", ft.bkt->lastEmptyBlockIndex); - assert(2 == ft.bkt->lastEmptyBlockIndex); + pk_mem_assert(2 == ft.bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", ft.bkt->head); - assert(65 == ft.bkt->head); + pk_mem_assert(65 == ft.bkt->head); fprintf(stdout, "blocks[0].data : %p\n", (void *)ft.bkt->blocks[0].data); - assert(ft.bkt->ptr + 0 == ft.bkt->blocks[0].data); + pk_mem_assert(ft.bkt->ptr + 0 == ft.bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", ft.bkt->blocks[0].size); - assert(32 == ft.bkt->blocks[0].size); + pk_mem_assert(32 == ft.bkt->blocks[0].size); fprintf(stdout, "blocks[1].data : %p\n", (void *)ft.bkt->blocks[1].data); - assert(ft.bkt->ptr + 33 == ft.bkt->blocks[1].data); + pk_mem_assert(ft.bkt->ptr + 33 == ft.bkt->blocks[1].data); fprintf(stdout, "blocks[1].size : %li\n", ft.bkt->blocks[1].size); - assert(31 == ft.bkt->blocks[1].size); + pk_mem_assert(31 == ft.bkt->blocks[1].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_after); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // ensure free touching before only + pk_test_pkmem_spinup(); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_free_before); { FreeTest02 ft{}; @@ -411,22 +439,22 @@ int main(int argc, char *argv[]) void *ptr5 = pk_new( 1, 1, ft.bkt); fprintf(stdout, "lastEmptyBlockIndex: %li\n", ft.bkt->lastEmptyBlockIndex); - assert(0 == ft.bkt->lastEmptyBlockIndex); + pk_mem_assert(0 == ft.bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", ft.bkt->head); - assert(66 == ft.bkt->head); + pk_mem_assert(66 == ft.bkt->head); fprintf(stdout, "ptr0 : %p\n", ft.ptrs[0]); - assert(ft.bkt->ptr + 0 == ft.ptrs[0]); + pk_mem_assert(ft.bkt->ptr + 0 == ft.ptrs[0]); fprintf(stdout, "ptr3 : %p\n", ptr3); - assert(ft.bkt->ptr + 19 == ptr3); + pk_mem_assert(ft.bkt->ptr + 19 == ptr3); fprintf(stdout, "ptr2 : %p\n", ft.ptrs[2]); - assert(ft.bkt->ptr + 32 == ft.ptrs[2]); + pk_mem_assert(ft.bkt->ptr + 32 == ft.ptrs[2]); fprintf(stdout, "ptr4 : %p\n", ptr4); - assert(ft.bkt->ptr + 33 == ptr4); + pk_mem_assert(ft.bkt->ptr + 33 == ptr4); fprintf(stdout, "ptr1 : %p\n", ft.ptrs[1]); - assert(ft.bkt->ptr + 64 == ft.ptrs[1]); + pk_mem_assert(ft.bkt->ptr + 64 == ft.ptrs[1]); fprintf(stdout, "ptr5 : %p\n", ptr5); - assert(ft.bkt->ptr + 65 == ptr5); + pk_mem_assert(ft.bkt->ptr + 65 == ptr5); /* free [19-31] [00-18] (19) ptr0 @@ -441,27 +469,27 @@ int main(int argc, char *argv[]) ptr3 = nullptr; fprintf(stdout, "lastEmptyBlockIndex: %li\n", ft.bkt->lastEmptyBlockIndex); - assert(1 == ft.bkt->lastEmptyBlockIndex); + pk_mem_assert(1 == ft.bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", ft.bkt->head); - assert(66 == ft.bkt->head); + pk_mem_assert(66 == ft.bkt->head); fprintf(stdout, "ptr0 : %p\n", ft.ptrs[0]); - assert(ft.bkt->ptr + 0 == ft.ptrs[0]); + pk_mem_assert(ft.bkt->ptr + 0 == ft.ptrs[0]); fprintf(stdout, "ptr3 : %p\n", ptr3); - assert(nullptr == ptr3); + pk_mem_assert(nullptr == ptr3); fprintf(stdout, "ptr2 : %p\n", ft.ptrs[2]); - assert(ft.bkt->ptr + 32 == ft.ptrs[2]); + pk_mem_assert(ft.bkt->ptr + 32 == ft.ptrs[2]); fprintf(stdout, "ptr4 : %p\n", ptr4); - assert(ft.bkt->ptr + 33 == ptr4); + pk_mem_assert(ft.bkt->ptr + 33 == ptr4); fprintf(stdout, "ptr1 : %p\n", ft.ptrs[1]); - assert(ft.bkt->ptr + 64 == ft.ptrs[1]); + pk_mem_assert(ft.bkt->ptr + 64 == ft.ptrs[1]); fprintf(stdout, "ptr5 : %p\n", ptr5); - assert(ft.bkt->ptr + 65 == ptr5); + pk_mem_assert(ft.bkt->ptr + 65 == ptr5); fprintf(stdout, "blocks[0].data : %p\n", (void *)ft.bkt->blocks[0].data); - assert(ft.bkt->ptr + 19 == ft.bkt->blocks[0].data); + pk_mem_assert(ft.bkt->ptr + 19 == ft.bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", ft.bkt->blocks[0].size); - assert(13 == ft.bkt->blocks[0].size); + pk_mem_assert(13 == ft.bkt->blocks[0].size); /* free [32] which gets absorbed into 19-32 [19-32] (13) memblock @@ -471,32 +499,33 @@ int main(int argc, char *argv[]) ft.ptrs[2] = nullptr; fprintf(stdout, "lastEmptyBlockIndex: %li\n", ft.bkt->lastEmptyBlockIndex); - assert(1 == ft.bkt->lastEmptyBlockIndex); + pk_mem_assert(1 == ft.bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", ft.bkt->head); - assert(66 == ft.bkt->head); + pk_mem_assert(66 == ft.bkt->head); fprintf(stdout, "ptr0 : %p\n", ft.ptrs[0]); - assert(ft.bkt->ptr + 0 == ft.ptrs[0]); + pk_mem_assert(ft.bkt->ptr + 0 == ft.ptrs[0]); fprintf(stdout, "ptr3 : %p\n", ptr3); - assert(nullptr == ptr3); + pk_mem_assert(nullptr == ptr3); fprintf(stdout, "ptr2 : %p\n", ft.ptrs[2]); - assert(nullptr == ft.ptrs[2]); + pk_mem_assert(nullptr == ft.ptrs[2]); fprintf(stdout, "ptr4 : %p\n", ptr4); - assert(ft.bkt->ptr + 33 == ptr4); + pk_mem_assert(ft.bkt->ptr + 33 == ptr4); fprintf(stdout, "ptr1 : %p\n", ft.ptrs[1]); - assert(ft.bkt->ptr + 64 == ft.ptrs[1]); + pk_mem_assert(ft.bkt->ptr + 64 == ft.ptrs[1]); fprintf(stdout, "ptr5 : %p\n", ptr5); - assert(ft.bkt->ptr + 65 == ptr5); + pk_mem_assert(ft.bkt->ptr + 65 == ptr5); fprintf(stdout, "blocks[0].data : %p\n", (void *)ft.bkt->blocks[0].data); - assert(ft.bkt->ptr + 19 == ft.bkt->blocks[0].data); + pk_mem_assert(ft.bkt->ptr + 19 == ft.bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", ft.bkt->blocks[0].size); - assert(14 == ft.bkt->blocks[0].size); + pk_mem_assert(14 == ft.bkt->blocks[0].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_before); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // ensure free touching before and after + pk_test_pkmem_spinup(); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_free_between); { FreeTest02 ft{}; @@ -508,25 +537,26 @@ int main(int argc, char *argv[]) ft.ptrs[2] = nullptr; fprintf(stdout, "lastEmptyBlockIndex: %li\n", ft.bkt->lastEmptyBlockIndex); - assert(1 == ft.bkt->lastEmptyBlockIndex); + pk_mem_assert(1 == ft.bkt->lastEmptyBlockIndex); fprintf(stdout, "head : %li\n", ft.bkt->head); - assert(65 == ft.bkt->head); + pk_mem_assert(65 == ft.bkt->head); fprintf(stdout, "ptr0 : %p\n", ft.ptrs[0]); - assert(ft.bkt->ptr + 0 == ft.ptrs[0]); + pk_mem_assert(ft.bkt->ptr + 0 == ft.ptrs[0]); fprintf(stdout, "ptr2 : %p\n", ft.ptrs[2]); - assert(nullptr == ft.ptrs[2]); + pk_mem_assert(nullptr == ft.ptrs[2]); fprintf(stdout, "ptr1 : %p\n", ft.ptrs[1]); - assert(ft.bkt->ptr + 64 == ft.ptrs[1]); + pk_mem_assert(ft.bkt->ptr + 64 == ft.ptrs[1]); fprintf(stdout, "blocks[0].data : %p\n", (void *)ft.bkt->blocks[0].data); - assert(ft.bkt->ptr + 19 == ft.bkt->blocks[0].data); + pk_mem_assert(ft.bkt->ptr + 19 == ft.bkt->blocks[0].data); fprintf(stdout, "blocks[0].size : %li\n", ft.bkt->blocks[0].size); - assert(45 == ft.bkt->blocks[0].size); + pk_mem_assert(45 == ft.bkt->blocks[0].size); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_between); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); + pk_test_pkmem_spinup(); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_alloc_strings); { size_t diff; @@ -545,62 +575,65 @@ int main(int argc, char *argv[]) diff = str1 - bkt->ptr; fprintf(stdout, "str1 - ptr : %zu\n", diff); - assert(diff == 0); + pk_mem_assert(diff == 0); diff = str2 - str1; fprintf(stdout, "str2 - str1 : %zu\n", diff); - assert(diff == 16); + pk_mem_assert(diff == 16); diff = str2 - bkt->ptr; fprintf(stdout, "str2 - ptr : %zu\n", diff); - assert(diff == 16); + pk_mem_assert(diff == 16); diff = (char *)handle1 - str1; fprintf(stdout, "handle1 - str1 : %zu\n", diff); - assert(diff == 32); + pk_mem_assert(diff == 32); diff = (char *)handle2 - (char *)handle1; fprintf(stdout, "handle2 - handle1 : %zu\n", diff); - assert(diff == 8); + pk_mem_assert(diff == 8); pk_bucket_destroy(bkt); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_alloc_strings); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // assert bucket count + pk_test_pkmem_spinup(false); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_bucket_count01); do { for (i = 0; i < PK_MAX_BUCKET_COUNT; ++i) { pk_membucket *bkt = pk_bucket_create("lol", 1024, false); - assert(bkt != nullptr); + pk_mem_assert(bkt != nullptr); (void)bkt; } pk_membucket *bkt = pk_bucket_create("lol", 1024, false); - assert(bkt == nullptr); + pk_mem_assert(bkt == nullptr); } while(false); fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_bucket_count01); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // assert no buckets available on pk_new with full memory + pk_test_pkmem_spinup(false); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_bucket_count02); do { for (i = 0; i < PK_MAX_BUCKET_COUNT; ++i) { pk_membucket *bkt = pk_bucket_create("lol2", 1024, false); char *asdf = pk_new<char>(768, bkt); - assert(asdf != nullptr); + pk_mem_assert(asdf != nullptr); } char *asdf = pk_new<char>(768); - assert(asdf == nullptr); + pk_mem_assert(asdf == nullptr); } while(false); fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_bucket_count02); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); // assert no buckets available on pk_new with full memory + pk_test_pkmem_spinup(false); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_bucket_count03); do { @@ -608,15 +641,16 @@ int main(int argc, char *argv[]) for (i = 0; i < PK_MAX_BUCKET_COUNT; ++i) { bkt = pk_bucket_create("lol3", 1024, false); char *asdf = pk_new<char>(768, bkt); - assert(asdf != nullptr); + pk_mem_assert(asdf != nullptr); } char *asdf = pk_new<char>(768, bkt); - assert(asdf == nullptr); + pk_mem_assert(asdf == nullptr); } while(false); fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_bucket_count03); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); + pk_test_pkmem_spinup(false); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_bucket_count04); { pk_membucket *bkt1 = pk_bucket_create("bucket1", 1024, false); @@ -625,36 +659,37 @@ int main(int argc, char *argv[]) pk_membucket *bkt4 = pk_bucket_create("bucket4", 1024, false); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(4 == pk_bucket_head); + pk_mem_assert(4 == pk_bucket_head); pk_bucket_destroy(bkt4); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(3 == pk_bucket_head); + pk_mem_assert(3 == pk_bucket_head); pk_bucket_destroy(bkt3); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(2 == pk_bucket_head); + pk_mem_assert(2 == pk_bucket_head); pk_bucket_destroy(bkt2); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(1 == pk_bucket_head); + pk_mem_assert(1 == pk_bucket_head); pk_bucket_destroy(bkt1); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(0 == pk_bucket_head); + pk_mem_assert(0 == pk_bucket_head); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_bucket_count04); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); /* 2025-01-06 JCB * buckets are stored in an array. * pk_bucket_head is only an *indicator* of how many buckets have been * created total, and the index of the next available. */ + pk_test_pkmem_spinup(false); fprintf(stdout, "[pkmem.cpp] start: %s\n", test_bucket_count05); { pk_membucket *bkt1 = pk_bucket_create("bucket1", 1024, false); @@ -663,30 +698,30 @@ int main(int argc, char *argv[]) pk_membucket *bkt4 = pk_bucket_create("bucket4", 1024, false); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(4 == pk_bucket_head); + pk_mem_assert(4 == pk_bucket_head); pk_bucket_destroy(bkt1); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(4 == pk_bucket_head); + pk_mem_assert(4 == pk_bucket_head); pk_bucket_destroy(bkt2); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(4 == pk_bucket_head); + pk_mem_assert(4 == pk_bucket_head); pk_bucket_destroy(bkt3); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(4 == pk_bucket_head); + pk_mem_assert(4 == pk_bucket_head); pk_bucket_destroy(bkt4); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(3 == pk_bucket_head); + pk_mem_assert(3 == pk_bucket_head); pk_memory_flush(); fprintf(stdout, "pk_bucket_head: %li\n", pk_bucket_head); - assert(0 == pk_bucket_head); + pk_mem_assert(0 == pk_bucket_head); } fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_bucket_count05); - pk_memory_teardown_all(); + pk_test_pkmem_teardown(); return 0; } |
