1 #ifdef HAVE_CONFIG_H
2 # include <config.h>
3 #endif
4
5 #include <unistd.h>
6 #include <stdio.h>
7
8 #define EFL_GFX_FILTER_BETA
9 #define EFL_CANVAS_LAYOUT_BETA
10
11 #include "edje_suite.h"
12
13 #define EVAS_DATA_DIR TESTS_SRC_DIR "/../../lib/evas"
14
15
EFL_START_TEST(edje_test_swallows)16 EFL_START_TEST(edje_test_swallows)
17 {
18 Evas *evas = _setup_evas();
19 Evas_Object *ly, *o1, *o2;
20
21 ly = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas);
22 fail_unless(edje_object_file_set(ly, test_layout_get("test_swallows.edj"), "test_group"));
23
24 fail_unless(edje_object_part_exists(ly, "swallow"));
25
26
27 o1 = efl_add(EFL_CANVAS_LAYOUT_CLASS, ly);
28 fail_if(!edje_object_part_swallow(ly, "swallow", o1));
29 ck_assert_ptr_eq(efl_parent_get(o1), ly);
30
31 edje_object_part_unswallow(ly, o1);
32 ck_assert_ptr_eq(efl_parent_get(o1), evas_object_evas_get(o1));
33
34 fail_if(!edje_object_part_swallow(ly, "swallow", o1));
35 ck_assert_ptr_eq(efl_parent_get(o1), ly);
36
37 o2 = efl_add(EFL_CANVAS_LAYOUT_CLASS, ly);
38 fail_if(!edje_object_part_swallow(ly, "swallow", o2));
39 ck_assert_ptr_eq(efl_parent_get(o2), ly);
40 /* o1 is deleted at this point. */
41 ck_assert_ptr_eq(efl_parent_get(o1), evas_object_evas_get(o1));
42
43 }
44 EFL_END_TEST
45
EFL_START_TEST(edje_test_swallows_lifetime)46 EFL_START_TEST(edje_test_swallows_lifetime)
47 {
48 Evas *evas = _setup_evas();
49 Evas_Object *ly, *o1;
50
51 ly = edje_object_add(evas);
52 fail_unless(edje_object_file_set(ly, test_layout_get("test_swallows.edj"), "test_group"));
53
54 fail_unless(edje_object_part_exists(ly, "swallow"));
55
56 o1 = edje_object_add(evas);
57 fail_if(!edje_object_part_swallow(ly, "swallow", o1));
58
59 evas_object_del(ly);
60 fail_if(!efl_parent_get(o1));
61
62 }
63 EFL_END_TEST
64
65 static void
edje_test_swallows_invalidate_del(void * data,Evas * e EINA_UNUSED,Evas_Object * obj,void * event_info EINA_UNUSED)66 edje_test_swallows_invalidate_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
67 {
68 ck_assert(data == edje_object_part_swallow_get(obj, "swallow"));
69 }
70
EFL_START_TEST(edje_test_swallows_invalidate)71 EFL_START_TEST(edje_test_swallows_invalidate)
72 {
73 Evas *evas = _setup_evas();
74 Evas_Object *ly, *o1;
75
76 ly = edje_object_add(evas);
77 fail_unless(edje_object_file_set(ly, test_layout_get("test_swallows.edj"), "test_group"));
78
79 fail_unless(edje_object_part_exists(ly, "swallow"));
80
81 o1 = edje_object_add(evas);
82 fail_if(!edje_object_part_swallow(ly, "swallow", o1));
83
84 evas_object_event_callback_add(ly, EVAS_CALLBACK_DEL, edje_test_swallows_invalidate_del, o1);
85
86 evas_object_del(ly);
87 fail_if(!efl_parent_get(o1));
88
89 }
90 EFL_END_TEST
91
EFL_START_TEST(edje_test_swallows_eoapi)92 EFL_START_TEST(edje_test_swallows_eoapi)
93 {
94 Evas *evas = _setup_evas();
95 Evas_Object *ly, *o1, *o2;
96
97 ly = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas);
98 fail_unless(edje_object_file_set(ly, test_layout_get("test_swallows.edj"), "test_group"));
99
100 fail_unless(edje_object_part_exists(ly, "swallow"));
101
102
103 o1 = efl_add(EFL_CANVAS_LAYOUT_CLASS, ly);
104 fail_if(!efl_content_set(efl_part(ly, "swallow"), o1));
105 ck_assert_ptr_eq(efl_parent_get(o1), ly);
106
107 efl_canvas_layout_content_remove(ly, o1);
108 ck_assert_ptr_eq(efl_parent_get(o1), evas_object_evas_get(o1));
109
110 fail_if(!efl_content_set(efl_part(ly, "swallow"), o1));
111 ck_assert_ptr_eq(efl_parent_get(o1), ly);
112
113 o2 = efl_add(EFL_CANVAS_LAYOUT_CLASS, ly);
114 fail_if(!efl_content_set(efl_part(ly, "swallow"), o2));
115 ck_assert_ptr_eq(efl_parent_get(o2), ly);
116 /* o1 is deleted at this point. */
117 ck_assert_ptr_eq(efl_parent_get(o1), evas_object_evas_get(o1));
118
119 }
120 EFL_END_TEST
121
EFL_START_TEST(edje_test_swallows_container_api)122 EFL_START_TEST(edje_test_swallows_container_api)
123 {
124 Evas *evas = _setup_evas();
125 Evas_Object *ly, *o1;
126
127 ly = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas);
128 fail_unless(edje_object_file_set(ly, test_layout_get("test_swallows.edj"), "test_group"));
129
130 fail_unless(edje_object_part_exists(ly, "swallow"));
131
132 o1 = efl_add(EFL_CANVAS_LAYOUT_CLASS, ly);
133 fail_if(!efl_content_set(efl_part(ly, "swallow"), o1));
134
135 ck_assert_int_eq(efl_content_count(ly), 1);
136
137 {
138 Eina_Array *arr = eina_array_new(1);
139 Eina_Iterator *iter = efl_content_iterate(ly);
140 Eo *content;
141
142 EINA_ITERATOR_FOREACH(iter, content)
143 {
144 eina_array_push(arr, content);
145 }
146
147 ck_assert_int_eq(eina_array_count(arr), 1);
148 ck_assert_ptr_eq(eina_array_data_get(arr, 0), o1);
149 eina_array_free(arr);
150 }
151
152 }
153 EFL_END_TEST
154
edje_test_swallow(TCase * tc)155 void edje_test_swallow(TCase *tc)
156 {
157 tcase_add_test(tc, edje_test_swallows);
158 tcase_add_test(tc, edje_test_swallows_lifetime);
159 tcase_add_test(tc, edje_test_swallows_invalidate);
160 tcase_add_test(tc, edje_test_swallows_eoapi);
161 tcase_add_test(tc, edje_test_swallows_container_api);
162 }
163