diff options
Diffstat (limited to 'src/tests/elementary/elm_test_win.c')
-rw-r--r-- | src/tests/elementary/elm_test_win.c | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/src/tests/elementary/elm_test_win.c b/src/tests/elementary/elm_test_win.c new file mode 100644 index 0000000000..b10d5610aa --- /dev/null +++ b/src/tests/elementary/elm_test_win.c @@ -0,0 +1,205 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif + +#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED +#define ELM_INTERFACE_ATSPI_COMPONENT_PROTECTED +#include <Elementary.h> +#include <Ecore_X.h> +#include "elm_suite.h" + +static const double _timeout1 = 0.01; +static const double _timeout2 = 0.02; +static const double _timeout_fail = 2.0; + +static void +_do_delete_request(Eo *win) +{ +#ifdef HAVE_ELEMENTARY_X + Ecore_X_Window xwin; + xwin = elm_obj_win_xwindow_get(win); + ecore_x_window_delete_request_send(xwin); +#endif + + (void) win; +} + + +static Eina_Bool +_timer_delete_request_cb(void *data) +{ + Eo *win = (Eo*) data; + _do_delete_request(win); + return ECORE_CALLBACK_PASS_ON; +} + +static Eina_Bool +_timer_hide_window_cb(void *data) +{ + Eo *win = (Eo*) data; + efl_gfx_visible_set(win, EINA_FALSE); + return ECORE_CALLBACK_PASS_ON; +} + +static Eina_Bool +_timer_exit_cb(void *data EINA_UNUSED) +{ + elm_exit(); + return ECORE_CALLBACK_PASS_ON; +} + +static Eina_Bool +_timer_fail_flag_cb(void *data) +{ + Eina_Bool *fail_flag = (Eina_Bool*) data; + *fail_flag = EINA_TRUE; + elm_exit(); + return ECORE_CALLBACK_PASS_ON; +} + + +START_TEST (elm_atspi_role_get) +{ + Evas_Object *win; + Elm_Atspi_Role role; + + elm_init(1, NULL); + win = elm_win_add(NULL, "win", ELM_WIN_BASIC); + + role = elm_interface_atspi_accessible_role_get(win); + + ck_assert(role == ELM_ATSPI_ROLE_WINDOW); + + elm_shutdown(); +} +END_TEST + +START_TEST (elm_atspi_component_position) +{ + Eina_Bool ret; + int x, y; + + elm_init(0, NULL); + + Eo *win = elm_win_add(NULL, "win", ELM_WIN_BASIC); + + ret = elm_interface_atspi_component_position_set(win, EINA_TRUE, 45, 45); + ck_assert(ret == EINA_TRUE); + + Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win)); + ck_assert(ee != NULL); + ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); + + ck_assert((x == 45) && (y == 45)); + + elm_shutdown(); +} +END_TEST + +START_TEST (elm_atspi_component_size) +{ + Eina_Bool ret; + int w, h; + + elm_init(0, NULL); + + Eo *win = elm_win_add(NULL, "win", ELM_WIN_BASIC); + evas_object_resize(win, 50, 50); + + ret = elm_interface_atspi_component_size_set(win, 100, 100); + ck_assert(ret == EINA_TRUE); + + evas_object_geometry_get(win, NULL, NULL, &w, &h); + ck_assert((w == 100) && (h == 100)); + + elm_shutdown(); +} +END_TEST + +START_TEST (elm_win_autohide) +{ + elm_init(0, NULL); + + Eo *win = elm_win_add(NULL, "win", ELM_WIN_BASIC); + elm_obj_win_autohide_set(win, EINA_TRUE); + efl_gfx_visible_set(win, EINA_TRUE); + + Eina_Bool fail_flag = EINA_FALSE; + ecore_timer_add(_timeout1, _timer_delete_request_cb, win); + ecore_timer_add(_timeout2, _timer_exit_cb, &fail_flag); + + elm_run(); + + Eina_Bool visible; + visible = efl_gfx_visible_get(win); + + ck_assert(visible == EINA_FALSE); + + elm_shutdown(); +} +END_TEST + +START_TEST (elm_win_policy_quit_last_window_hidden) +{ + elm_init(0, NULL); + + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN); + + Eo *win = elm_win_add(NULL, "win", ELM_WIN_BASIC); + efl_gfx_visible_set(win, EINA_TRUE); + + Eina_Bool fail_flag = EINA_FALSE; + ecore_timer_add(_timeout1, _timer_hide_window_cb, win); + ecore_timer_add(_timeout_fail, _timer_fail_flag_cb, &fail_flag); + + elm_run(); + + Eina_Bool visible; + visible = efl_gfx_visible_get(win); + + ck_assert(fail_flag == EINA_FALSE); + ck_assert(eo_ref_get(win) >= 1); + ck_assert(visible == EINA_FALSE); + + elm_shutdown(); +} +END_TEST + +START_TEST (elm_win_autohide_and_policy_quit_last_window_hidden) +{ + elm_init(0, NULL); + + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN); + + Eo *win = elm_win_add(NULL, "win", ELM_WIN_BASIC); + elm_obj_win_autohide_set(win, EINA_TRUE); + efl_gfx_visible_set(win, EINA_TRUE); + + Eina_Bool fail_flag = EINA_FALSE; + ecore_timer_add(_timeout1, _timer_delete_request_cb, win); + ecore_timer_add(_timeout_fail, _timer_fail_flag_cb, &fail_flag); + + elm_run(); + + Eina_Bool visible; + visible = efl_gfx_visible_get(win); + + ck_assert(fail_flag == EINA_FALSE); + ck_assert(eo_ref_get(win) >= 1); + ck_assert(visible == EINA_FALSE); + + elm_shutdown(); +} +END_TEST + +void elm_test_win(TCase *tc) +{ + tcase_add_test(tc, elm_atspi_role_get); + tcase_add_test(tc, elm_atspi_component_position); + tcase_add_test(tc, elm_atspi_component_size); + tcase_add_test(tc, elm_win_policy_quit_last_window_hidden); +#ifdef HAVE_ELEMENTARY_X + tcase_add_test(tc, elm_win_autohide); + tcase_add_test(tc, elm_win_autohide_and_policy_quit_last_window_hidden); +#endif +} |