cedric pushed a commit to branch master.

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

commit a614303fb6507ed827a05beb6002815dc19f4b25
Author: Cedric BAIL <ced...@osg.samsung.com>
Date:   Thu Nov 3 17:58:58 2016 -0700

    ecore: add check to make sure that the order of future_get and value_set 
can be switched.
---
 src/tests/ecore/ecore_test_promise.c | 40 ++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/src/tests/ecore/ecore_test_promise.c 
b/src/tests/ecore/ecore_test_promise.c
index 7b402e4..4a527e3 100644
--- a/src/tests/ecore/ecore_test_promise.c
+++ b/src/tests/ecore/ecore_test_promise.c
@@ -463,6 +463,45 @@ START_TEST(efl_test_promise_future_success)
 }
 END_TEST
 
+// Test value set before future_get
+START_TEST(efl_test_promise_future_success_before_get)
+{
+   Efl_Promise *p;
+   Efl_Future *f;
+   Future_Ok fo = { EINA_FALSE, EINA_FALSE, EINA_FALSE };
+   Eina_Bool deadf = EINA_FALSE, deadp = EINA_FALSE;
+   int progress = 7;
+   int value = 42;
+
+   ecore_init();
+
+   p = efl_add(EFL_PROMISE_CLASS, ecore_main_loop_get());
+   fail_if(!p);
+
+   efl_promise_value_set(p, &value, NULL);
+
+   efl_future_use(&f, efl_promise_future_get(p));
+   fail_if(!f);
+
+   efl_event_callback_add(f, EFL_EVENT_DEL, _death, &deadf);
+   efl_event_callback_add(p, EFL_EVENT_DEL, _death, &deadp);
+
+   fail_if(deadp || deadf);
+
+   fail_if(!efl_future_then(f, _then, _cancel, _progress, &fo));
+
+   fail_if(f);
+   fail_if(!fo.then || fo.cancel || fo.progress);
+   fail_if(!deadf || deadp);
+
+   efl_del(p);
+
+   fail_if(!deadp);
+
+   ecore_shutdown();
+}
+END_TEST
+
 START_TEST(efl_test_promise_future_cancel)
 {
    Efl_Promise *p;
@@ -1224,6 +1263,7 @@ void ecore_test_ecore_promise(TCase *tc)
    tcase_add_test(tc, efl_test_promise_future_optional_cancel);
    tcase_add_test(tc, efl_test_promise_all);
    tcase_add_test(tc, efl_test_promise_all_after_value_set);
+   tcase_add_test(tc, efl_test_promise_future_success_before_get);
    tcase_add_test(tc, efl_test_promise_race);
    tcase_add_test(tc, efl_test_future_link);
    tcase_add_test(tc, efl_test_recursive_mess);

-- 


Reply via email to