summaryrefslogtreecommitdiff
path: root/test/pkev.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/pkev.cpp')
-rw-r--r--test/pkev.cpp37
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__);