diff options
Diffstat (limited to 'test/pkev.cpp')
| -rw-r--r-- | test/pkev.cpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/test/pkev.cpp b/test/pkev.cpp index f8b370b..0d39336 100644 --- a/test/pkev.cpp +++ b/test/pkev.cpp @@ -1,4 +1,5 @@ +#define PK_IMPL_MEM #define PK_IMPL_EV #include "../pkmacros.h" @@ -26,6 +27,7 @@ exit(int code) } struct ev { + pk_membucket *bkt; pk_ev_mgr_id_T evmgr; pk_ev_id_T evid; atomic_int count; @@ -46,7 +48,9 @@ test_setup() ev_two.evid = {}; ev_two.count = {}; ev_two.handled = {}; - pk_ev_init(); + ev_one.bkt = pk_mem_bucket_create("pkev_test_cpp", PK_MEM_DEFAULT_BUCKET_SIZE, PK_MEMBUCKET_FLAG_NONE); + ev_two.bkt = ev_one.bkt; + pk_ev_init(ev_one.bkt); const pk_ev_mgr_id_T evmgr = pk_ev_create_mgr(); if (evmgr >= 64) { PK_LOGV_ERR("%s: failed to create pk_ev_mgr\n", __FILE__); @@ -57,6 +61,13 @@ test_setup() return evmgr; } +void test_teardown() { + pk_ev_teardown(); + pk_mem_bucket_destroy(ev_one.bkt); + ev_one.bkt = NULL; + ev_two.bkt = NULL; +} + typedef struct cb_data { int i; struct ev *ev; @@ -274,6 +285,30 @@ int main(int argc, char *argv[]) } while(false); + + // create multiple + do { + + uint64_t mask = 0b1; + const pk_ev_mgr_id_T evmgr = test_setup(); + (void)evmgr; + + for (i = 1; i < PK_EV_INIT_MGR_COUNT; ++i) { + auto ev_mgr_id = pk_ev_create_mgr(); + (void)ev_mgr_id; + mask |= (1ull << i); + } + + assert(pk_ev_mstr.flg_mgrs == mask); + + for (i = PK_EV_INIT_MGR_COUNT-1; i > 0; --i) { + pk_ev_destroy_mgr(pk_ev_mgr_id_T{i}); + } + + pk_ev_teardown(); + } + while (false); + return 0; uncaught_err: PK_LOGV_ERR("%s: failed to catch err.\n", __FILE__); |
