diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-05-07 13:24:13 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-05-07 13:24:13 -0400 |
| commit | 86b9b350c6344e78f0d22bcd054e568130a40b08 (patch) | |
| tree | 7ae2e0938caa4221ba92b7985d8781d4b49f3966 /test | |
| parent | ac9a82de4c0cfa67c0c32e814556aa83434a46c7 (diff) | |
pkmem: return null when out of space
Diffstat (limited to 'test')
| -rw-r--r-- | test/pkmem.cpp | 126 |
1 files changed, 54 insertions, 72 deletions
diff --git a/test/pkmem.cpp b/test/pkmem.cpp index 2e3b6f2..ffc24b3 100644 --- a/test/pkmem.cpp +++ b/test/pkmem.cpp @@ -1,9 +1,7 @@ +#include <new> #include "../pkmem.h" -#include <csetjmp> -#include <signal.h> - class FreeTest { public: pk_membucket *bkt; @@ -105,12 +103,14 @@ const char *test_free_0001 = "test_free_0001"; const char *test_free_after = "test_free_after"; const char *test_free_before = "test_free_before"; const char *test_free_between = "test_free_between"; +const char *test_alloc_strings = "test_alloc_strings"; const char *test_bucket_count01 = "test_bucket_count01"; const char *test_bucket_count02 = "test_bucket_count02"; const char *test_bucket_count03 = "test_bucket_count03"; const char *test_bucket_count04 = "test_bucket_count04"; const char *test_bucket_count05 = "test_bucket_count05"; +/* static bool expected_exit = false; static bool caught = false; static jmp_buf jmp_env; @@ -136,10 +136,11 @@ handle_assert_abort(int sig) _exit(1); } } +*/ int main(int argc, char *argv[]) { - signal(SIGABRT, handle_assert_abort); + // signal(SIGABRT, handle_assert_abort); (void)argc; (void)argv; int i; @@ -523,32 +524,58 @@ int main(int argc, char *argv[]) fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_free_between); pk_memory_teardown_all(); + fprintf(stdout, "[pkmem.cpp] start: %s\n", test_alloc_strings); + { + size_t diff; + pk_membucket *bkt = pk_bucket_create(test_free_between, PK_DEFAULT_BUCKET_SIZE, false); + + char *str1 = pk_new<char>(16, bkt); + char *str2 = pk_new<char>(16, bkt); + pk_handle *handle1 = pk_new<pk_handle>(bkt); + pk_handle *handle2 = pk_new<pk_handle>(bkt); + + fprintf(stdout, "ptr : %p\n", (void *)bkt->ptr); + fprintf(stdout, "str1 : %p\n", (void *)str1); + fprintf(stdout, "str2 : %p\n", (void *)str2); + fprintf(stdout, "handle1 : %p\n", (void *)handle1); + fprintf(stdout, "handle2 : %p\n", (void *)handle2); + + diff = str1 - bkt->ptr; + fprintf(stdout, "str1 - ptr : %zu\n", diff); + assert(diff == 0); + + diff = str2 - str1; + fprintf(stdout, "str2 - str1 : %zu\n", diff); + assert(diff == 16); + + diff = str2 - bkt->ptr; + fprintf(stdout, "str2 - ptr : %zu\n", diff); + assert(diff == 16); + + diff = (char *)handle1 - str1; + fprintf(stdout, "handle1 - str1 : %zu\n", diff); + assert(diff == 32); + + diff = (char *)handle2 - (char *)handle1; + fprintf(stdout, "handle2 - handle1 : %zu\n", diff); + assert(diff == 8); + + pk_bucket_destroy(bkt); + } + fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_alloc_strings); + pk_memory_teardown_all(); + // assert bucket count fprintf(stdout, "[pkmem.cpp] start: %s\n", test_bucket_count01); do { - int r; - r = setjmp(jmp_env); - if (r == 1) { - if (expected_exit == true && caught == true) { - expected_exit = false; - caught = false; - PK_LOGV_INF("%s: successfully caught err.\n", __FILE__); - fflush(stdout); - fflush(stderr); - break; - } else { - goto uncaught_err; - } - } - for (i = 0; i < PK_MAX_BUCKET_COUNT + 1; ++i) { - caught = false; - expected_exit = true; + for (i = 0; i < PK_MAX_BUCKET_COUNT; ++i) { pk_membucket *bkt = pk_bucket_create("lol", 1024, false); - expected_exit = false; + assert(bkt != nullptr); (void)bkt; } - goto uncaught_err; + pk_membucket *bkt = pk_bucket_create("lol", 1024, false); + assert(bkt == nullptr); } while(false); fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_bucket_count01); @@ -558,33 +585,13 @@ int main(int argc, char *argv[]) fprintf(stdout, "[pkmem.cpp] start: %s\n", test_bucket_count02); do { - int r; - caught = false; - expected_exit = false; 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); - (void)asdf; + assert(asdf != nullptr); } - r = setjmp(jmp_env); - if (r == 1) { - if (expected_exit == true && caught == true) { - expected_exit = false; - caught = false; - PK_LOGV_INF("%s: successfully caught err.\n", __FILE__); - fflush(stdout); - fflush(stderr); - break; - } else { - goto uncaught_err; - } - } - caught = false; - expected_exit = true; char *asdf = pk_new<char>(768); - (void)asdf; - expected_exit = false; - goto uncaught_err; + assert(asdf == nullptr); } while(false); fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_bucket_count02); @@ -594,34 +601,14 @@ int main(int argc, char *argv[]) fprintf(stdout, "[pkmem.cpp] start: %s\n", test_bucket_count03); do { - int r; - caught = false; - expected_exit = false; pk_membucket *bkt = nullptr; for (i = 0; i < PK_MAX_BUCKET_COUNT; ++i) { bkt = pk_bucket_create("lol3", 1024, false); char *asdf = pk_new<char>(768, bkt); - (void)asdf; - } - r = setjmp(jmp_env); - if (r == 1) { - if (expected_exit == true && caught == true) { - expected_exit = false; - caught = false; - PK_LOGV_INF("%s: successfully caught err.\n", __FILE__); - fflush(stdout); - fflush(stderr); - break; - } else { - goto uncaught_err; - } + assert(asdf != nullptr); } - caught = false; - expected_exit = true; char *asdf = pk_new<char>(768, bkt); - (void)asdf; - expected_exit = false; - goto uncaught_err; + assert(asdf == nullptr); } while(false); fprintf(stdout, "[pkmem.cpp] end: %s\n\n", test_bucket_count03); @@ -699,9 +686,4 @@ int main(int argc, char *argv[]) pk_memory_teardown_all(); return 0; -uncaught_err: - PK_LOGV_ERR("%s: failed to catch err.\n", __FILE__); - fflush(stdout); - fflush(stderr); - return 1; } |
