hooks: Allow to remove hooking (and/or trace)
[src/app-framework-binder.git] / src / tests / apiset / test-apiset.c
index bdc8413..96fbf4b 100644 (file)
@@ -58,7 +58,9 @@ const char *extras[] = {
 struct afb_api_itf api_itf_null = {
        .call = NULL,
        .service_start = NULL,
+#if WITH_AFB_HOOK
        .update_hooks = NULL,
+#endif
        .get_logmask = NULL,
        .set_logmask = NULL,
        .describe = NULL,
@@ -384,7 +386,7 @@ int set_cb_getmask(void *closure)
        return set_last_api->mask;
 }
 
-int set_cb_start(void *closure, int share_session, int onneed)
+int set_cb_start(void *closure)
 {
        set_cb0(closure);
        ck_assert_int_eq(0, set_last_api->init);
@@ -395,7 +397,9 @@ int set_cb_start(void *closure, int share_session, int onneed)
 struct afb_api_itf set_api_itf = {
        .call = NULL,
        .service_start = set_cb_start,
+#if WITH_AFB_HOOK
        .update_hooks = set_cb0,
+#endif
        .get_logmask = set_cb_getmask,
        .set_logmask = set_cb_setmask,
        .describe = NULL,
@@ -422,11 +426,13 @@ START_TEST (check_settings)
        nn = i;
 
        set_count = 0;
-       afb_apiset_start_all_services(a, 1);
+       afb_apiset_start_all_services(a);
        ck_assert_int_eq(nn, set_count);
 
        set_count = 0;
+#if WITH_AFB_HOOK
        afb_apiset_update_hooks(a, NULL);
+#endif
        ck_assert_int_eq(nn, set_count);
 
        for (mask = 1 ; !(mask >> 10) ; mask <<= 1) {
@@ -480,7 +486,7 @@ struct clapi {
 
 int clorder;
 
-int clacb_start(void *closure, int share_session, int onneed)
+int clacb_start(void *closure)
 {
        struct clapi *a = closure;
        int i;
@@ -505,7 +511,9 @@ int clacb_start(void *closure, int share_session, int onneed)
 struct afb_api_itf clitf = {
        .call = NULL,
        .service_start = clacb_start,
+#if WITH_AFB_HOOK
        .update_hooks = NULL,
+#endif
        .get_logmask = NULL,
        .set_logmask = NULL,
        .describe = NULL,
@@ -541,7 +549,50 @@ START_TEST (check_classes)
        }
 
        /* start all */
-       ck_assert_int_eq(0, afb_apiset_start_all_services(a, 0));
+       ck_assert_int_eq(0, afb_apiset_start_all_services(a));
+
+       afb_apiset_unref(a);
+}
+END_TEST
+
+/*********************************************************************/
+
+START_TEST (check_subset)
+{
+       int rc;
+       struct afb_apiset *a, *b, *c, *d;
+
+       a = afb_apiset_create_subset_first(NULL, "a", 0);
+       ck_assert_ptr_nonnull(a);
+       ck_assert_str_eq("a", afb_apiset_name(a));
+       ck_assert_ptr_null(afb_apiset_subset_get(a));
+
+       b = afb_apiset_create_subset_first(a, "b", 0);
+       ck_assert_ptr_nonnull(b);
+       ck_assert_str_eq("b", afb_apiset_name(b));
+       ck_assert_ptr_eq(b, afb_apiset_subset_get(a));
+       ck_assert_ptr_null(afb_apiset_subset_get(b));
+
+       c = afb_apiset_create_subset_first(a, "c", 0);
+       ck_assert_ptr_nonnull(c);
+       ck_assert_str_eq("c", afb_apiset_name(c));
+       ck_assert_ptr_eq(c, afb_apiset_subset_get(a));
+       ck_assert_ptr_eq(b, afb_apiset_subset_get(c));
+       ck_assert_ptr_null(afb_apiset_subset_get(b));
+
+       d = afb_apiset_create_subset_last(a, "d", 0);
+       ck_assert_ptr_nonnull(d);
+       ck_assert_str_eq("d", afb_apiset_name(d));
+       ck_assert_ptr_eq(c, afb_apiset_subset_get(a));
+       ck_assert_ptr_eq(b, afb_apiset_subset_get(c));
+       ck_assert_ptr_eq(d, afb_apiset_subset_get(b));
+       ck_assert_ptr_null(afb_apiset_subset_get(d));
+
+       rc = afb_apiset_subset_set(a, b);
+       ck_assert(rc == 0);
+       ck_assert_ptr_eq(b, afb_apiset_subset_get(a));
+       ck_assert_ptr_eq(d, afb_apiset_subset_get(b));
+       ck_assert_ptr_null(afb_apiset_subset_get(d));
 
        afb_apiset_unref(a);
 }
@@ -575,5 +626,6 @@ int main(int ac, char **av)
                        addtest(check_onlack);
                        addtest(check_settings);
                        addtest(check_classes);
+                       addtest(check_subset);
        return !!srun();
 }