Thank you, Mr Choi. On 07/17/2014 04:37 PM, ryuan Choi wrote: > I updated like you suggested. > > It's not critical to me but I agree that it might be also usefull. > > Thanks, > Ryuan Choi > > > 2014-07-17 13:30 GMT+09:00 Daniel Zaoui <daniel.za...@samsung.com > <mailto:daniel.za...@samsung.com>>: > > Hi Ryuan, > > Thank you for this patch. > Don't you think it would be better if the timeout could be chosen > by the > caller itself? > > D2, alias JackDanielZ > > On 07/16/2014 06:36 PM, Daniel Juyung Seo wrote: > > Oh.. this must be useful :) > > > > Thanks. > > > > Daniel Juyung Seo (SeoZ) > > > > > > On Wed, Jul 16, 2014 at 11:32 PM, Ryuan Choi > <ryuan.c...@gmail.com <mailto:ryuan.c...@gmail.com>> wrote: > > > >> ryuan pushed a commit to branch master. > >> > >> > >> > > http://git.enlightenment.org/core/elementary.git/commit/?id=bbb916375d99e65b8083a037323d88acbbcdbec5 > >> > >> commit bbb916375d99e65b8083a037323d88acbbcdbec5 > >> Author: Ryuan Choi <ryuan.c...@gmail.com > <mailto:ryuan.c...@gmail.com>> > >> Date: Wed Jul 16 23:17:31 2014 +0900 > >> > >> tests: Add elm_test_helper_wait_flag to avoid infinite loop > >> > >> Test of elm_fileselector_selected and future tests may have > >> conditional loop > >> which some flag. > >> This patch adds elm_test_helper_wait_flag, simple wrapper > of the loop > >> with timer > >> in order to exit the loop when expected callbacks are not > called. > >> --- > >> src/tests/Makefile.am | 1 + > >> src/tests/elm_suite.h | 1 + > >> src/tests/elm_test_fileselector.c | 6 ++++-- > >> src/tests/elm_test_helper.c | 41 > >> +++++++++++++++++++++++++++++++++++++++ > >> src/tests/elm_test_helper.h | 8 ++++++++ > >> 5 files changed, 55 insertions(+), 2 deletions(-) > >> > >> diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am > >> index 11dcd87..12fc454 100644 > >> --- a/src/tests/Makefile.am > >> +++ b/src/tests/Makefile.am > >> @@ -6,6 +6,7 @@ TESTS = elm_suite > >> check_PROGRAMS = elm_suite > >> elm_suite_SOURCES = \ > >> elm_suite.c \ > >> + elm_test_helper.c \ > >> elm_test_atspi.c \ > >> elm_test_check.c \ > >> elm_test_colorselector.c \ > >> diff --git a/src/tests/elm_suite.h b/src/tests/elm_suite.h > >> index 7918a4e..1a19179 100644 > >> --- a/src/tests/elm_suite.h > >> +++ b/src/tests/elm_suite.h > >> @@ -2,6 +2,7 @@ > >> #define _ELM_SUITE_H > >> > >> #include <check.h> > >> +#include "elm_test_helper.h" > >> > >> void elm_test_init(TCase *tc); > >> void elm_test_check(TCase *tc); > >> diff --git a/src/tests/elm_test_fileselector.c > >> b/src/tests/elm_test_fileselector.c > >> index e5dd067..a204917 100644 > >> --- a/src/tests/elm_test_fileselector.c > >> +++ b/src/tests/elm_test_fileselector.c > >> @@ -69,12 +69,14 @@ START_TEST (elm_fileselector_selected) > >> > >> selected = EINA_FALSE; > >> ck_assert(elm_fileselector_selected_set(fileselector, path)); > >> - while (!selected) ecore_main_loop_iterate(); > >> + ck_assert(elm_test_helper_wait_flag(&selected)); > >> + > >> > ck_assert_str_eq(elm_fileselector_selected_get(fileselector), path); > >> > >> selected = EINA_FALSE; > >> ck_assert(elm_fileselector_selected_set(fileselector, exist)); > >> - while (!selected) ecore_main_loop_iterate(); > >> + ck_assert(elm_test_helper_wait_flag(&selected)); > >> + > >> > ck_assert_str_eq(elm_fileselector_selected_get(fileselector), exist); > >> > >> eina_stringshare_del(exist); > >> diff --git a/src/tests/elm_test_helper.c > b/src/tests/elm_test_helper.c > >> new file mode 100644 > >> index 0000000..453e888 > >> --- /dev/null > >> +++ b/src/tests/elm_test_helper.c > >> @@ -0,0 +1,41 @@ > >> +#ifdef HAVE_CONFIG_H > >> +# include "elementary_config.h" > >> +#endif > >> + > >> +#include <Ecore.h> > >> +#include "elm_suite.h" > >> + > >> +const double timeout = 10; > >> + > >> +typedef struct _Callback_Data > >> +{ > >> + Ecore_Timer *timer; > >> + Eina_Bool did_timeout; > >> +} Callback_Data; > >> + > >> +static Eina_Bool > >> +timer_expired_cb(void *user_data) > >> +{ > >> + Callback_Data *data = user_data; > >> + data->did_timeout = EINA_TRUE; > >> + data->timer = NULL; > >> + > >> + return ECORE_CALLBACK_CANCEL; > >> +} > >> + > >> +Eina_Bool > >> +elm_test_helper_wait_flag(Eina_Bool *done) > >> +{ > >> + Callback_Data data; > >> + > >> + data.did_timeout = EINA_FALSE; > >> + data.timer = ecore_timer_add(timeout, timer_expired_cb, &data); > >> + > >> + while (*done == EINA_FALSE && data.did_timeout == EINA_FALSE) > >> + ecore_main_loop_iterate(); > >> + > >> + if (data.timer) > >> + ecore_timer_del(data.timer); > >> + > >> + return !data.did_timeout; > >> +} > >> diff --git a/src/tests/elm_test_helper.h > b/src/tests/elm_test_helper.h > >> new file mode 100644 > >> index 0000000..62974f1 > >> --- /dev/null > >> +++ b/src/tests/elm_test_helper.h > >> @@ -0,0 +1,8 @@ > >> +#ifndef _ELM_TEST_HELPER_H > >> +#define _ELM_TEST_HELPER_H > >> + > >> +#include <Eina.h> > >> + > >> +Eina_Bool elm_test_helper_wait_flag(Eina_Bool *done); > >> + > >> +#endif /* _ELM_TEST_HELPER_H */ > >> > >> -- > >> > >> > >> > > > > ------------------------------------------------------------------------------ > > Want fast and easy access to all the code in your enterprise? > Index and > > search up to 200,000 lines of code with a free copy of Black Duck > > Code Sight - the same software that powers the world's largest code > > search on Ohloh, the Black Duck Open Hub! Try it now. > > http://p.sf.net/sfu/bds > > _______________________________________________ > > enlightenment-devel mailing list > > enlightenment-devel@lists.sourceforge.net > <mailto:enlightenment-devel@lists.sourceforge.net> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > >
------------------------------------------------------------------------------ Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel