1 #include "e_test_event.h"
2 #include "e_test_base.h"
4 class etTestIconicState : public ::etTCBase
7 etTestIconicState() { };
8 ~etTestIconicState() { };
12 etWin *tw_green = NULL;
13 etWin *tw_blue = NULL;
14 std::string testCaseName;
17 void initTC(Eina_Bool show_win, Eina_Bool usr_geom);
21 etTestIconicState::initTC(Eina_Bool show_win, Eina_Bool usr_geom)
23 const ::testing::TestInfo *const test_info = ::testing::UnitTest::GetInstance()->current_test_info();
25 tw_red = initNormalWin("TCWin_Normal_red", usr_geom);
26 ASSERT_TRUE(tw_red != NULL) << "failed to initiation window";
30 ASSERT_VIS_ON(tw_red);
33 tw_green = initNormalWin("TCWin_Normal_green", usr_geom);
34 ASSERT_TRUE(tw_green != NULL) << "failed to initiation window";
38 ASSERT_VIS_ON(tw_green);
39 ASSERT_ICONIFIED_BY_SERVER(tw_red);
42 tw_blue = initNormalWin("TCWin_Normal_blue", usr_geom);
43 ASSERT_TRUE(tw_blue != NULL) << "failed to initiation window";
47 ASSERT_VIS_ON(tw_blue);
48 ASSERT_ICONIFIED_BY_SERVER(tw_green);
51 testCaseName = test_info->test_case_name();
52 testName = test_info->name();
55 TEST_F(etTestIconicState, iconify_by_client_basic)
58 Eina_Bool res = EINA_FALSE;
59 Eina_List *list = NULL, *l = NULL;
62 // init TC window, show=true, geom=false
63 initTC(EINA_TRUE, EINA_FALSE);
66 res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE);
68 ASSERT_ICONIFIED(tw_blue);
70 // Expected stack res:
71 // [Top] Blue (iconified) -> Green -> Red [Bottom]
72 list = etRunner::get().getWinInfoList();
73 ASSERT_TRUE(list != NULL);
75 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
82 ASSERT_EQ(tw->native_win, tw_blue->native_win);
83 ASSERT_FALSE(tw->Vis.obj);
84 ASSERT_TRUE(tw->iconic.set);
85 ASSERT_TRUE(tw->iconic.by_client);
89 else if (pass_count == 1)
91 ASSERT_EQ(tw->native_win, tw_green->native_win);
92 ASSERT_TRUE(tw->Vis.obj);
93 ASSERT_FALSE(tw->iconic.set);
99 ASSERT_EQ(tw->native_win, tw_red->native_win);
100 ASSERT_TRUE(tw->iconic.set);
106 etRunner::get().freeWinInfoList(list);
108 ASSERT_EQ(3, pass_count);
110 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
113 TEST_F(etTestIconicState, iconify_by_client_basic2)
116 Eina_Bool res = EINA_FALSE;
117 Eina_List *list = NULL, *l = NULL;
120 // init TC window, show=true, geom=false
121 initTC(EINA_TRUE, EINA_FALSE);
124 res = etRunner::get().setWinIconic(tw_green, EINA_TRUE);
127 // Expected stack res:
128 // [Top] Blue -> Green (iconified) -> Red [Bottom]
129 list = etRunner::get().getWinInfoList();
130 ASSERT_TRUE(list != NULL);
132 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
139 ASSERT_EQ(tw->native_win, tw_blue->native_win);
140 ASSERT_TRUE(tw->Vis.obj);
141 ASSERT_FALSE(tw->iconic.set);
145 else if (pass_count == 1)
147 ASSERT_EQ(tw->native_win, tw_green->native_win);
148 ASSERT_FALSE(tw->Vis.obj);
149 ASSERT_TRUE(tw->iconic.set);
150 ASSERT_TRUE(tw->iconic.by_client);
156 ASSERT_EQ(tw->native_win, tw_red->native_win);
157 ASSERT_TRUE(tw->iconic.set);
163 etRunner::get().freeWinInfoList(list);
165 ASSERT_EQ(3, pass_count);
167 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
170 TEST_F(etTestIconicState, iconify_by_client_basic3)
173 Eina_Bool res = EINA_FALSE;
174 Eina_List *list = NULL, *l = NULL;
177 // init TC window, show=true, geom=false
178 initTC(EINA_TRUE, EINA_FALSE);
181 res = etRunner::get().setWinIconic(tw_green, EINA_TRUE);
186 ASSERT_VIS_OFF(tw_blue);
188 // Expected stack res:
189 // [Top] Blue (hide) -> Green (iconified) -> Red [Bottom]
190 list = etRunner::get().getWinInfoList();
191 ASSERT_TRUE(list != NULL);
193 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
200 ASSERT_EQ(tw->native_win, tw_blue->native_win);
201 ASSERT_FALSE(tw->Vis.obj);
202 ASSERT_FALSE(tw->iconic.set);
206 else if (pass_count == 1)
208 ASSERT_EQ(tw->native_win, tw_green->native_win);
209 ASSERT_FALSE(tw->Vis.obj);
210 ASSERT_TRUE(tw->iconic.set);
211 ASSERT_TRUE(tw->iconic.by_client);
217 ASSERT_EQ(tw->native_win, tw_red->native_win);
218 ASSERT_FALSE(tw->iconic.set);
224 etRunner::get().freeWinInfoList(list);
226 ASSERT_EQ(3, pass_count);
228 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
231 TEST_F(etTestIconicState, iconify_by_client_uniconify)
234 Eina_Bool res = EINA_FALSE;
235 Eina_List *list = NULL, *l = NULL;
238 // init TC window, show=true, geom=false
239 initTC(EINA_TRUE, EINA_FALSE);
242 res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE);
244 ASSERT_ICONIFIED(tw_blue);
247 res = etRunner::get().setWinIconic(tw_blue, EINA_FALSE);
249 tw_blue->setColor(0, 0, 250); // for buffer commit
250 ASSERT_UNICONIFIED(tw_blue);
252 // Expected stack res:
253 // [Top] Blue -> Green -> Red [Bottom]
254 list = etRunner::get().getWinInfoList();
255 ASSERT_TRUE(list != NULL);
257 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
264 ASSERT_EQ(tw->native_win, tw_blue->native_win);
265 ASSERT_TRUE(tw->Vis.obj);
266 ASSERT_FALSE(tw->iconic.set);
270 else if (pass_count == 1)
272 ASSERT_EQ(tw->native_win, tw_green->native_win);
273 ASSERT_FALSE(tw->Vis.obj);
274 ASSERT_TRUE(tw->iconic.set);
280 ASSERT_EQ(tw->native_win, tw_red->native_win);
281 ASSERT_TRUE(tw->iconic.set);
287 etRunner::get().freeWinInfoList(list);
289 ASSERT_EQ(3, pass_count);
291 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
294 TEST_F(etTestIconicState, iconify_by_client_uniconify2)
297 Eina_Bool res = EINA_FALSE;
298 Eina_List *list = NULL, *l = NULL;
301 // init TC window, show=true, geom=false
302 initTC(EINA_TRUE, EINA_FALSE);
305 res = etRunner::get().setWinIconic(tw_green, EINA_TRUE);
309 res = etRunner::get().setWinIconic(tw_green, EINA_FALSE);
311 tw_green->setColor(0, 250, 0); // for buffer commit
312 ASSERT_UNICONIFIED(tw_green);
314 // Expected stack res:
315 // [Top] Green -> Blue -> Red [Bottom]
316 list = etRunner::get().getWinInfoList();
317 ASSERT_TRUE(list != NULL);
319 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
326 ASSERT_EQ(tw->native_win, tw_green->native_win);
327 ASSERT_TRUE(tw->Vis.obj);
328 ASSERT_FALSE(tw->iconic.set);
332 else if (pass_count == 1)
334 ASSERT_EQ(tw->native_win, tw_blue->native_win);
335 ASSERT_FALSE(tw->Vis.obj);
336 ASSERT_TRUE(tw->iconic.set);
342 ASSERT_EQ(tw->native_win, tw_red->native_win);
343 ASSERT_TRUE(tw->iconic.set);
349 etRunner::get().freeWinInfoList(list);
351 ASSERT_EQ(3, pass_count);
353 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
356 TEST_F(etTestIconicState, iconify_by_client_uniconify3)
359 Eina_Bool res = EINA_FALSE;
360 Eina_List *list = NULL, *l = NULL;
363 // init TC window, show=true, geom=false
364 initTC(EINA_TRUE, EINA_FALSE);
367 res = etRunner::get().setWinIconic(tw_green, EINA_FALSE);
369 tw_green->setColor(0, 250, 0); // for buffer commit
370 ASSERT_UNICONIFIED(tw_green);
372 // Expected stack res:
373 // [Top] Green -> Blue -> Red [Bottom]
374 list = etRunner::get().getWinInfoList();
375 ASSERT_TRUE(list != NULL);
377 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
384 ASSERT_EQ(tw->native_win, tw_green->native_win);
385 ASSERT_TRUE(tw->Vis.obj);
386 ASSERT_FALSE(tw->iconic.set);
390 else if (pass_count == 1)
392 ASSERT_EQ(tw->native_win, tw_blue->native_win);
393 ASSERT_FALSE(tw->Vis.obj);
394 ASSERT_TRUE(tw->iconic.set);
400 ASSERT_EQ(tw->native_win, tw_red->native_win);
401 ASSERT_TRUE(tw->iconic.set);
407 etRunner::get().freeWinInfoList(list);
409 ASSERT_EQ(3, pass_count);
411 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
414 TEST_F(etTestIconicState, uniconify_by_above_alpha)
417 Eina_Bool res = EINA_FALSE;
418 Eina_List *list = NULL, *l = NULL;
421 // init TC window, show=true, geom=false
422 initTC(EINA_TRUE, EINA_FALSE);
424 etRunner::get().work(0.5);
426 // Expected stack res:
427 // [Top] Blue -> Green (iconified) -> Red (iconified) [Bottom]
428 list = etRunner::get().getWinInfoList();
429 ASSERT_TRUE(list != NULL);
431 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
438 ASSERT_EQ(tw->native_win, tw_blue->native_win);
439 ASSERT_TRUE(tw->Vis.obj);
440 ASSERT_FALSE(tw->iconic.set);
441 ASSERT_FALSE(tw->iconic.by_client);
445 else if (pass_count == 1)
447 ASSERT_EQ(tw->native_win, tw_green->native_win);
448 ASSERT_FALSE(tw->Vis.obj);
449 ASSERT_TRUE(tw->iconic.set);
450 ASSERT_FALSE(tw->iconic.by_client);
456 ASSERT_EQ(tw->native_win, tw_red->native_win);
457 ASSERT_FALSE(tw->Vis.obj);
458 ASSERT_TRUE(tw->iconic.set);
459 ASSERT_FALSE(tw->iconic.by_client);
465 etRunner::get().freeWinInfoList(list);
466 ASSERT_EQ(3, pass_count);
468 // Change Blue's alpha
469 elm_win_alpha_set(tw_blue->elm_win, EINA_TRUE);
470 etRunner::get().work(0.5);
472 // Expected stack res:
473 // [Top] Blue -> Green (uniconified) -> Red (iconified) [Bottom]
474 list = etRunner::get().getWinInfoList();
475 ASSERT_TRUE(list != NULL);
478 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
485 ASSERT_EQ(tw->native_win, tw_blue->native_win);
486 ASSERT_TRUE(tw->Vis.obj);
487 ASSERT_FALSE(tw->iconic.set);
488 ASSERT_FALSE(tw->iconic.by_client);
492 else if (pass_count == 1)
494 ASSERT_EQ(tw->native_win, tw_green->native_win);
495 ASSERT_TRUE(tw->Vis.obj);
496 ASSERT_FALSE(tw->iconic.set);
497 ASSERT_FALSE(tw->iconic.by_client);
503 ASSERT_EQ(tw->native_win, tw_red->native_win);
504 ASSERT_FALSE(tw->Vis.obj);
505 ASSERT_TRUE(tw->iconic.set);
506 ASSERT_FALSE(tw->iconic.by_client);
512 etRunner::get().freeWinInfoList(list);
514 ASSERT_EQ(3, pass_count);
516 //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
519 TEST_F(etTestIconicState, iconify_by_server_basic)
522 Eina_Bool res = EINA_FALSE;
523 Eina_List *list = NULL, *l = NULL;
526 // init TC window, show=false, geom=false
527 initTC(EINA_FALSE, EINA_FALSE);
530 res = showTCWin(tw_red);
532 ASSERT_VIS_ON(tw_red);
535 res = showTCWin(tw_green);
537 ASSERT_VIS_ON(tw_green);
539 // event check tw_red is iconified_by_server
540 ASSERT_ICONIFIED_BY_SERVER(tw_red);
542 // Expected stack res:
543 // [Top] Green -> Red (iconified by server) [Bottom]
544 list = etRunner::get().getWinInfoList();
545 ASSERT_TRUE(list != NULL);
547 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
554 ASSERT_EQ(tw->native_win, tw_green->native_win);
555 ASSERT_TRUE(tw->Vis.obj);
556 ASSERT_FALSE(tw->iconic.set);
562 ASSERT_EQ(tw->native_win, tw_red->native_win);
563 ASSERT_FALSE(tw->Vis.obj);
564 ASSERT_TRUE(tw->iconic.set);
565 ASSERT_FALSE(tw->iconic.by_client);
571 etRunner::get().freeWinInfoList(list);
573 ASSERT_EQ(2, pass_count);
575 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
578 TEST_F(etTestIconicState, iconify_by_server_uniconify)
581 Eina_Bool res = EINA_FALSE;
582 Eina_List *list = NULL, *l = NULL;
585 // init TC window, show=false, geom=false
586 initTC(EINA_FALSE, EINA_FALSE);
589 res = showTCWin(tw_red);
591 ASSERT_VIS_ON(tw_red);
594 res = showTCWin(tw_green);
596 ASSERT_VIS_ON(tw_green);
598 // event check tw_red is iconified_by_server
599 ASSERT_ICONIFIED_BY_SERVER(tw_red);
601 // change tw_green to 32bit colored window
602 elm_win_alpha_set(tw_green->elm_win, EINA_TRUE);
604 // event check tw_red is uniconified
605 tw_red->setColor(250, 0, 0); // for buffer commit
606 ASSERT_UNICONIFIED(tw_red);
608 // Expected stack res:
609 // [Top] Green (alpha) -> Red [Bottom]
610 list = etRunner::get().getWinInfoList();
611 ASSERT_TRUE(list != NULL);
613 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
620 ASSERT_EQ(tw->native_win, tw_green->native_win);
621 ASSERT_TRUE(tw->Vis.obj);
622 ASSERT_FALSE(tw->iconic.set);
628 ASSERT_EQ(tw->native_win, tw_red->native_win);
629 ASSERT_TRUE(tw->Vis.obj);
630 ASSERT_FALSE(tw->iconic.set);
636 etRunner::get().freeWinInfoList(list);
638 ASSERT_EQ(2, pass_count);
640 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
643 TEST_F(etTestIconicState, iconify_by_server_uniconify2)
646 Eina_List *list = NULL, *l = NULL;
649 // init TC window, show=true, geom=false
650 initTC(EINA_TRUE, EINA_FALSE);
652 // change all window to 32bit colored window
653 elm_win_alpha_set(tw_blue->elm_win, EINA_TRUE);
654 elm_win_alpha_set(tw_green->elm_win, EINA_TRUE);
655 elm_win_alpha_set(tw_red->elm_win, EINA_TRUE);
657 // event check tw_red is uniconified_by_server
658 ASSERT_UNICONIFIED(tw_red);
660 // Expected stack res:
661 // [Top] Blue -> Green -> Red [Bottom]
662 list = etRunner::get().getWinInfoList();
663 ASSERT_TRUE(list != NULL);
665 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
672 ASSERT_EQ(tw->native_win, tw_blue->native_win);
673 ASSERT_TRUE(tw->Vis.obj);
674 ASSERT_FALSE(tw->iconic.set);
678 else if (pass_count == 1)
680 ASSERT_EQ(tw->native_win, tw_green->native_win);
681 ASSERT_TRUE(tw->Vis.obj);
682 ASSERT_FALSE(tw->iconic.set);
688 ASSERT_EQ(tw->native_win, tw_red->native_win);
689 ASSERT_TRUE(tw->Vis.obj);
690 ASSERT_FALSE(tw->iconic.set);
696 etRunner::get().freeWinInfoList(list);
698 ASSERT_EQ(3, pass_count);
700 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);