X-Git-Url: https://code.delx.au/pulseaudio/blobdiff_plain/281125c72767713d6294ac7094f3bf7bde47a1e3..d9841a943191212ee8ef872255400cac5d8a02c4:/src/tests/hook-list-test.c diff --git a/src/tests/hook-list-test.c b/src/tests/hook-list-test.c index 0d811a1e..aec2a5d6 100644 --- a/src/tests/hook-list-test.c +++ b/src/tests/hook-list-test.c @@ -1,32 +1,61 @@ -/* $Id$ */ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include #include #include -static pa_hook_result_t func1(const char*a, void *userdata) { - pa_log("#1 arg=%s userdata=%s", a, (char*) userdata); +static pa_hook_result_t func1(const char *hook_data, const char *call_data, const char *slot_data) { + pa_log("(func1) hook=%s call=%s slot=%s", hook_data, call_data, slot_data); + /* succeed when it runs to here */ + fail_unless(1); return PA_HOOK_OK; } -static pa_hook_result_t func2(const char*a, void *userdata) { - pa_log("#2 arg=%s userdata=%s", a, (char*) userdata); +static pa_hook_result_t func2(const char *hook_data, const char *call_data, const char *slot_data) { + pa_log("(func2) hook=%s call=%s slot=%s", hook_data, call_data, slot_data); + /* succeed when it runs to here */ + fail_unless(1); return PA_HOOK_OK; } -int main(int argc, char *argv[]) { +START_TEST (hooklist_test) { pa_hook hook; pa_hook_slot *slot; - pa_hook_init(&hook); + pa_hook_init(&hook, (void*) "hook"); + + pa_hook_connect(&hook, PA_HOOK_LATE, (pa_hook_cb_t) func1, (void*) "slot1"); + slot = pa_hook_connect(&hook, PA_HOOK_NORMAL, (pa_hook_cb_t) func2, (void*) "slot2"); + pa_hook_connect(&hook, PA_HOOK_NORMAL, (pa_hook_cb_t) func1, (void*) "slot3"); - pa_hook_connect(&hook, (pa_hook_cb_t) func1, (void*) "1-1"); - slot = pa_hook_connect(&hook, (pa_hook_cb_t) func2, (void*) "2-1"); - pa_hook_connect(&hook, (pa_hook_cb_t) func1, (void*) "1-2"); - - pa_hook_fire(&hook, (void*) "arg2"); + pa_hook_fire(&hook, (void*) "call1"); pa_hook_slot_free(slot); - pa_hook_free(&hook); - - return 0; + + pa_hook_fire(&hook, (void*) "call2"); + + pa_hook_done(&hook); +} +END_TEST + +int main(int argc, char *argv[]) { + int failed = 0; + Suite *s; + TCase *tc; + SRunner *sr; + + s = suite_create("Hook List"); + tc = tcase_create("hooklist"); + tcase_add_test(tc, hooklist_test); + suite_add_tcase(s, tc); + + sr = srunner_create(s); + srunner_run_all(sr, CK_NORMAL); + failed = srunner_ntests_failed(sr); + srunner_free(sr); + + return (failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; }