1 #ifdef HAVE_CONFIG_H
2 # include "elementary_config.h"
3 #endif
4 
5 #define EFL_ACCESS_OBJECT_BETA
6 #include <Elementary.h>
7 #include "elm_suite.h"
8 
EFL_START_TEST(elm_layout_test_legacy_type_check)9 EFL_START_TEST(elm_layout_test_legacy_type_check)
10 {
11    Evas_Object *win, *layout;
12    const char *type;
13 
14    win = win_add(NULL, "layout", ELM_WIN_BASIC);
15 
16    layout = elm_layout_add(win);
17 
18    type = elm_object_widget_type_get(layout);
19    ck_assert(type != NULL);
20    ck_assert(!strcmp(type, "Elm_Layout"));
21 
22    type = evas_object_type_get(layout);
23    ck_assert(type != NULL);
24    ck_assert(!strcmp(type, "elm_layout"));
25 
26 }
27 EFL_END_TEST
28 
EFL_START_TEST(elm_atspi_role_get)29 EFL_START_TEST(elm_atspi_role_get)
30 {
31    Evas_Object *win, *layout;
32    Efl_Access_Role role;
33 
34    win = win_add(NULL, "layout", ELM_WIN_BASIC);
35 
36    layout = elm_layout_add(win);
37    role = efl_access_object_role_get(layout);
38 
39    ck_assert(role == EFL_ACCESS_ROLE_FILLER);
40 
41 }
42 EFL_END_TEST
43 
EFL_START_TEST(elm_layout_test_swallows)44 EFL_START_TEST(elm_layout_test_swallows)
45 {
46    char buf[PATH_MAX];
47    Evas_Object *win, *ly, *bt, *bt2;
48 
49    win = win_add(NULL, "layout", ELM_WIN_BASIC);
50 
51    ly = elm_layout_add(win);
52    snprintf(buf, sizeof(buf), "%s/objects/test.edj", ELM_TEST_DATA_DIR);
53    elm_layout_file_set(ly, buf, "layout");
54    evas_object_show(ly);
55 
56    bt = elm_button_add(ly);
57    fail_if(!elm_layout_content_set(ly, "element1", bt));
58    ck_assert_ptr_eq(efl_parent_get(bt), ly);
59 
60    bt = elm_object_part_content_unset(ly, "element1");
61    ck_assert_ptr_eq(efl_parent_get(bt), evas_object_evas_get(bt));
62 
63    fail_if(!elm_layout_content_set(ly, "element1", bt));
64    ck_assert_ptr_eq(efl_parent_get(bt), ly);
65 
66    bt2 = elm_button_add(ly);
67    fail_if(!elm_layout_content_set(ly, "element1", bt2));
68    ck_assert_ptr_eq(efl_parent_get(bt2), ly);
69 
70 }
71 EFL_END_TEST
72 
EFL_START_TEST(elm_layout_test_sizing)73 EFL_START_TEST(elm_layout_test_sizing)
74 {
75    Evas_Object *win, *ly, *rect;
76    int w, h;
77 
78    win = win_add(NULL, "layout", ELM_WIN_BASIC);
79    evas_object_show(win);
80 
81    rect = evas_object_rectangle_add(evas_object_evas_get(win));
82 
83    ly = elm_button_add(win);
84    elm_object_text_set(ly, "test");
85    elm_object_content_set(ly, rect);
86    evas_object_show(ly);
87 
88    /* verify that the button calc is the size of the text */
89    evas_object_smart_need_recalculate_set(ly, 1);
90    evas_object_smart_calculate(ly);
91    evas_object_size_hint_min_get(ly, &w, &h);
92    ck_assert_int_lt(w, 100);
93    ck_assert_int_gt(w, 0);
94    ck_assert_int_lt(h, 100);
95    ck_assert_int_gt(h, 0);
96 
97    /* verify that the button calc is the size of the text + minsize of rect */
98    evas_object_size_hint_min_set(rect, 100, 100);
99    evas_object_smart_need_recalculate_set(ly, 1);
100    evas_object_smart_calculate(ly);
101    evas_object_size_hint_min_get(ly, &w, &h);
102    ck_assert_int_ge(w, 100);
103    ck_assert_int_ge(h, 100);
104 
105    /* verify that the button calc is once again the size of the text */
106    evas_object_size_hint_min_set(rect, 0, 0);
107    evas_object_smart_need_recalculate_set(ly, 1);
108    evas_object_smart_calculate(ly);
109    evas_object_size_hint_min_get(ly, &w, &h);
110    ck_assert_int_lt(w, 100);
111    ck_assert_int_gt(w, 0);
112    ck_assert_int_lt(h, 100);
113    ck_assert_int_gt(h, 0);
114 }
115 EFL_END_TEST
116 
EFL_START_TEST(elm_layout_test_theme_changed_callback)117 EFL_START_TEST(elm_layout_test_theme_changed_callback)
118 {
119    Evas_Object *win, *ly;
120    int called = 0;
121 
122    win = win_add(NULL, "layout", ELM_WIN_BASIC);
123    evas_object_show(win);
124 
125    ly = elm_button_add(win);
126    evas_object_smart_callback_add(ly, "theme,changed", event_callback_single_call_int_data, &called);
127    evas_object_show(ly);
128    elm_object_style_set(ly, "anchor");
129    ck_assert_int_eq(called, 1);
130 }
131 EFL_END_TEST
132 
elm_test_layout(TCase * tc)133 void elm_test_layout(TCase *tc)
134 {
135    tcase_add_test(tc, elm_layout_test_legacy_type_check);
136    tcase_add_test(tc, elm_atspi_role_get);
137    tcase_add_test(tc, elm_layout_test_swallows);
138    tcase_add_test(tc, elm_layout_test_sizing);
139    tcase_add_test(tc, elm_layout_test_theme_changed_callback);
140 }
141