Added TCs and Modified some TCs 74/71674/5
authorDoyoun Kang <doyoun.kang@samsung.com>
Thu, 26 May 2016 11:27:44 +0000 (20:27 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Wed, 1 Jun 2016 07:23:07 +0000 (00:23 -0700)
Change-Id: I32fe738b0b958aaa3af33b27d55210760ffd7844

packaging/e-tizen-testcase.spec
src/0100_base_operation.c
src/0150_base_operation_multi_wins.c [new file with mode: 0644]
src/0200_transient_for.c
src/0300_notification.c
src/Makefile.am
src/e_test_runner.c
src/e_test_runner.h

index 9f271023aafb1fe99c7675d11c138a036ed26aca..a40a0aab849ab9fe81e6ec499e36e0a8bcf3ea2a 100644 (file)
@@ -21,7 +21,6 @@ This package is a test case runner for enlightenment.
 %setup -q
 
 %build
-
 export GC_SECTIONS_FLAGS="-fdata-sections -ffunction-sections -Wl,--gc-sections"
 export CFLAGS+=" -Wall -g -fPIC -Werror -rdynamic ${GC_SECTIONS_FLAGS}"
 export LDFLAGS+=" -Wl,--hash-style=both -Wl,--as-needed -Wl,--rpath=/usr/lib"
index cf2a98e696429b0cba652e03ecefe57326b9e3f2..9f3816e6be55e8f2d6fb09f15630a82191b18902 100644 (file)
@@ -6,7 +6,7 @@ struct _E_TC_Data
 };
 
 static Eina_Bool _tc_pre_run(E_TC *tc, Eina_Bool alpha);
-static Eina_Bool _tc_post_run(E_TC *tc);
+static void      _tc_post_run(E_TC *tc);
 static void      _tc_shutdown(E_TC *tc);
 
 static Eina_Bool
@@ -19,8 +19,8 @@ _tc_pre_run(E_TC *tc, Eina_Bool alpha)
 
    tc->data->tw = e_tc_win_add(NULL, ELM_WIN_BASIC,
                                alpha, "tc",
-                               0, 0, 320, 320,
-                               200);
+                               0, 0, 320, 320, EINA_FALSE,
+                               200, E_TC_WIN_COLOR_GREEN);
    EINA_SAFETY_ON_NULL_GOTO(tc->data->tw, cleanup);
 
    res = e_test_runner_req_win_register(tc->runner, tc->data->tw);
@@ -41,12 +41,10 @@ cleanup:
    return EINA_FALSE;
 }
 
-static Eina_Bool
+static void
 _tc_post_run(E_TC *tc)
 {
    e_tc_win_hide(tc->data->tw);
-
-   return EINA_TRUE;
 }
 
 static void
@@ -70,12 +68,10 @@ tc_0100_win_show(E_TC *tc)
    res = _tc_pre_run(tc, EINA_FALSE);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
-   res = _tc_post_run(tc);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
    tc->passed = EINA_TRUE;
 
 cleanup:
+   _tc_post_run(tc);
    _tc_shutdown(tc);
 
    return tc->passed;
@@ -111,12 +107,10 @@ tc_0101_win_stack(E_TC *tc)
 
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
-   res = _tc_post_run(tc);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
    tc->passed = EINA_TRUE;
 
 cleanup:
+   _tc_post_run(tc);
    _tc_shutdown(tc);
    E_FREE_LIST(list, e_tc_win_del);
 
@@ -133,12 +127,10 @@ tc_0110_alpha_win_show(E_TC *tc)
    res = _tc_pre_run(tc, EINA_TRUE);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
-   res = _tc_post_run(tc);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
    tc->passed = EINA_TRUE;
 
 cleanup:
+   _tc_post_run(tc);
    _tc_shutdown(tc);
 
    return tc->passed;
@@ -174,12 +166,10 @@ tc_0111_alpha_win_stack(E_TC *tc)
 
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
-   res = _tc_post_run(tc);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
    tc->passed = EINA_TRUE;
 
 cleanup:
+   _tc_post_run(tc);
    _tc_shutdown(tc);
    E_FREE_LIST(list, e_tc_win_del);
 
diff --git a/src/0150_base_operation_multi_wins.c b/src/0150_base_operation_multi_wins.c
new file mode 100644 (file)
index 0000000..4acdc4c
--- /dev/null
@@ -0,0 +1,1172 @@
+#include "e_test_runner.h"
+
+struct _E_TC_Data
+{
+   E_TC_Win *tw_red;
+   E_TC_Win *tw_green;
+   E_TC_Win *tw_blue;
+   E_TC_Win *tw_register;
+};
+
+static Eina_Bool _tc_win_register(E_TC *tc, E_TC_Win *win);
+static void      _tc_win_unregister(E_TC *tc);
+static Eina_Bool _tc_pre_run(E_TC *tc, Eina_Bool alpha);
+static void      _tc_post_run(E_TC *tc);
+static void      _tc_shutdown(E_TC *tc);
+
+static Eina_Bool
+_tc_win_register(E_TC *tc, E_TC_Win *win)
+{
+   Eina_Bool res;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc->data, EINA_FALSE);
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(win, EINA_FALSE);
+
+   tc->data->tw_register = win;
+
+   res = e_test_runner_req_win_register(tc->runner, tc->data->tw_register);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
+
+   return EINA_TRUE;
+}
+
+static void
+_tc_win_unregister(E_TC *tc)
+{
+   EINA_SAFETY_ON_NULL_RETURN(tc);
+   EINA_SAFETY_ON_NULL_RETURN(tc->data);
+   EINA_SAFETY_ON_NULL_RETURN(tc->data->tw_register);
+
+   e_test_runner_req_win_deregister(tc->runner, tc->data->tw_register);
+   tc->data->tw_register = NULL;
+}
+
+
+static Eina_Bool
+_tc_pre_run(E_TC *tc, Eina_Bool show_win)
+{
+   Eina_Bool res;
+
+   tc->data = E_NEW(E_TC_Data, 1);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc->data, EINA_FALSE);
+
+   tc->data->tw_red = e_tc_win_add(NULL, ELM_WIN_BASIC,
+                                   EINA_FALSE, "red",
+                                   0, 0, 400, 400, EINA_TRUE,
+                                   200, E_TC_WIN_COLOR_RED);
+   EINA_SAFETY_ON_NULL_GOTO(tc->data->tw_red, cleanup);
+
+   if (show_win)
+     {
+        e_tc_win_geom_update(tc->data->tw_red);
+        e_tc_win_show(tc->data->tw_red);
+     }
+
+   tc->data->tw_green = e_tc_win_add(NULL, ELM_WIN_BASIC,
+                                     EINA_FALSE, "green",
+                                     150, 150, 320, 320, EINA_TRUE,
+                                     200, E_TC_WIN_COLOR_GREEN);
+   EINA_SAFETY_ON_NULL_GOTO(tc->data->tw_green, cleanup);
+
+   if (show_win)
+     {
+        e_tc_win_geom_update(tc->data->tw_green);
+        e_tc_win_show(tc->data->tw_green);
+     }
+
+   tc->data->tw_blue = e_tc_win_add(NULL, ELM_WIN_BASIC,
+                                    EINA_FALSE, "blue",
+                                    20, 350, 500, 500, EINA_TRUE,
+                                    200, E_TC_WIN_COLOR_BLUE);
+   EINA_SAFETY_ON_NULL_GOTO(tc->data->tw_blue, cleanup);
+
+   if (show_win)
+     {
+        _tc_win_register(tc, tc->data->tw_blue);
+
+        e_tc_win_geom_update(tc->data->tw_blue);
+        e_tc_win_show(tc->data->tw_blue);
+
+        res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
+        EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+     }
+
+   e_test_runner_work();
+
+   return EINA_TRUE;
+
+cleanup:
+   _tc_shutdown(tc);
+   return EINA_FALSE;
+}
+
+static void
+_tc_post_run(E_TC *tc)
+{
+   EINA_SAFETY_ON_NULL_RETURN(tc->data);
+
+   e_tc_win_hide(tc->data->tw_red);
+   e_tc_win_hide(tc->data->tw_green);
+   e_tc_win_hide(tc->data->tw_blue);
+}
+
+static void
+_tc_shutdown(E_TC *tc)
+{
+   EINA_SAFETY_ON_NULL_RETURN(tc->data);
+
+   _tc_win_unregister(tc);
+   e_tc_win_del(tc->data->tw_red);
+   e_tc_win_del(tc->data->tw_green);
+   e_tc_win_del(tc->data->tw_blue);
+
+   E_FREE(tc->data);
+}
+
+Eina_Bool
+tc_0150_multi_all_wins_basic(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_TRUE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+Eina_Bool
+tc_0151_multi_all_wins_show1(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_FALSE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // show red
+   e_tc_win_geom_update(tc->data->tw_red);
+   e_tc_win_show(tc->data->tw_red);
+
+   // show green
+   e_tc_win_geom_update(tc->data->tw_green);
+   e_tc_win_show(tc->data->tw_green);
+
+   // register blue
+   res = _tc_win_register(tc, tc->data->tw_blue);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // show blue
+   e_tc_win_geom_update(tc->data->tw_blue);
+   e_tc_win_show(tc->data->tw_blue);
+
+   // wait for showing register_win
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+Eina_Bool
+tc_0152_multi_all_wins_show2(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_FALSE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // show blue
+   e_tc_win_geom_update(tc->data->tw_blue);
+   e_tc_win_show(tc->data->tw_blue);
+
+   // show red
+   e_tc_win_geom_update(tc->data->tw_red);
+   e_tc_win_show(tc->data->tw_red);
+
+   // register green
+   res = _tc_win_register(tc, tc->data->tw_green);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // show green
+   e_tc_win_geom_update(tc->data->tw_green);
+   e_tc_win_show(tc->data->tw_green);
+
+   // wait for showing register_win
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Green -> Red -> Blue [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+
+Eina_Bool
+tc_0153_multi_all_wins_show3(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_FALSE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // show green
+   e_tc_win_geom_update(tc->data->tw_green);
+   e_tc_win_show(tc->data->tw_green);
+
+   // show blue
+   e_tc_win_geom_update(tc->data->tw_blue);
+   e_tc_win_show(tc->data->tw_blue);
+
+   // register red
+   res = _tc_win_register(tc, tc->data->tw_red);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // show red
+   e_tc_win_geom_update(tc->data->tw_red);
+   e_tc_win_show(tc->data->tw_red);
+
+   // wait for showing register_win
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Red -> Blue -> Green [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+Eina_Bool
+tc_0154_multi_all_wins_raise1(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_TRUE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+
+   // Raise Red
+   e_test_runner_req_win_stack_set(tc->runner, tw_red, NULL, EINA_TRUE);
+
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Red -> Blue -> Green [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+Eina_Bool
+tc_0155_multi_all_wins_raise2(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_TRUE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+
+   // Raise Green
+   e_test_runner_req_win_stack_set(tc->runner, tw_green, NULL, EINA_TRUE);
+
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Green -> Blue -> Red [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+Eina_Bool
+tc_0156_multi_all_wins_stack_above1(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_TRUE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+
+   // Raise Red on the Green
+   e_test_runner_req_win_stack_set(tc->runner, tw_red, tw_green, EINA_TRUE);
+
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Blue -> Red -> Green [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+
+Eina_Bool
+tc_0157_multi_all_wins_stack_above2(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_TRUE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+
+   // Raise Blue on the Red
+   e_test_runner_req_win_stack_set(tc->runner, tw_blue, tw_red, EINA_TRUE);
+
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Green -> Blue -> Red [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+Eina_Bool
+tc_0158_multi_all_wins_stack_above3(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_TRUE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+
+   // Raise Red on the Blue
+   e_test_runner_req_win_stack_set(tc->runner, tw_red, tw_blue, EINA_TRUE);
+
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Red -> Blue -> Green [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+Eina_Bool
+tc_0159_multi_all_wins_lower1(E_TC *tc)
+{
+   E_TC_Win *tw, *tw_above = NULL;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_TRUE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+
+   // Lower Blue
+   e_test_runner_req_win_stack_set(tc->runner, tw_blue, NULL, EINA_FALSE);
+
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Green -> Red -> ... -> Blue  [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+             tw_above = tw;
+             continue;
+
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+             tw_above = tw;
+             continue;
+          }
+        else
+          {
+             if (tw->layer < 200)
+               {
+                  EINA_SAFETY_ON_FALSE_GOTO((tw_above->native_win == tw_blue->native_win), cleanup);
+                  pass_count++;
+               }
+             else
+               {
+                  tw_above = tw;
+                  continue;
+               }
+          }
+
+        break;
+     }
+   // check the tw_above when there is no window under 200 layer.
+   if (tw == NULL)
+     {
+        EINA_SAFETY_ON_NULL_GOTO(tw_above, cleanup);
+        EINA_SAFETY_ON_FALSE_GOTO((tw_above->native_win == tw_blue->native_win), cleanup);
+        pass_count++;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+
+Eina_Bool
+tc_0160_multi_all_wins_lower2(E_TC *tc)
+{
+   E_TC_Win *tw, *tw_above = NULL;
+   E_TC_Win *tw_red, *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_TRUE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+
+   // Lower Green
+   e_test_runner_req_win_stack_set(tc->runner, tw_green, NULL, EINA_FALSE);
+
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Blue -> Red -> ... -> Green [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             tw_above = tw;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+             tw_above = tw;
+             continue;
+          }
+        else
+          {
+             if (tw->layer < 200)
+               {
+                  EINA_SAFETY_ON_FALSE_GOTO((tw_above->native_win == tw_green->native_win), cleanup);
+                  pass_count++;
+               }
+             else
+               {
+                  tw_above = tw;
+                  continue;
+               }
+          }
+
+        break;
+     }
+   // check the tw_above when there is no window under 200 layer.
+   if (tw == NULL)
+     {
+        EINA_SAFETY_ON_NULL_GOTO(tw_above, cleanup);
+        EINA_SAFETY_ON_FALSE_GOTO((tw_above->native_win == tw_green->native_win), cleanup);
+        pass_count++;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+
+Eina_Bool
+tc_0180_multi_2wins_show1(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_green;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_FALSE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_green = tc->data->tw_green;
+
+   // show green
+   e_tc_win_geom_update(tc->data->tw_green);
+   e_tc_win_show(tc->data->tw_green);
+
+   // register red
+   res = _tc_win_register(tc, tc->data->tw_red);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // show red
+   e_tc_win_geom_update(tc->data->tw_red);
+   e_tc_win_show(tc->data->tw_red);
+
+   // wait for showing register_win
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Red -> Green [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 2), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+
+Eina_Bool
+tc_0181_multi_2wins_show2(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_green, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_FALSE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_green = tc->data->tw_green;
+   tw_blue = tc->data->tw_blue;
+
+   // show blue
+   e_tc_win_geom_update(tc->data->tw_blue);
+   e_tc_win_show(tc->data->tw_blue);
+
+   // register green
+   res = _tc_win_register(tc, tc->data->tw_green);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // show green
+   e_tc_win_geom_update(tc->data->tw_green);
+   e_tc_win_show(tc->data->tw_green);
+
+   // wait for showing register_win
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Green -> Blue [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_green->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 2), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
+
+Eina_Bool
+tc_0182_multi_2wins_show3(E_TC *tc)
+{
+   E_TC_Win *tw;
+   E_TC_Win *tw_red, *tw_blue;
+   Eina_Bool res = EINA_FALSE;
+   Eina_List *list = NULL, *l;
+   int pass_count;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+
+   res = _tc_pre_run(tc, EINA_FALSE);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   tw_red = tc->data->tw_red;
+   tw_blue = tc->data->tw_blue;
+
+   // show red
+   e_tc_win_geom_update(tc->data->tw_red);
+   e_tc_win_show(tc->data->tw_red);
+
+   // register blue
+   res = _tc_win_register(tc, tc->data->tw_blue);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // show blue
+   e_tc_win_geom_update(tc->data->tw_blue);
+   e_tc_win_show(tc->data->tw_blue);
+
+   // wait for showing register_win
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] Blue -> Red [Bottom]
+
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   pass_count = 0;
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_blue->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_red->native_win), cleanup);
+             pass_count++;
+          }
+
+        break;
+     }
+
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 2), cleanup);
+
+   tc->passed = EINA_TRUE;
+
+cleanup:
+   _tc_post_run(tc);
+   _tc_shutdown(tc);
+   E_FREE_LIST(list, e_tc_win_del);
+
+   return tc->passed;
+}
+
index 345d404a778af1e503250592b7ebccb98b1e83bc..b5fa13bd1f82bcdc4ed96a11c79db0f348fae423 100644 (file)
@@ -8,7 +8,7 @@ struct _E_TC_Data
 };
 
 static Eina_Bool _tc_pre_run(E_TC *tc);
-static Eina_Bool _tc_post_run(E_TC *tc);
+static void      _tc_post_run(E_TC *tc);
 static void      _tc_shutdown(E_TC *tc);
 
 static Eina_Bool
@@ -21,20 +21,20 @@ _tc_pre_run(E_TC *tc)
 
    tc->data->tw_parent = e_tc_win_add(NULL, ELM_WIN_BASIC,
                                       EINA_FALSE, "parent",
-                                      0, 0, 400, 400,
-                                      200);
+                                      0, 0, 400, 400, EINA_FALSE,
+                                      200, E_TC_WIN_COLOR_BLUE);
    EINA_SAFETY_ON_NULL_GOTO(tc->data->tw_parent, cleanup);
 
    tc->data->tw_child = e_tc_win_add(tc->data->tw_parent, ELM_WIN_BASIC,
                                      EINA_FALSE, "child",
-                                     0, 0, 320, 320,
-                                     200);
+                                     0, 0, 320, 320, EINA_FALSE,
+                                     200, E_TC_WIN_COLOR_RED);
    EINA_SAFETY_ON_NULL_GOTO(tc->data->tw_child, cleanup);
 
    tc->data->tw = e_tc_win_add(NULL, ELM_WIN_BASIC,
                                EINA_FALSE, "tc",
-                               0, 0, 200, 200,
-                               200);
+                               200, 200, 500, 500, EINA_FALSE,
+                               200, E_TC_WIN_COLOR_GREEN);
    EINA_SAFETY_ON_NULL_GOTO(tc->data->tw, cleanup);
 
    res = e_test_runner_req_win_register(tc->runner, tc->data->tw);
@@ -49,7 +49,7 @@ _tc_pre_run(E_TC *tc)
    e_tc_win_geom_update(tc->data->tw_child);
    e_tc_win_show(tc->data->tw_child);
 
-   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_CHANGED);
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
    res = e_tc_win_transient_for_set(tc->data->tw_child,
@@ -66,14 +66,14 @@ cleanup:
    return EINA_FALSE;
 }
 
-static Eina_Bool
+static void
 _tc_post_run(E_TC *tc)
 {
+   EINA_SAFETY_ON_NULL_RETURN(tc->data);
+
    e_tc_win_hide(tc->data->tw_child);
    e_tc_win_hide(tc->data->tw);
    e_tc_win_hide(tc->data->tw_parent);
-
-   return EINA_TRUE;
 }
 
 static void
@@ -82,9 +82,9 @@ _tc_shutdown(E_TC *tc)
    EINA_SAFETY_ON_NULL_RETURN(tc->data);
 
    e_test_runner_req_win_deregister(tc->runner, tc->data->tw);
+   e_tc_win_del(tc->data->tw_child);
    e_tc_win_del(tc->data->tw_parent);
    e_tc_win_del(tc->data->tw);
-   e_tc_win_del(tc->data->tw_child);
 
    E_FREE(tc->data);
 }
@@ -92,47 +92,55 @@ _tc_shutdown(E_TC *tc)
 Eina_Bool
 tc_0200_transient_for_basic(E_TC *tc)
 {
-   E_TC_Win *tw, *tw2, *tw_parent, *tw_child;
-   E_TC_Win *tw_above = NULL;
+   E_TC_Win *tw, *tw_main, *tw_parent, *tw_child;
    Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l;
+   int pass_count = 0;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
 
    res = _tc_pre_run(tc);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
-   list = e_test_runner_req_win_info_list_get(tc->runner);
-   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
-
-   tw = tc->data->tw;
+   tw_main = tc->data->tw;
    tw_parent = tc->data->tw_parent;
    tw_child = tc->data->tw_child;
 
-   EINA_LIST_FOREACH(list, l, tw2)
-     {
-        if (tw2->layer > tw->layer) continue;
-        if (tw2->layer < tw->layer) break;
+   // Expected stack result:
+   // [Top] tw_main -> tw_child -> tw_parent [Bottom]
 
-        if (tw2->native_win == tw_parent->native_win)
+   list = e_test_runner_req_win_info_list_get(tc->runner);
+   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
+
+   EINA_LIST_FOREACH(list, l, tw)
+     {
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
           {
-             if ((tw_above) &&
-                 (tw_above->native_win == tw_child->native_win))
-               res = EINA_TRUE;
-             break;
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_main->native_win), cleanup);
+             pass_count++;
+             continue;
           }
-
-        tw_above = tw2;
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_child->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_parent->native_win), cleanup);
+             pass_count++;
+          }
+        break;
      }
 
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_post_run(tc);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
 
    tc->passed = EINA_TRUE;
 
 cleanup:
+   _tc_post_run(tc);
    _tc_shutdown(tc);
    E_FREE_LIST(list, e_tc_win_del);
 
@@ -142,20 +150,28 @@ cleanup:
 Eina_Bool
 tc_0201_transient_for_raise(E_TC *tc)
 {
-   E_TC_Win *tw_parent, *tw_child, *tw;
+   E_TC_Win *tw, *tw_main, *tw_parent, *tw_child;
    Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l;
+   int pass_count = 0;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
 
    res = _tc_pre_run(tc);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
+   tw_main = tc->data->tw;
    tw_parent = tc->data->tw_parent;
    tw_child = tc->data->tw_child;
 
+   // Expected stack result:
+   // [Top] tw_main -> tw_child -> tw_parent [Bottom]
+
    e_test_runner_req_win_stack_set(tc->runner, tw_parent, NULL, EINA_TRUE);
 
+   // Expected stack result:
+   // [Top] tw_child -> tw_parent -> tw_main [Bottom]
+
    res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
@@ -164,20 +180,33 @@ tc_0201_transient_for_raise(E_TC *tc)
 
    EINA_LIST_FOREACH(list, l, tw)
      {
-        if (tw->layer > tw_parent->layer) continue;
-
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_child->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_parent->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_main->native_win), cleanup);
+             pass_count++;
+          }
         break;
      }
 
-   EINA_SAFETY_ON_NULL_GOTO(tw, cleanup);
-   EINA_SAFETY_ON_FALSE_GOTO(tw->native_win == tw_child->native_win, cleanup);
-
-   res = _tc_post_run(tc);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
 
    tc->passed = EINA_TRUE;
 
 cleanup:
+   _tc_post_run(tc);
    _tc_shutdown(tc);
    E_FREE_LIST(list, e_tc_win_del);
 
@@ -187,43 +216,84 @@ cleanup:
 Eina_Bool
 tc_0202_transient_for_lower(E_TC *tc)
 {
-   E_TC_Win *tw_parent, *tw_child, *tw;
+   E_TC_Win *tw, *tw_main, *tw_parent, *tw_child;
+   E_TC_Win *tw_below = NULL;
    Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l;
+   int pass_count = 0;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
 
    res = _tc_pre_run(tc);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
+   tw_main = tc->data->tw;
    tw_parent = tc->data->tw_parent;
    tw_child = tc->data->tw_child;
 
+   // Expected stack result:
+   // [Top] tw_main -> tw_child -> tw_parent [Bottom]
+
+   // lower tw_parent
    e_test_runner_req_win_stack_set(tc->runner, tw_parent, NULL, EINA_FALSE);
 
    res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_LOWER);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
+   // Expected stack result:
+   // [Top] tw_main -> ... -> tw_child -> tw_parent [Bottom]
+
    list = e_test_runner_req_win_info_list_get(tc->runner);
    EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
 
+   // bottom to top search
    EINA_LIST_REVERSE_FOREACH(list, l, tw)
      {
-        if (tw->layer < tw_parent->layer) continue;
-        if (tw->native_win == tw_parent->native_win) continue;
-
+        if (tw->layer < 200) continue;
+        if (pass_count == 0)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_parent->native_win), cleanup);
+             tw_below = tw;
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_child->native_win), cleanup);
+             tw_below = tw;
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             if (tw->layer > 200)
+               {
+                  EINA_SAFETY_ON_FALSE_GOTO((tw_below->native_win == tw_main->native_win), cleanup);
+                  pass_count++;
+               }
+             else
+               {
+                  tw_below = tw;
+                  continue;
+               }
+          }
         break;
      }
+   // check the tw_below if there is no window over 200 layer.
+   if (tw == NULL)
+     {
+        EINA_SAFETY_ON_FALSE_GOTO((pass_count == 2), cleanup);
+        EINA_SAFETY_ON_NULL_GOTO(tw_below, cleanup);
+        EINA_SAFETY_ON_FALSE_GOTO((tw_below->native_win == tw_main->native_win), cleanup);
+        pass_count++;
+     }
 
-   EINA_SAFETY_ON_NULL_GOTO(tw, cleanup);
-   EINA_SAFETY_ON_FALSE_GOTO(tw->native_win == tw_child->native_win, cleanup);
-
-   res = _tc_post_run(tc);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
 
    tc->passed = EINA_TRUE;
 
 cleanup:
+   _tc_post_run(tc);
    _tc_shutdown(tc);
    E_FREE_LIST(list, e_tc_win_del);
 
@@ -233,52 +303,63 @@ cleanup:
 Eina_Bool
 tc_0203_transient_for_stack_above(E_TC *tc)
 {
-   E_TC_Win *tw, *tw2, *tw_parent, *tw_child;
-   E_TC_Win *tw_above = NULL;
+   E_TC_Win *tw, *tw_main, *tw_parent, *tw_child;
    Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l;
+   int pass_count = 0;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
 
    res = _tc_pre_run(tc);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
-   tw = tc->data->tw;
+   tw_main = tc->data->tw;
    tw_parent = tc->data->tw_parent;
    tw_child = tc->data->tw_child;
 
-   e_test_runner_req_win_stack_set(tc->runner, tw_parent, tw, EINA_TRUE);
+   // Expected stack result:
+   // [Top] tw_main -> tw_child -> tw_parent [Bottom]
+
+   e_test_runner_req_win_stack_set(tc->runner, tw_parent, tw_main, EINA_TRUE);
 
    res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_ABOVE);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
+   // Expected stack result:
+   // [Top] tw_child -> tw_parent -> tw_main [Bottom]
+
    list = e_test_runner_req_win_info_list_get(tc->runner);
    EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
 
-   EINA_LIST_FOREACH(list, l, tw2)
+   EINA_LIST_FOREACH(list, l, tw)
      {
-        if (tw2->layer > tw->layer) continue;
-        if (tw2->layer < tw->layer) break;
-        if (tw2->native_win == tw_parent->native_win) continue;
-        if (tw2->native_win == tw->native_win)
+        if (tw->layer > 200) continue;
+        if (pass_count == 0)
           {
-             if ((tw_above) &&
-                 (tw_above->native_win == tw_child->native_win))
-               res = EINA_TRUE;
-             break;
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_child->native_win), cleanup);
+             pass_count++;
+             continue;
           }
-
-        tw_above = tw2;
+        else if (pass_count == 1)
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_parent->native_win), cleanup);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_main->native_win), cleanup);
+             pass_count++;
+          }
+        break;
      }
 
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_post_run(tc);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
 
    tc->passed = EINA_TRUE;
 
 cleanup:
+   _tc_post_run(tc);
    _tc_shutdown(tc);
    E_FREE_LIST(list, e_tc_win_del);
 
@@ -288,60 +369,73 @@ cleanup:
 Eina_Bool
 tc_0204_transient_for_stack_below(E_TC *tc)
 {
-   E_TC_Win *tw, *tw2, *tw_parent, *tw_child;
-   E_TC_Win *tw_above = NULL;
+   E_TC_Win *tw, *tw_main, *tw_parent, *tw_child;
    Eina_Bool res = EINA_FALSE;
    Eina_List *list = NULL, *l;
+   int pass_count = 0;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
 
    res = _tc_pre_run(tc);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
-   tw = tc->data->tw;
+   tw_main = tc->data->tw;
    tw_parent = tc->data->tw_parent;
    tw_child = tc->data->tw_child;
 
-   e_test_runner_req_win_stack_set(tc->runner, tw_parent, tw, EINA_FALSE);
+   // Expected stack result:
+   // [Top] tw_main -> tw_child -> tw_parent [Bottom]
+
+   // lower tw_main
+   e_test_runner_req_win_stack_set(tc->runner, tw_main, NULL, EINA_FALSE);
+
+   res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_BELOW);
+   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+
+   // Expected stack result:
+   // [Top] tw_child -> tw_parent -> ... -> tw_main [Bottom]
+
+   e_test_runner_req_win_stack_set(tc->runner, tw_parent, tw_main, EINA_FALSE);
 
    res = e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_BELOW);
    EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
+   // Expected stack result:
+   // [Top] ... -> tw_main -> tw_child -> tw_parent [Bottom]
+
    list = e_test_runner_req_win_info_list_get(tc->runner);
    EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
 
-   EINA_LIST_FOREACH(list, l, tw2)
+   // bottom to top search
+   EINA_LIST_REVERSE_FOREACH(list, l, tw)
      {
-        if (tw2->layer > tw->layer) continue;
-        if (tw2->layer < tw->layer) break;
-
-        if (tw2->native_win == tw_parent->native_win)
+        if (tw->layer < 200) continue;
+        if (pass_count == 0)
           {
-             if ((tw_above) &&
-                 (tw_above->native_win == tw_child->native_win))
-               res = EINA_TRUE;
-             break;
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_parent->native_win), cleanup);
+             pass_count++;
+             continue;
           }
-        else if (tw2->native_win == tw_child->native_win)
+        else if (pass_count == 1)
           {
-             if ((!tw_above) ||
-                 (tw_above->native_win != tw->native_win))
-               {
-                  res = EINA_FALSE;
-                  break;
-               }
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_child->native_win), cleanup);
+             pass_count++;
+             continue;
           }
-
-        tw_above = tw2;
+        else
+          {
+             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_main->native_win), cleanup);
+             pass_count++;
+          }
+        break;
      }
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
 
-   res = _tc_post_run(tc);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
+   EINA_SAFETY_ON_FALSE_GOTO((pass_count == 3), cleanup);
 
    tc->passed = EINA_TRUE;
 
 cleanup:
+   _tc_post_run(tc);
    _tc_shutdown(tc);
    E_FREE_LIST(list, e_tc_win_del);
 
index e1b3a57ed94369eba7c1f19b38ffee07f9f40d75..027e628f2507c6bd3fcf9deb249e4ac89d98e650 100644 (file)
@@ -49,20 +49,20 @@ _tc_pre_run(E_TC *tc)
 
    data->tw_normal = e_tc_win_add(NULL, ELM_WIN_BASIC,
                                   EINA_FALSE, "tw_normal",
-                                  0, 0, TW_W, TW_H,
-                                  200);
+                                  0, 0, TW_W, TW_H, EINA_TRUE,
+                                  200, E_TC_WIN_COLOR_RED);
    EINA_SAFETY_ON_NULL_GOTO(data->tw_normal, cleanup);
 
    data->tw_noti1 = e_tc_win_add(NULL, ELM_WIN_NOTIFICATION,
                                  EINA_FALSE, "tw_noti1",
-                                 0, 0, TW_W, TW_H,
-                                 200);
+                                 0, 0, TW_W, TW_H, EINA_TRUE,
+                                 200, E_TC_WIN_COLOR_GREEN);
    EINA_SAFETY_ON_NULL_GOTO(data->tw_noti1, cleanup);
 
    data->tw_noti2 = e_tc_win_add(NULL, ELM_WIN_NOTIFICATION,
                                  EINA_FALSE, "tw_noti2",
-                                 0, 0, TW_W, TW_H,
-                                 200);
+                                 0, 0, TW_W, TW_H, EINA_TRUE,
+                                 200, E_TC_WIN_COLOR_BLUE);
    EINA_SAFETY_ON_NULL_GOTO(data->tw_noti2, cleanup);
 
    res = e_test_runner_req_win_register(tc->runner, data->tw_normal);
index 6fba867ff43dbdab84d4ce2099f8ad217f1f183c..41c8885454207dd37c8bca31a038f7a626029767 100644 (file)
@@ -12,6 +12,7 @@ e_test_runner.c \
 e_test_runner.h \
 0000_easy.c \
 0100_base_operation.c \
+0150_base_operation_multi_wins.c \
 0200_transient_for.c \
 0300_notification.c
 
index 537caa84fc2e6147b014d92ebd9966b92688a30f..bce4fc344be5b54e12aa55195093e06f9998babb 100644 (file)
@@ -429,11 +429,14 @@ e_tc_win_add(E_TC_Win *parent,
              const char *name,
              int x, int y,
              int w, int h,
-             int layer)
+             Eina_Bool usr_geom,
+             int layer,
+             E_TC_Win_Color color)
 {
    E_TC_Win *tw = NULL;
    Evas_Object *elm_win = NULL, *bg = NULL;
    Evas_Object *p_elm_win = NULL;
+   int sw, sh;
 
    if (parent) p_elm_win = parent->elm_win;
 
@@ -444,23 +447,67 @@ e_tc_win_add(E_TC_Win *parent,
 
    elm_win_title_set(elm_win, name);
    elm_win_autodel_set(elm_win, EINA_FALSE);
+   elm_win_borderless_set(elm_win, EINA_TRUE);
+   if (usr_geom)
+     elm_win_aux_hint_add(elm_win, "wm.policy.win.user.geometry", "1");
 
    bg = elm_bg_add(elm_win);
    evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    elm_win_resize_object_add(elm_win, bg);
-   elm_bg_color_set(bg, 0, 120, 100);
+   switch (color)
+     {
+      case E_TC_WIN_COLOR_BLACK:
+        elm_bg_color_set(bg, 0, 0, 0);
+        break;
+      case E_TC_WIN_COLOR_WHITE:
+        elm_bg_color_set(bg, 255, 255, 255);
+        break;
+      case E_TC_WIN_COLOR_RED:
+        elm_bg_color_set(bg, 255, 0, 0);
+        break;
+      case E_TC_WIN_COLOR_GREEN:
+        elm_bg_color_set(bg, 0, 255, 0);
+        break;
+      case E_TC_WIN_COLOR_BLUE:
+        elm_bg_color_set(bg, 0, 0, 255);
+        break;
+      case E_TC_WIN_COLOR_YELLOW:
+        elm_bg_color_set(bg, 255, 255, 0);
+        break;
+      case E_TC_WIN_COLOR_CYAN:
+        elm_bg_color_set(bg, 0, 255, 255);
+        break;
+      case E_TC_WIN_COLOR_PURPLE:
+        elm_bg_color_set(bg, 255, 0, 255);
+        break;
+      default:
+        elm_bg_color_set(bg, 255, 0, 0);
+        break;
+     }
    evas_object_show(bg);
 
+   elm_win_screen_size_get(elm_win, NULL, NULL, &sw, &sh);
+
    tw = E_NEW(E_TC_Win, 1);
    EINA_SAFETY_ON_NULL_RETURN_VAL(tw, NULL);
 
    tw->elm_win = elm_win;
    tw->native_win = _e_test_runner_window_id_get(elm_win);
    tw->name = eina_stringshare_add(name);
-   tw->x = x;
-   tw->y = y;
-   tw->w = w;
-   tw->h = h;
+   if (usr_geom)
+     {
+        tw->x = x;
+        tw->y = y;
+        tw->w = w;
+        tw->h = h;
+     }
+   else
+     {
+        tw->x = 0;
+        tw->y = 0;
+        tw->w = sw;
+        tw->h = sh;
+     }
    tw->layer = layer;
    tw->alpha = alpha;
 
@@ -606,30 +653,48 @@ _e_test_runner_init(E_Test_Runner *runner)
 #undef T_FUNC
 #define T_FUNC(num_, test_) tc_000##num_##_##test_
    /* [0000 - 0099] test runner verification */
-   TC_ADD(   0, "Base: Pass",                 T_FUNC(   0, base_pass                ), 1);
-   TC_ADD(   1, "Base: Fail",                 T_FUNC(   1, base_fail                ), 0);
+   TC_ADD(   0, "Base: Pass",                   T_FUNC(   0, base_pass ), 1);
+   TC_ADD(   1, "Base: Fail",                   T_FUNC(   1, base_fail ), 0);
 #undef T_FUNC
 #define T_FUNC(num_, test_) tc_00##num_##_##test_
-   TC_ADD(  10, "DBus: Introspect",           T_FUNC(  10, introspect               ), 1);
-   TC_ADD(  11, "DBus: Window register",      T_FUNC(  11, win_register             ), 1);
+   TC_ADD(  10, "DBus: Introspect",             T_FUNC(  10, introspect   ), 1);
+   TC_ADD(  11, "DBus: Window register",        T_FUNC(  11, win_register ), 1);
 #undef T_FUNC
 #define T_FUNC(num_, test_) tc_0##num_##_##test_
    /* [0100 - 0199] window base operation */
-   TC_ADD( 100, "Basic window: Show",         T_FUNC( 100, win_show                 ), 1);
-   TC_ADD( 101, "Basic window: Stack",        T_FUNC( 101, win_stack                ), 1);
-   TC_ADD( 110, "Alpha window: Show",         T_FUNC( 110, alpha_win_show           ), 1);
-   TC_ADD( 111, "Alpha window: Stack",        T_FUNC( 111, alpha_win_stack          ), 1);
+   TC_ADD( 100, "Basic window: Show",           T_FUNC( 100, win_show        ), 1);
+   TC_ADD( 101, "Basic window: Stack",          T_FUNC( 101, win_stack       ), 1);
+   TC_ADD( 110, "Alpha window: Show",           T_FUNC( 110, alpha_win_show  ), 1);
+   TC_ADD( 111, "Alpha window: Stack",          T_FUNC( 111, alpha_win_stack ), 1);
+
+   TC_ADD( 150, "Multi window: Basic",          T_FUNC( 150, multi_all_wins_basic        ), 1);
+   TC_ADD( 151, "Multi window: 3 Show1",        T_FUNC( 151, multi_all_wins_show1        ), 1);
+   TC_ADD( 152, "Multi window: 3 Show2",        T_FUNC( 152, multi_all_wins_show2        ), 1);
+   TC_ADD( 153, "Multi window: 3 Show3",        T_FUNC( 153, multi_all_wins_show3        ), 1);
+   TC_ADD( 154, "Multi window: 3 Raise1",       T_FUNC( 154, multi_all_wins_raise1       ), 1);
+   TC_ADD( 155, "Multi window: 3 Raise2",       T_FUNC( 155, multi_all_wins_raise2       ), 1);
+   TC_ADD( 156, "Multi window: 3 Stack Above1", T_FUNC( 156, multi_all_wins_stack_above1 ), 1);
+   TC_ADD( 157, "Multi window: 3 Stack Above2", T_FUNC( 157, multi_all_wins_stack_above2 ), 1);
+   TC_ADD( 158, "Multi window: 3 Stack Above3", T_FUNC( 158, multi_all_wins_stack_above3 ), 1);
+   TC_ADD( 159, "Multi window: 3 Lower1",       T_FUNC( 159, multi_all_wins_lower1       ), 1);
+   TC_ADD( 160, "Multi window: 3 Lower2",       T_FUNC( 160, multi_all_wins_lower2       ), 1);
+
+   TC_ADD( 180, "Multi window: 2 Show1",        T_FUNC( 180, multi_2wins_show1 ), 1);
+   TC_ADD( 181, "Multi window: 2 Show2",        T_FUNC( 181, multi_2wins_show2 ), 1);
+   TC_ADD( 182, "Multi window: 2 Show3",        T_FUNC( 182, multi_2wins_show3 ), 1);
+
    /* [0200 - 0299] transient for */
-   TC_ADD( 200, "Transient for: Basic",       T_FUNC( 200, transient_for_basic      ), 1);
-   TC_ADD( 201, "Transient for: Raise",       T_FUNC( 201, transient_for_raise      ), 1);
-   TC_ADD( 202, "Transient for: Lower",       T_FUNC( 202, transient_for_lower      ), 1);
-   TC_ADD( 203, "Transient for: Stack above", T_FUNC( 203, transient_for_stack_above), 1);
-   TC_ADD( 204, "Transient for: Stack below", T_FUNC( 204, transient_for_stack_below), 1);
+   TC_ADD( 200, "Transient for: Basic",         T_FUNC( 200, transient_for_basic       ), 1);
+   TC_ADD( 201, "Transient for: Raise",         T_FUNC( 201, transient_for_raise       ), 1);
+   TC_ADD( 202, "Transient for: Lower",         T_FUNC( 202, transient_for_lower       ), 1);
+   TC_ADD( 203, "Transient for: Stack above",   T_FUNC( 203, transient_for_stack_above ), 1);
+   TC_ADD( 204, "Transient for: Stack below",   T_FUNC( 204, transient_for_stack_below ), 1);
+
    /* [0300 - 0399] notification */
-   TC_ADD( 300, "Noti Level 1",               T_FUNC( 300, notification_level_1     ), 1);
-   TC_ADD( 301, "Noti Level 2",               T_FUNC( 301, notification_level_2     ), 1);
-   TC_ADD( 302, "Noti Level 3",               T_FUNC( 302, notification_level_3     ), 1);
-   TC_ADD( 303, "Noti Level Change",          T_FUNC( 303, notification_level_change), 1);
+   TC_ADD( 300, "Noti Level 1",                 T_FUNC( 300, notification_level_1      ), 1);
+   TC_ADD( 301, "Noti Level 2",                 T_FUNC( 301, notification_level_2      ), 1);
+   TC_ADD( 302, "Noti Level 3",                 T_FUNC( 302, notification_level_3      ), 1);
+   TC_ADD( 303, "Noti Level Change",            T_FUNC( 303, notification_level_change ), 1);
    /* TODO */
 #undef T_FUNC
 }
index c9b0c4956e8fee6e42e344dd165cf7b2bce40c25..64e6fff26a4c55ea51c3aeff65dfda66ac5b4307 100644 (file)
@@ -73,6 +73,18 @@ typedef enum _E_TC_Event_Type
    E_TC_EVENT_TYPE_MAX
 } E_TC_Event_Type;
 
+typedef enum _E_TC_Win_Color
+{
+   E_TC_WIN_COLOR_BLACK = 0,
+   E_TC_WIN_COLOR_WHITE,
+   E_TC_WIN_COLOR_RED,
+   E_TC_WIN_COLOR_GREEN,
+   E_TC_WIN_COLOR_BLUE,
+   E_TC_WIN_COLOR_YELLOW,
+   E_TC_WIN_COLOR_CYAN,
+   E_TC_WIN_COLOR_PURPLE,
+} E_TC_Win_Color;
+
 typedef struct _E_Test_Runner E_Test_Runner;
 typedef struct _E_TC_Win      E_TC_Win;
 typedef struct _E_TC          E_TC;
@@ -125,7 +137,7 @@ Eina_List *e_test_runner_req_win_info_list_get(E_Test_Runner *runner);
 Eina_Bool  e_test_runner_req_win_stack_set(E_Test_Runner *runner, E_TC_Win *tw, E_TC_Win *sibling, Eina_Bool above);
 Eina_Bool  e_test_runner_ev_wait(E_Test_Runner *runner, E_TC_Event_Type ev);
 
-E_TC_Win  *e_tc_win_add(E_TC_Win *parent, Elm_Win_Type type, Eina_Bool alpha, const char *name, int x, int y, int w, int h, int layer);
+E_TC_Win  *e_tc_win_add(E_TC_Win *parent, Elm_Win_Type type, Eina_Bool alpha, const char *name, int x, int y, int w, int h, Eina_Bool usr_geom, int layer, E_TC_Win_Color color);
 E_TC_Win  *e_tc_win_info_add(Ecore_Window native_win, Eina_Bool alpha, const char *name, int x, int y, int w, int h, int layer);
 void       e_tc_win_del(E_TC_Win *tw);
 void       e_tc_win_geom_update(E_TC_Win *tw);
@@ -145,6 +157,22 @@ Eina_Bool  tc_0101_win_stack(E_TC *tc);
 Eina_Bool  tc_0110_alpha_win_show(E_TC *tc);
 Eina_Bool  tc_0111_alpha_win_stack(E_TC *tc);
 
+Eina_Bool  tc_0150_multi_all_wins_basic(E_TC *tc);
+Eina_Bool  tc_0151_multi_all_wins_show1(E_TC *tc);
+Eina_Bool  tc_0152_multi_all_wins_show2(E_TC *tc);
+Eina_Bool  tc_0153_multi_all_wins_show3(E_TC *tc);
+Eina_Bool  tc_0154_multi_all_wins_raise1(E_TC *tc);
+Eina_Bool  tc_0155_multi_all_wins_raise2(E_TC *tc);
+Eina_Bool  tc_0156_multi_all_wins_stack_above1(E_TC *tc);
+Eina_Bool  tc_0157_multi_all_wins_stack_above2(E_TC *tc);
+Eina_Bool  tc_0158_multi_all_wins_stack_above3(E_TC *tc);
+Eina_Bool  tc_0159_multi_all_wins_lower1(E_TC *tc);
+Eina_Bool  tc_0160_multi_all_wins_lower2(E_TC *tc);
+
+Eina_Bool  tc_0180_multi_2wins_show1(E_TC *tc);
+Eina_Bool  tc_0181_multi_2wins_show2(E_TC *tc);
+Eina_Bool  tc_0182_multi_2wins_show3(E_TC *tc);
+
 Eina_Bool  tc_0200_transient_for_basic(E_TC *tc);
 Eina_Bool  tc_0201_transient_for_raise(E_TC *tc);
 Eina_Bool  tc_0202_transient_for_lower(E_TC *tc);