summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-02-25 18:35:00 -0500
committerJonathan Bradley <jcb@pikum.xyz>2025-02-25 18:35:00 -0500
commitb6a1b507acbac6d601f8a0ba9f3727dd2f8f86e6 (patch)
treef6a0fd847f31b9252ea6e891e63b229a26deb0a8 /test
parenta752cef28a4eda5f56c6a611198134d388eaa00b (diff)
pkev: unregister callbacks
Diffstat (limited to 'test')
-rw-r--r--test/pkev.c48
1 files changed, 39 insertions, 9 deletions
diff --git a/test/pkev.c b/test/pkev.c
index 10d82b0..f28739b 100644
--- a/test/pkev.c
+++ b/test/pkev.c
@@ -8,7 +8,8 @@
struct ev {
pk_ev_mgr_id_T evmgr;
pk_ev_id_T evid;
- bool handled;
+ pk_ev_cb_id_T evcbid;
+ int handled_count;
};
struct ev ev_one = {0};
@@ -17,13 +18,13 @@ struct ev ev_two = {0};
void
handle_ev_one(void *, void *, void *)
{
- ev_one.handled = true;
+ ev_one.handled_count++;
}
void
handle_ev_two(void *, void *, void *)
{
- ev_two.handled = true;
+ ev_two.handled_count++;
}
int
@@ -68,13 +69,42 @@ int main(int argc, char *argv[])
const pk_ev_mgr_id_T evmgr = test_setup();
ev_one.evid = pk_ev_register_ev(evmgr, NULL);
ev_two.evid = pk_ev_register_ev(evmgr, NULL);
- pk_ev_register_cb(evmgr, ev_one.evid, handle_ev_one, NULL);
- pk_ev_register_cb(evmgr, ev_two.evid, handle_ev_two, NULL);
+ ev_one.evcbid = pk_ev_register_cb(evmgr, ev_one.evid, handle_ev_one, NULL);
+ ev_two.evcbid = pk_ev_register_cb(evmgr, ev_two.evid, handle_ev_two, NULL);
+ pk_ev_emit(evmgr, ev_one.evid, NULL);
+ pk_ev_emit(evmgr, ev_two.evid, NULL);
+ PK_LOGV_INF("%s: ev_one: %i, ev_two: %i\n", __FILE__, ev_one.handled_count, ev_two.handled_count);
+ pk_ev_teardown();
+ if (ev_one.handled_count != 1 || ev_two.handled_count != 1) exit(1);
+ }
+
+ // register, emit, catch
+ {
+ const pk_ev_mgr_id_T evmgr = test_setup();
+ ev_one.evid = pk_ev_register_ev(evmgr, NULL);
+ ev_two.evid = pk_ev_register_ev(evmgr, NULL);
+ ev_one.evcbid = pk_ev_register_cb(evmgr, ev_one.evid, handle_ev_one, NULL);
+ ev_two.evcbid = pk_ev_register_cb(evmgr, ev_two.evid, handle_ev_two, NULL);
+ pk_ev_emit(evmgr, ev_one.evid, NULL);
+ pk_ev_emit(evmgr, ev_two.evid, NULL);
+ PK_LOGV_INF("%s: ev_one: %i, ev_two: %i\n", __FILE__, ev_one.handled_count, ev_two.handled_count);
+ pk_ev_unregister_cb(evmgr, ev_one.evid, ev_one.evcbid);
+ pk_ev_unregister_cb(evmgr, ev_two.evid, ev_two.evcbid);
pk_ev_emit(evmgr, ev_one.evid, NULL);
pk_ev_emit(evmgr, ev_two.evid, NULL);
- PK_LOGV_INF("%s: ev_one: %b, ev_two: %b\n", __FILE__, ev_one.handled, ev_two.handled);
+ uint64_t left, right;
+ left = pk_ev_mstr.mgrs[ev_one.evmgr]->ev[ev_one.evid].left_ev_cbs;
+ right = pk_ev_mstr.mgrs[ev_one.evmgr]->ev[ev_one.evid].right_ev_cbs;
+ PK_LOGV_INF("%s: left: %lu, right: %lu\n", __FILE__, left, right);
+ left = pk_ev_mstr.mgrs[ev_two.evmgr]->ev[ev_two.evid].left_ev_cbs;
+ right = pk_ev_mstr.mgrs[ev_two.evmgr]->ev[ev_two.evid].right_ev_cbs;
+ PK_LOGV_INF("%s: left: %lu, right: %lu\n", __FILE__, left, right);
+ if (pk_ev_mstr.mgrs[ev_one.evmgr]->ev[ev_one.evid].left_ev_cbs != 0) exit (1);
+ if (pk_ev_mstr.mgrs[ev_one.evmgr]->ev[ev_one.evid].right_ev_cbs != 1) exit (1);
+ if (pk_ev_mstr.mgrs[ev_two.evmgr]->ev[ev_two.evid].left_ev_cbs != 0) exit (1);
+ if (pk_ev_mstr.mgrs[ev_two.evmgr]->ev[ev_two.evid].right_ev_cbs != 1) exit (1);
pk_ev_teardown();
- if (ev_one.handled == false || ev_two.handled == false) exit(1);
+ if (ev_one.handled_count != 1 || ev_two.handled_count != 1) exit(1);
}
// threaded register, emit, catch
@@ -89,9 +119,9 @@ int main(int argc, char *argv[])
thrd_create(&t2, thrd_ev_emit_two, NULL);
thrd_join(t1, &i);
thrd_join(t2, &i);
- PK_LOGV_INF("%s: ev_one: %b, ev_two: %b\n", __FILE__, ev_one.handled, ev_two.handled);
+ PK_LOGV_INF("%s: ev_one: %i, ev_two: %i\n", __FILE__, ev_one.handled_count, ev_two.handled_count);
pk_ev_teardown();
- if (ev_one.handled == false || ev_two.handled == false) exit(1);
+ if (ev_one.handled_count != 1 || ev_two.handled_count != 1) exit(1);
}
return 0;