diff --git a/src/Makefile_Ecore.am b/src/Makefile_Ecore.am index 2fb22318cd..2c6221dfca 100644 --- a/src/Makefile_Ecore.am +++ b/src/Makefile_Ecore.am @@ -277,6 +277,7 @@ tests/ecore/ecore_suite.c \ tests/ecore/ecore_test_ecore.c \ tests/ecore/ecore_test_ecore_imf.c \ tests/ecore/ecore_test_idle.c \ +tests/ecore/ecore_test_poller.c \ tests/ecore/ecore_test_timer.c \ tests/ecore/ecore_test_ecore_evas.c \ tests/ecore/ecore_test_animator.c \ diff --git a/src/tests/ecore/ecore_suite.c b/src/tests/ecore/ecore_suite.c index a418a7cce7..04314e1922 100644 --- a/src/tests/ecore/ecore_suite.c +++ b/src/tests/ecore/ecore_suite.c @@ -9,6 +9,7 @@ static const Efl_Test_Case etc[] = { { "Ecore", ecore_test_ecore }, { "idle", ecore_test_ecore_idle }, + { "poller", ecore_test_ecore_idle }, #if HAVE_ECORE_X { "Ecore_X", ecore_test_ecore_x }, #endif diff --git a/src/tests/ecore/ecore_suite.h b/src/tests/ecore/ecore_suite.h index 3416e395c2..5917a43a0c 100644 --- a/src/tests/ecore/ecore_suite.h +++ b/src/tests/ecore/ecore_suite.h @@ -5,6 +5,7 @@ #include "../efl_check.h" void ecore_test_ecore(TCase *tc); void ecore_test_ecore_idle(TCase *tc); +void ecore_test_ecore_poller(TCase *tc); void ecore_test_ecore_x(TCase *tc); void ecore_test_ecore_imf(TCase *tc); void ecore_test_ecore_audio(TCase *tc); diff --git a/src/tests/ecore/ecore_test_ecore.c b/src/tests/ecore/ecore_test_ecore.c index 0314eebc6e..8159e22fb4 100644 --- a/src/tests/ecore/ecore_test_ecore.c +++ b/src/tests/ecore/ecore_test_ecore.c @@ -10,9 +10,6 @@ #include "ecore_suite.h" -#define FP_ERR (0.0000001) -#define CHECK_FP(a, b) ((a - b) < FP_ERR) - #define ECORE_EVENT_CUSTOM_1 1 #define ECORE_EVENT_CUSTOM_2 2 @@ -471,143 +468,6 @@ EFL_START_TEST(ecore_test_ecore_app) } EFL_END_TEST -Eina_Bool _poller_cb(void *data) -{ - int *val = data; - (*val)++; - return ECORE_CALLBACK_RENEW; -} - -EFL_START_TEST(ecore_test_ecore_main_loop_poller) -{ - Ecore_Poller *poll1_ptr = NULL; - int poll1_interval = 1; - int poll1_counter = 0; - - Ecore_Poller *poll2_ptr = NULL; - int poll2_interval = 2; - int poll2_counter = 0; - - Ecore_Poller *poll3_ptr = NULL; - int poll3_interval = 4; - int poll3_counter = 0; - - Eina_Bool did = EINA_FALSE; - - /* Check ECORE_POLLER_CORE poll interval */ - double interval = 0.05; - ecore_poller_poll_interval_set(ECORE_POLLER_CORE, interval); - fail_unless(CHECK_FP(ecore_poller_poll_interval_get(ECORE_POLLER_CORE), interval)); - - /* Create three pollers with different poller interval */ - poll1_ptr = ecore_poller_add(ECORE_POLLER_CORE, poll1_interval, _poller_cb, &poll1_counter); - poll2_ptr = ecore_poller_add(ECORE_POLLER_CORE, poll2_interval, _poller_cb, &poll2_counter); - poll3_ptr = ecore_poller_add(ECORE_POLLER_CORE, poll3_interval, _poller_cb, &poll3_counter); - - /* Add one time processed quit poller */ - ecore_poller_add(ECORE_POLLER_CORE, 8, _quit_cb, &did); - - /* Enter main loop and wait 8 intervals for quit */ - ecore_main_loop_begin(); - - /* Check each poller poll interval */ - fail_if(ecore_poller_poller_interval_get(poll1_ptr) != poll1_interval); - fail_if(ecore_poller_poller_interval_get(poll2_ptr) != poll2_interval); - fail_if(ecore_poller_poller_interval_get(poll3_ptr) != poll3_interval); - - /* Check each poller call counter */ - ck_assert_int_eq(8, poll1_counter); - ck_assert_int_eq(4, poll2_counter); - ck_assert_int_eq(2, poll3_counter); - - /* Destroy renewable pollers */ - ecore_poller_del(poll3_ptr); - ecore_poller_del(poll2_ptr); - ecore_poller_del(poll1_ptr); - - fail_if(did == EINA_FALSE); - -} -EFL_END_TEST - -Eina_Bool _poller_handler(void *data) -{ - int *val = data; - (*val)++; - return ECORE_CALLBACK_RENEW; -} - -static Eina_Bool -_poller_loop_add(void *data EINA_UNUSED) -{ - ecore_poller_add(ECORE_POLLER_CORE, 1, _quit_cb, NULL); - return ECORE_CALLBACK_RENEW; -} - -static Eina_Bool -_poller_loop_fail(void *data EINA_UNUSED) -{ - ecore_main_loop_quit(); - ck_abort(); - return ECORE_CALLBACK_RENEW; -} - -static Eina_Bool -_poller_loop_del(void *data) -{ - static int count = 0; - - if (count++ == 0) - ecore_poller_del(data); - else - ecore_main_loop_quit(); - return ECORE_CALLBACK_RENEW; -} - -static Eina_Bool -_poller_loop_modify(void *data) -{ - ecore_poller_poller_interval_set(data, 1); - return EINA_FALSE; -} - -EFL_START_TEST(ecore_test_ecore_main_loop_poller_add) -{ - /* Create renewable main poller */ - Ecore_Poller *poll_ptr = ecore_poller_add(ECORE_POLLER_CORE, 1, _poller_loop_add, NULL); - - /* Enter main loop and wait for quit*/ - ecore_main_loop_begin(); - - /* Destroy renewable main poller */ - ecore_poller_del(poll_ptr); -} -EFL_END_TEST - - -EFL_START_TEST(ecore_test_ecore_main_loop_poller_del) -{ - /* Create renewable main poller */ - Ecore_Poller *poller = ecore_poller_add(ECORE_POLLER_CORE, 2, _poller_loop_fail, NULL); - ecore_poller_add(ECORE_POLLER_CORE, 1, _poller_loop_del, poller); - - /* Enter main loop and wait for quit*/ - ecore_main_loop_begin(); -} -EFL_END_TEST - -EFL_START_TEST(ecore_test_ecore_main_loop_poller_modify) -{ - /* Create renewable main poller */ - Ecore_Poller *poller = ecore_poller_add(ECORE_POLLER_CORE, 4, _quit_cb, NULL); - ecore_poller_add(ECORE_POLLER_CORE, 1, _poller_loop_modify, poller); - ecore_poller_add(ECORE_POLLER_CORE, 4, _poller_loop_fail, NULL); - - /* Enter main loop and wait for quit*/ - ecore_main_loop_begin(); -} -EFL_END_TEST - void ecore_test_ecore(TCase *tc) { tcase_add_test(tc, ecore_test_ecore_init); @@ -621,8 +481,4 @@ void ecore_test_ecore(TCase *tc) tcase_add_test(tc, ecore_test_ecore_main_loop_event_recursive); #endif tcase_add_test(tc, ecore_test_ecore_app); - tcase_add_test(tc, ecore_test_ecore_main_loop_poller); - tcase_add_test(tc, ecore_test_ecore_main_loop_poller_add); - tcase_add_test(tc, ecore_test_ecore_main_loop_poller_del); - tcase_add_test(tc, ecore_test_ecore_main_loop_poller_modify); } diff --git a/src/tests/ecore/ecore_test_poller.c b/src/tests/ecore/ecore_test_poller.c new file mode 100644 index 0000000000..9e981ff367 --- /dev/null +++ b/src/tests/ecore/ecore_test_poller.c @@ -0,0 +1,168 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include +#include + +#include "ecore_suite.h" + +#define FP_ERR (0.0000001) +#define CHECK_FP(a, b) ((a - b) < FP_ERR) + +static Eina_Bool +_quit_cb(void *data) +{ + Eina_Bool *val = data; + if (val) *val = EINA_TRUE; + ecore_main_loop_quit(); + return EINA_FALSE; +} + +Eina_Bool _poller_handler(void *data) +{ + int *val = data; + (*val)++; + return ECORE_CALLBACK_RENEW; +} + +static Eina_Bool +_poller_loop_add(void *data EINA_UNUSED) +{ + ecore_poller_add(ECORE_POLLER_CORE, 1, _quit_cb, NULL); + return ECORE_CALLBACK_RENEW; +} + +static Eina_Bool +_poller_loop_fail(void *data EINA_UNUSED) +{ + ecore_main_loop_quit(); + ck_abort(); + return ECORE_CALLBACK_RENEW; +} + +static Eina_Bool +_poller_loop_del(void *data) +{ + static int count = 0; + + if (count++ == 0) + ecore_poller_del(data); + else + ecore_main_loop_quit(); + return ECORE_CALLBACK_RENEW; +} + +static Eina_Bool +_poller_loop_modify(void *data) +{ + ecore_poller_poller_interval_set(data, 1); + return EINA_FALSE; +} + +EFL_START_TEST(ecore_test_ecore_main_loop_poller_add) +{ + /* Create renewable main poller */ + Ecore_Poller *poll_ptr = ecore_poller_add(ECORE_POLLER_CORE, 1, _poller_loop_add, NULL); + + /* Enter main loop and wait for quit*/ + ecore_main_loop_begin(); + + /* Destroy renewable main poller */ + ecore_poller_del(poll_ptr); +} +EFL_END_TEST + + +EFL_START_TEST(ecore_test_ecore_main_loop_poller_del) +{ + /* Create renewable main poller */ + Ecore_Poller *poller = ecore_poller_add(ECORE_POLLER_CORE, 2, _poller_loop_fail, NULL); + ecore_poller_add(ECORE_POLLER_CORE, 1, _poller_loop_del, poller); + + /* Enter main loop and wait for quit*/ + ecore_main_loop_begin(); +} +EFL_END_TEST + +EFL_START_TEST(ecore_test_ecore_main_loop_poller_modify) +{ + /* Create renewable main poller */ + Ecore_Poller *poller = ecore_poller_add(ECORE_POLLER_CORE, 4, _quit_cb, NULL); + ecore_poller_add(ECORE_POLLER_CORE, 1, _poller_loop_modify, poller); + ecore_poller_add(ECORE_POLLER_CORE, 4, _poller_loop_fail, NULL); + + /* Enter main loop and wait for quit*/ + ecore_main_loop_begin(); +} +EFL_END_TEST + +Eina_Bool _poller_cb(void *data) +{ + int *val = data; + (*val)++; + return ECORE_CALLBACK_RENEW; +} + +EFL_START_TEST(ecore_test_ecore_main_loop_poller) +{ + Ecore_Poller *poll1_ptr = NULL; + int poll1_interval = 1; + int poll1_counter = 0; + + Ecore_Poller *poll2_ptr = NULL; + int poll2_interval = 2; + int poll2_counter = 0; + + Ecore_Poller *poll3_ptr = NULL; + int poll3_interval = 4; + int poll3_counter = 0; + + Eina_Bool did = EINA_FALSE; + + /* Check ECORE_POLLER_CORE poll interval */ + double interval = 0.05; + ecore_poller_poll_interval_set(ECORE_POLLER_CORE, interval); + fail_unless(CHECK_FP(ecore_poller_poll_interval_get(ECORE_POLLER_CORE), interval)); + + /* Create three pollers with different poller interval */ + poll1_ptr = ecore_poller_add(ECORE_POLLER_CORE, poll1_interval, _poller_cb, &poll1_counter); + poll2_ptr = ecore_poller_add(ECORE_POLLER_CORE, poll2_interval, _poller_cb, &poll2_counter); + poll3_ptr = ecore_poller_add(ECORE_POLLER_CORE, poll3_interval, _poller_cb, &poll3_counter); + + /* Add one time processed quit poller */ + ecore_poller_add(ECORE_POLLER_CORE, 8, _quit_cb, &did); + + /* Enter main loop and wait 8 intervals for quit */ + ecore_main_loop_begin(); + + /* Check each poller poll interval */ + fail_if(ecore_poller_poller_interval_get(poll1_ptr) != poll1_interval); + fail_if(ecore_poller_poller_interval_get(poll2_ptr) != poll2_interval); + fail_if(ecore_poller_poller_interval_get(poll3_ptr) != poll3_interval); + + /* Check each poller call counter */ + ck_assert_int_eq(8, poll1_counter); + ck_assert_int_eq(4, poll2_counter); + ck_assert_int_eq(2, poll3_counter); + + /* Destroy renewable pollers */ + ecore_poller_del(poll3_ptr); + ecore_poller_del(poll2_ptr); + ecore_poller_del(poll1_ptr); + + fail_if(did == EINA_FALSE); + +} +EFL_END_TEST + +void ecore_test_ecore_poller(TCase *tc) +{ + tcase_add_test(tc, ecore_test_ecore_main_loop_poller); + tcase_add_test(tc, ecore_test_ecore_main_loop_poller_add); + tcase_add_test(tc, ecore_test_ecore_main_loop_poller_del); + tcase_add_test(tc, ecore_test_ecore_main_loop_poller_modify); +}