efl
158 строк · 4.5 Кб
1#ifdef HAVE_CONFIG_H2# include "elementary_config.h"3#endif4
5#define EFL_ACCESS_OBJECT_BETA6#include <Elementary.h>7#include "elm_suite.h"8
9#include "elm_priv.h"10#include "elm_widget_hoversel.h"11
12EFL_START_TEST(elm_hoversel_legacy_type_check)13{
14Evas_Object *win, *hoversel;15const char *type;16
17win = win_add(NULL, "hoversel", ELM_WIN_BASIC);18
19hoversel = elm_hoversel_add(win);20
21type = elm_object_widget_type_get(hoversel);22ck_assert(type != NULL);23ck_assert(!strcmp(type, "Elm_Hoversel"));24
25type = evas_object_type_get(hoversel);26ck_assert(type != NULL);27ck_assert(!strcmp(type, "elm_hoversel"));28
29}
30EFL_END_TEST
31
32EFL_START_TEST(elm_atspi_role_get)33{
34Evas_Object *win, *hoversel;35Efl_Access_Role role;36
37win = win_add(NULL, "hoversel", ELM_WIN_BASIC);38
39hoversel = elm_hoversel_add(win);40role = efl_access_object_role_get(hoversel);41
42ck_assert(role == EFL_ACCESS_ROLE_PUSH_BUTTON);43
44}
45EFL_END_TEST
46
47EFL_START_TEST(elm_test_hoversel_behavior)48{
49Eo *hoversel, *win = win_add();50unsigned int i;51const char *callbacks[] =52{53"expanded",54"clicked",55"selected",56"item,focused",57"item,unfocused",58"dismissed",59};60int count[EINA_C_ARRAY_LENGTH(callbacks)] = {0};61
62evas_object_resize(win, 500, 500);63hoversel = elm_hoversel_add(win);64evas_object_geometry_set(hoversel, 25, 25, 50, 50);65elm_hoversel_hover_parent_set(hoversel, win);66elm_object_text_set(hoversel, "Vertical");67elm_hoversel_item_add(hoversel, "Item 1", NULL, ELM_ICON_NONE, NULL, NULL);68elm_hoversel_item_add(hoversel, "Item 2", NULL, ELM_ICON_NONE, NULL, NULL);69elm_hoversel_item_add(hoversel, "Item 3", NULL, ELM_ICON_NONE, NULL, NULL);70elm_hoversel_item_add(hoversel, "Item 4 - Long Label Here", "close", ELM_ICON_STANDARD, NULL, NULL);71
72evas_object_show(win);73evas_object_show(hoversel);74elm_object_focus_set(hoversel, EINA_TRUE);75for (i = 0; i < EINA_C_ARRAY_LENGTH(count); i++)76{77evas_object_smart_callback_add(hoversel, callbacks[i],78(void*)event_callback_single_call_int_data, &count[i]);79}80evas_object_smart_callback_add(hoversel, "dismissed",81(void*)event_callback_that_quits_the_main_loop_when_called, NULL);82get_me_to_those_events(win);83assert_object_size_eq(hoversel, 50, 50);84click_object(hoversel);85get_me_to_those_events(win);86
87/* expanded */88ck_assert_int_eq(count[0], 1);89wait_timer(0.6); // from default theme90ecore_main_loop_iterate();91
92ELM_HOVERSEL_DATA_GET(hoversel, sd);93click_object(eina_list_data_get(elm_box_children_get(sd->bx)));94get_me_to_those_events(win);95
96/* clicked */97ck_assert_int_eq(count[1], 1);98/* selected */99ck_assert_int_eq(count[2], 1);100/* item,focused */101ck_assert_int_eq(count[3], 1);102/* item,focused */103ck_assert_int_eq(count[4], 1);104ecore_main_loop_begin();105
106/* dismissed */107ck_assert_int_eq(count[5], 1);108}
109EFL_END_TEST
110
111EFL_START_TEST(elm_test_hoversel_position)112{
113Eo *hoversel, *win = win_add();114
115evas_object_resize(win, 500, 500);116hoversel = elm_hoversel_add(win);117evas_object_geometry_set(hoversel, 450, 450, 50, 50);118elm_hoversel_hover_parent_set(hoversel, win);119elm_object_text_set(hoversel, "Vertical");120elm_hoversel_item_add(hoversel, "Item 1", NULL, ELM_ICON_NONE, NULL, NULL);121elm_hoversel_item_add(hoversel, "Item 2", NULL, ELM_ICON_NONE, NULL, NULL);122elm_hoversel_item_add(hoversel, "Item 3", NULL, ELM_ICON_NONE, NULL, NULL);123elm_hoversel_item_add(hoversel, "Item 4 - Long Label Here", "close", ELM_ICON_STANDARD, NULL, NULL);124
125evas_object_show(win);126evas_object_show(hoversel);127elm_object_focus_set(hoversel, EINA_TRUE);128
129get_me_to_those_events(win);130assert_object_size_eq(hoversel, 50, 50);131click_object(hoversel);132get_me_to_those_events(win);133
134wait_timer(0.6); // from default theme135ecore_main_loop_iterate();136
137ELM_HOVERSEL_DATA_GET(hoversel, sd);138{139int x, y, w, h;140Eo *item = eina_list_data_get(elm_box_children_get(sd->bx));141evas_object_geometry_get(item, &x, &y, &w, &h);142
143/* verify that all buttons are in-canvas */144ck_assert_int_le(x + w, 500);145ck_assert_int_le(y + h, 500);146}147
148evas_object_del(hoversel);149}
150EFL_END_TEST
151
152void elm_test_hoversel(TCase *tc)153{
154tcase_add_test(tc, elm_hoversel_legacy_type_check);155tcase_add_test(tc, elm_atspi_role_get);156tcase_add_test(tc, elm_test_hoversel_behavior);157tcase_add_test(tc, elm_test_hoversel_position);158}
159