forked from enlightenment/efl
ecore: add tests for efl_future_all.
This commit is contained in:
parent
84958dc6ca
commit
61957ace36
|
@ -988,6 +988,66 @@ START_TEST(efl_test_promise_future_optional_cancel)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
static int value[] = { 42, 7, 3 };
|
||||||
|
|
||||||
|
static void
|
||||||
|
_then_all(void *data, const Efl_Event *ev)
|
||||||
|
{
|
||||||
|
Future_Ok *fo = data;
|
||||||
|
Efl_Future_Event_Success *s = ev->info;
|
||||||
|
Eina_Accessor *ac = s->value;
|
||||||
|
int *i;
|
||||||
|
|
||||||
|
fail_if(!eina_accessor_data_get(ac, 0, (void**) &i));
|
||||||
|
fail_if(i != &value[0]);
|
||||||
|
fail_if(!eina_accessor_data_get(ac, 1, (void**) &i));
|
||||||
|
fail_if(i != &value[1]);
|
||||||
|
fail_if(!eina_accessor_data_get(ac, 2, (void**) &i));
|
||||||
|
fail_if(i != &value[2]);
|
||||||
|
|
||||||
|
fo->then = EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
START_TEST(efl_test_promise_all)
|
||||||
|
{
|
||||||
|
Efl_Promise *p1, *p2, *p3;
|
||||||
|
Efl_Future *all = NULL, *f1;
|
||||||
|
Future_Ok donea = { EINA_FALSE, EINA_FALSE, EINA_FALSE };
|
||||||
|
Future_Ok donep1 = { EINA_FALSE, EINA_FALSE, EINA_FALSE };
|
||||||
|
|
||||||
|
ecore_init();
|
||||||
|
|
||||||
|
p1 = efl_add(EFL_PROMISE_CLASS, ecore_main_loop_get());
|
||||||
|
p2 = efl_add(EFL_PROMISE_CLASS, ecore_main_loop_get());
|
||||||
|
p3 = efl_add(EFL_PROMISE_CLASS, ecore_main_loop_get());
|
||||||
|
fail_if(!p1 || !p2 || !p3);
|
||||||
|
|
||||||
|
f1 = efl_ref(efl_promise_future_get(p1));
|
||||||
|
fail_if(!efl_future_then(f1, _then, _cancel, _progress, &donep1));
|
||||||
|
efl_future_use(&all, efl_future_all(f1, efl_promise_future_get(p2), efl_promise_future_get(p3)));
|
||||||
|
efl_unref(f1);
|
||||||
|
|
||||||
|
fail_if(!efl_future_then(all, _then_all, _cancel, _progress, &donea));
|
||||||
|
fail_if(!all);
|
||||||
|
|
||||||
|
efl_promise_value_set(p1, &value[0], NULL);
|
||||||
|
fail_if(!donep1.then || donep1.cancel || donep1.progress);
|
||||||
|
fail_if(donea.then || donea.cancel || donea.progress);
|
||||||
|
|
||||||
|
efl_promise_value_set(p2, &value[1], NULL);
|
||||||
|
efl_promise_value_set(p3, &value[2], NULL);
|
||||||
|
|
||||||
|
fail_if(!donea.then || donea.cancel || donea.progress);
|
||||||
|
fail_if(all);
|
||||||
|
|
||||||
|
efl_del(p1);
|
||||||
|
efl_del(p2);
|
||||||
|
efl_del(p3);
|
||||||
|
|
||||||
|
ecore_shutdown();
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
void ecore_test_ecore_promise(TCase *tc)
|
void ecore_test_ecore_promise(TCase *tc)
|
||||||
{
|
{
|
||||||
tcase_add_test(tc, ecore_test_promise);
|
tcase_add_test(tc, ecore_test_promise);
|
||||||
|
@ -1015,4 +1075,5 @@ void ecore_test_ecore_promise(TCase *tc)
|
||||||
tcase_add_test(tc, efl_test_promise_before_future_multi_cancel);
|
tcase_add_test(tc, efl_test_promise_before_future_multi_cancel);
|
||||||
tcase_add_test(tc, efl_test_promise_future_optional_success);
|
tcase_add_test(tc, efl_test_promise_future_optional_success);
|
||||||
tcase_add_test(tc, efl_test_promise_future_optional_cancel);
|
tcase_add_test(tc, efl_test_promise_future_optional_cancel);
|
||||||
|
tcase_add_test(tc, efl_test_promise_all);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue