END_TEST START_TEST (test_cometd_listener_fire_exact_matches_first) { handler_data = NULL; cometd_listener_add(listeners, "/foo/*", handler1); cometd_listener_add(listeners, "/**", handler1); cometd_listener_add(listeners, "/foo/bar", handler2); cometd_listener_fire(listeners, "/foo/bar", NULL, NULL); ck_assert_str_eq("two", g_list_nth_data(handler_data, 0)); ck_assert_str_eq("one", g_list_nth_data(handler_data, 1)); ck_assert_str_eq("one", g_list_nth_data(handler_data, 2)); }
cometd_subscription* cometd_add_listener(const cometd* h, char * channel, cometd_callback cb) { return cometd_listener_add(h->subscriptions, channel, cb); }
END_TEST START_TEST (test_cometd_listener_fire_with_wildcards) { JsonNode* message = cometd_json_str2node("{}"); cometd_subscription *s1, *s2; s1 = cometd_listener_add(listeners, "/foo/**", log_handler); s2 = cometd_listener_add(listeners, "/quux/*", log_handler); cometd_listener_fire(listeners, "/foo/bar/baz", NULL, message); ck_assert_int_eq(1, log_size()); cometd_listener_fire(listeners, "/quux/wat/wut", NULL, message); ck_assert_int_eq(1, log_size()); cometd_listener_fire(listeners, "/quux/wat", NULL, message); ck_assert_int_eq(2, log_size()); json_node_free(message); }
END_TEST START_TEST (test_cometd_listener_get) { cometd_subscription *s1, *s2, *s3, *s4; s1 = cometd_listener_add(listeners, "/foo/*", test_empty_handler); s2 = cometd_listener_add(listeners, "/**", test_empty_handler); s3 = cometd_listener_add(listeners, "/foo/bar/baz/*", test_empty_handler); s4 = cometd_listener_add(listeners, "/foo/bar/baz/bang", test_empty_handler); GList* subscriptions = cometd_listener_get(listeners, "/foo/bar/baz/bang"); fail_if(subscriptions == NULL); ck_assert_int_eq(3, g_list_length(subscriptions)); fail_if(g_list_find(subscriptions, s2) == NULL); fail_if(g_list_find(subscriptions, s3) == NULL); fail_if(g_list_find(subscriptions, s4) == NULL); g_list_free(subscriptions); }