cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=61957ace36ea0473777155584e29c1588e0290b3

commit 61957ace36ea0473777155584e29c1588e0290b3
Author: Cedric Bail <ced...@osg.samsung.com>
Date:   Tue Jul 26 12:08:48 2016 -0700

    ecore: add tests for efl_future_all.
---
 src/tests/ecore/ecore_test_promise.c | 61 ++++++++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/src/tests/ecore/ecore_test_promise.c 
b/src/tests/ecore/ecore_test_promise.c
index d813aca..e998d99 100644
--- a/src/tests/ecore/ecore_test_promise.c
+++ b/src/tests/ecore/ecore_test_promise.c
@@ -988,6 +988,66 @@ START_TEST(efl_test_promise_future_optional_cancel)
 }
 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)
 {
    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_future_optional_success);
    tcase_add_test(tc, efl_test_promise_future_optional_cancel);
+   tcase_add_test(tc, efl_test_promise_all);
 }

-- 


Reply via email to