transient_for_below: fix bug of below_lower2 test
[platform/core/uifw/e-tizen-testcase.git] / src / testcase / 0014_transient_for_below.cpp
1 #include "e_test_event.h"
2 #include "e_test_base.h"
3
4 class etTestTransientForBelow : public ::etTCBase
5 {
6  public:
7     etTestTransientForBelow() { };
8     ~etTestTransientForBelow() { };
9
10  protected:
11     etWin *tw_parent = NULL;
12     etWin *tw_base = NULL;
13     std::string testCaseName;
14     std::string testName;
15
16     void initTC(Eina_Bool show_win);
17     void makeTransientBelowChild(etWin **win, etWin *parent, int x, int y, int w, int h, E_TC_Win_Color color, const char *name);
18 };
19
20 void
21 etTestTransientForBelow::initTC(Eina_Bool show_win)
22 {
23    const ::testing::TestInfo *const test_info = ::testing::UnitTest::GetInstance()->current_test_info();
24
25    tw_base = initNormalWin("TCWin_Normal_normal", 0, 0, 480, 800, E_TC_WIN_COLOR_BLACK);
26    if (show_win)
27      {
28         showTCWin(tw_base);
29         ASSERT_VIS_ON(tw_base);
30      }
31    ASSERT_TRUE(tw_base != NULL) << "failed to initiation window";
32
33    tw_parent = initNormalWin("TCWin_Normal_parent", 50, 50, 300, 300, E_TC_WIN_COLOR_RED);
34    if (show_win)
35      {
36         showTCWin(tw_parent);
37         ASSERT_VIS_ON(tw_parent);
38      }
39    ASSERT_TRUE(tw_parent != NULL) << "failed to initiation window";
40
41    testCaseName = test_info->test_case_name();
42    testName = test_info->name();
43 }
44
45 void
46 etTestTransientForBelow::makeTransientBelowChild(etWin **win, etWin *parent, int x, int y, int w, int h, E_TC_Win_Color color, const char *name)
47 {
48    Eina_Bool res;
49    etWin *temp_win = NULL;
50
51    temp_win = initNormalWin(name, x, y, w, h, color);
52    ASSERT_TRUE(temp_win != NULL) << "failed to create window";
53
54    res = etRunner::get().setWinTransientForBelow(temp_win, parent, EINA_TRUE);
55    ASSERT_TRUE(res);
56    etRunner::get().work(0.1); // wait for activate done. It does not change stack.
57
58    showTCWin(temp_win);
59    ASSERT_VIS_ON(temp_win);
60
61    *win = temp_win;
62 }
63
64 TEST_F(etTestTransientForBelow, transient_for_below_basic)
65 {
66    etWin *tw = NULL;
67    etWin *tw_child = NULL;
68    Eina_List *list = NULL, *l = NULL;
69    int pass_count = 0;
70
71    // init TC window, show=true, geom=true
72    initTC(EINA_TRUE);
73
74    makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child");
75
76    // Expected stack res:
77    // [Top] tw_parent -> tw_child -> tw_base [Bottom]
78    list = etRunner::get().getWinInfoList();
79    ASSERT_TRUE(list != NULL);
80
81    EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
82      {
83         if (tw->layer > 200) continue;
84
85         if (pass_count == 0)
86           {
87              ASSERT_EQ(tw->native_win, tw_parent->native_win);
88              pass_count++;
89              continue;
90           }
91         else if (pass_count == 1)
92           {
93              ASSERT_EQ(tw->native_win, tw_child->native_win);
94              pass_count++;
95              continue;
96           }
97         else
98           {
99              ASSERT_EQ(tw->native_win, tw_base->native_win);
100              pass_count++;
101           }
102
103         break;
104      }
105    etRunner::get().freeWinInfoList(list);
106
107    ASSERT_EQ(3, pass_count);
108    //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
109 }
110
111 TEST_F(etTestTransientForBelow, transient_for_below_basic2)
112 {
113    etWin *tw = NULL;
114    etWin *tw_child = NULL;
115    etWin *tw_child2 = NULL;
116    Eina_List *list = NULL, *l = NULL;
117    int pass_count = 0;
118
119    // init TC window, show=true, geom=true
120    initTC(EINA_TRUE);
121
122    makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child");
123    makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2");
124
125    // Expected stack res:
126    // [Top] tw_parent -> tw_child -> tw_child2 -> tw_base [Bottom]
127    list = etRunner::get().getWinInfoList();
128    ASSERT_TRUE(list != NULL);
129
130    EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
131      {
132         if (tw->layer > 200) continue;
133
134         if (pass_count == 0)
135           {
136              ASSERT_EQ(tw->native_win, tw_parent->native_win);
137              pass_count++;
138              continue;
139           }
140         else if (pass_count == 1)
141           {
142              ASSERT_EQ(tw->native_win, tw_child->native_win);
143              pass_count++;
144              continue;
145           }
146         else if (pass_count == 2)
147           {
148              ASSERT_EQ(tw->native_win, tw_child2->native_win);
149              pass_count++;
150              continue;
151           }
152         else
153           {
154              ASSERT_EQ(tw->native_win, tw_base->native_win);
155              pass_count++;
156           }
157
158         break;
159      }
160    etRunner::get().freeWinInfoList(list);
161
162    ASSERT_EQ(4, pass_count);
163    //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
164 }
165
166 TEST_F(etTestTransientForBelow, transient_for_below_raise)
167 {
168    etWin *tw = NULL;
169    etWin *tw_child = NULL;
170    etWin *tw_child2 = NULL;
171    Eina_List *list = NULL, *l = NULL;
172    int pass_count = 0;
173
174    // init TC window, show=true, geom=true
175    initTC(EINA_TRUE);
176
177    makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child");
178    makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2");
179
180    // Expected stack res:
181    // [Top] tw_parent -> tw_child -> tw_child2 -> tw_base [Bottom]
182
183    // Raise tw_child2
184    etRunner::get().setWinStack(tw_child2, NULL, EINA_TRUE);
185    ASSERT_EVENT(tw_child2, E_TC_EVENT_TYPE_STACK_RAISE);
186
187    // Expected stack res:
188    // [Top] tw_parent -> tw_child2 -> tw_child -> tw_base [Bottom]
189    list = etRunner::get().getWinInfoList();
190    ASSERT_TRUE(list != NULL);
191
192    EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
193      {
194         if (tw->layer > 200) continue;
195
196         if (pass_count == 0)
197           {
198              ASSERT_EQ(tw->native_win, tw_parent->native_win);
199              pass_count++;
200              continue;
201           }
202         else if (pass_count == 1)
203           {
204              ASSERT_EQ(tw->native_win, tw_child2->native_win);
205              pass_count++;
206              continue;
207           }
208         else if (pass_count == 2)
209           {
210              ASSERT_EQ(tw->native_win, tw_child->native_win);
211              pass_count++;
212              continue;
213           }
214         else
215           {
216              ASSERT_EQ(tw->native_win, tw_base->native_win);
217              pass_count++;
218           }
219
220         break;
221      }
222    etRunner::get().freeWinInfoList(list);
223
224    ASSERT_EQ(4, pass_count);
225    //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
226 }
227
228 TEST_F(etTestTransientForBelow, transient_for_below_lower)
229 {
230    etWin *tw = NULL;
231    etWin *tw_child = NULL;
232    etWin *tw_child2 = NULL;
233    Eina_List *list = NULL, *l = NULL;
234    int pass_count = 0;
235
236    // init TC window, show=true, geom=true
237    initTC(EINA_TRUE);
238
239    makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child");
240    makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2");
241
242    // Expected stack res:
243    // [Top] tw_parent -> tw_child -> tw_child2 -> tw_base [Bottom]
244
245    // Lower tw_child2
246    etRunner::get().setWinStack(tw_child2, NULL, EINA_FALSE);
247
248    // Expected stack res:
249    // [Top] tw_parent -> tw_child -> tw_child2 -> tw_base [Bottom]
250    list = etRunner::get().getWinInfoList();
251    ASSERT_TRUE(list != NULL);
252
253    EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
254      {
255         if (tw->layer > 200) continue;
256
257         if (pass_count == 0)
258           {
259              ASSERT_EQ(tw->native_win, tw_parent->native_win);
260              pass_count++;
261              continue;
262           }
263         else if (pass_count == 1)
264           {
265              ASSERT_EQ(tw->native_win, tw_child->native_win);
266              pass_count++;
267              continue;
268           }
269         else if (pass_count == 2)
270           {
271              ASSERT_EQ(tw->native_win, tw_child2->native_win);
272              pass_count++;
273              continue;
274           }
275         else
276           {
277              ASSERT_EQ(tw->native_win, tw_base->native_win);
278              pass_count++;
279           }
280
281         break;
282      }
283    etRunner::get().freeWinInfoList(list);
284
285    ASSERT_EQ(4, pass_count);
286    //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
287 }
288
289 TEST_F(etTestTransientForBelow, transient_for_below_lower2)
290 {
291    etWin *tw = NULL;
292    etWin *tw_child = NULL;
293    etWin *tw_child2 = NULL;
294    Eina_List *list = NULL, *l = NULL;
295    int pass_count = 0;
296
297    // init TC window, show=true, geom=true
298    initTC(EINA_TRUE);
299
300    makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child");
301    makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2");
302
303    // Expected stack res:
304    // [Top] tw_parent -> tw_child -> tw_child2 -> tw_base [Bottom]
305
306    // Lower tw_child
307    etRunner::get().setWinStack(tw_child, NULL, EINA_FALSE);
308    ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_BELOW);
309
310    // Expected stack res:
311    // [Top] tw_parent -> tw_child2 -> tw_child -> tw_base [Bottom]
312    list = etRunner::get().getWinInfoList();
313    ASSERT_TRUE(list != NULL);
314
315    EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
316      {
317         if (tw->layer > 200) continue;
318
319         if (pass_count == 0)
320           {
321              ASSERT_EQ(tw->native_win, tw_parent->native_win);
322              pass_count++;
323              continue;
324           }
325         else if (pass_count == 1)
326           {
327              ASSERT_EQ(tw->native_win, tw_child2->native_win);
328              pass_count++;
329              continue;
330           }
331         else if (pass_count == 2)
332           {
333              ASSERT_EQ(tw->native_win, tw_child->native_win);
334              pass_count++;
335              continue;
336           }
337         else
338           {
339              ASSERT_EQ(tw->native_win, tw_base->native_win);
340              pass_count++;
341           }
342
343         break;
344      }
345    etRunner::get().freeWinInfoList(list);
346
347    ASSERT_EQ(4, pass_count);
348    //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
349 }
350