e-tizen-testcase: change test framework to gtest 40/170940/9
authorJunSeok, Kim <juns.kim@samsung.com>
Fri, 23 Feb 2018 09:36:19 +0000 (18:36 +0900)
committerJunSeok, Kim <juns.kim@samsung.com>
Wed, 28 Feb 2018 05:08:24 +0000 (14:08 +0900)
Change-Id: Idc6b6afe4328b0ff42b21f3601c73fbd09831454

21 files changed:
configure.ac
packaging/e-tizen-testcase.spec
src/0100_base_operation.c [deleted file]
src/0150_base_operation_multi_wins.c [deleted file]
src/0200_transient_for.c [deleted file]
src/0300_notification.c [deleted file]
src/Makefile.am
src/e_test_event.cpp [new file with mode: 0644]
src/e_test_event.h [new file with mode: 0644]
src/e_test_main.cpp [new file with mode: 0644]
src/e_test_runner.c [deleted file]
src/e_test_runner.h [deleted file]
src/e_test_util.h [new file with mode: 0644]
src/e_test_win.cpp [new file with mode: 0644]
src/e_test_win.h [new file with mode: 0644]
src/eina_list_ext.h [new file with mode: 0644]
src/testcase/1_easy.cpp [moved from src/0000_easy.c with 62% similarity]
src/testcase/2_base_operation.cpp [new file with mode: 0644]
src/testcase/3_base_operation_multi_wins.cpp [new file with mode: 0644]
src/testcase/4_transient_for.cpp [new file with mode: 0644]
src/testcase/5_notification.cpp [new file with mode: 0644]

index 238d4af..32345e2 100644 (file)
@@ -15,10 +15,12 @@ AM_INIT_AUTOMAKE([1.11])
 GETTEXT_PACKAGE="e_test_runner"
 AC_SUBST([GETTEXT_PACKAGE])
 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], "$GETTEXT_PACKAGE", [Gettext package])
+AC_SUBST(GCC_CXXFLAGS)
 
 AC_USE_SYSTEM_EXTENSIONS
 AM_PROG_CC_STDC
 AM_PROG_CC_C_O
+AC_PROG_CXX
 
 requirements="\
    elementary \
index ee50c9b..e309be5 100644 (file)
@@ -13,6 +13,7 @@ BuildRequires: gettext
 BuildRequires: pkgconfig(tizen-extension-client)
 BuildRequires: pkgconfig(tzsh-screensaver-manager-service)
 BuildRequires: pkgconfig(tzsh-screensaver-service)
+BuildRequires: gtest-devel
 
 %description
 This package is a test case runner for enlightenment.
@@ -22,7 +23,7 @@ This package is a test case runner for enlightenment.
 
 %build
 export GC_SECTIONS_FLAGS="-fdata-sections -ffunction-sections -Wl,--gc-sections"
-export CFLAGS+=" -Wall -g -fPIC -Werror -rdynamic ${GC_SECTIONS_FLAGS}"
+export CXXFLAGS+=" -Wall -g -fPIC -rdynamic ${GC_SECTIONS_FLAGS}"
 export LDFLAGS+=" -Wl,--hash-style=both -Wl,--as-needed -Wl,--rpath=/usr/lib"
 
 %autogen
diff --git a/src/0100_base_operation.c b/src/0100_base_operation.c
deleted file mode 100644 (file)
index f80349b..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-#include "e_test_runner.h"
-
-struct _E_TC_Data
-{
-   E_TC_Win *tw;
-};
-
-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_pre_run(E_TC *tc, Eina_Bool alpha)
-{
-   Eina_Bool res;
-
-   tc->data = E_NEW(E_TC_Data, 1);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc->data, EINA_FALSE);
-
-   tc->data->tw = e_tc_win_add(NULL, ELM_WIN_BASIC,
-                               alpha, "tc",
-                               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);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   e_tc_win_geom_update(tc->data->tw);
-   e_tc_win_show(tc->data->tw);
-
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-
-   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);
-   EINA_SAFETY_ON_NULL_RETURN(tc->data);
-
-   e_tc_win_hide(tc->data->tw);
-}
-
-static void
-_tc_shutdown(E_TC *tc)
-{
-   EINA_SAFETY_ON_NULL_RETURN(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);
-
-   E_FREE(tc->data);
-}
-
-Eina_Bool
-tc_0100_win_show(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   tc->passed = EINA_TRUE;
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0101_win_stack(E_TC *tc)
-{
-   E_TC_Win *tw, *tw2;
-   Eina_Bool res = EINA_FALSE;
-   Eina_List *list = NULL, *l;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   tw = tc->data->tw;
-
-   list = e_test_runner_req_win_info_list_get(tc->runner);
-   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
-
-   EINA_LIST_FOREACH(list, l, tw2)
-     {
-        if (tw2->layer > tw->layer) continue;
-        if (tw2->layer < tw->layer) break;
-
-        if (!strncmp(tw2->name, tw->name, strlen(tw2->name)))
-          res = EINA_TRUE;
-
-        break;
-     }
-
-   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);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0110_alpha_win_show(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_TRUE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   tc->passed = EINA_TRUE;
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0111_alpha_win_stack(E_TC *tc)
-{
-   E_TC_Win *tw, *tw2;
-   Eina_Bool res = EINA_FALSE;
-   Eina_List *list = NULL, *l;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_TRUE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   tw = tc->data->tw;
-
-   list = e_test_runner_req_win_info_list_get(tc->runner);
-   EINA_SAFETY_ON_NULL_GOTO(list, cleanup);
-
-   EINA_LIST_FOREACH(list, l, tw2)
-     {
-        if (tw2->layer > tw->layer) continue;
-        if (tw2->layer < tw->layer) break;
-
-        if (!strncmp(tw2->name, tw->name, strlen(tw2->name)))
-          res = EINA_TRUE;
-
-        break;
-     }
-
-   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);
-
-   return tc->passed;
-}
diff --git a/src/0150_base_operation_multi_wins.c b/src/0150_base_operation_multi_wins.c
deleted file mode 100644 (file)
index ee8a3e6..0000000
+++ /dev/null
@@ -1,2149 +0,0 @@
-#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_multi_wins_pre_run(E_TC *tc, Eina_Bool alpha, Eina_Bool use_geom);
-static void      _tc_multi_wins_post_run(E_TC *tc);
-static void      _tc_multi_wins_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);
-
-   if (tc->data->tw_register)
-     {
-        e_test_runner_req_win_deregister(tc->runner, tc->data->tw_register);
-        tc->data->tw_register = NULL;
-     }
-
-   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_multi_wins_pre_run(E_TC *tc, Eina_Bool show_win, Eina_Bool use_geom)
-{
-   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, use_geom,
-                                   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, 400, 400, use_geom,
-                                     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, 400, 400, use_geom,
-                                    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);
-        e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-     }
-
-   e_test_runner_work();
-
-   return EINA_TRUE;
-
-cleanup:
-   _tc_multi_wins_shutdown(tc);
-   return EINA_FALSE;
-}
-
-static void
-_tc_multi_wins_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_multi_wins_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);
-}
-
-static Eina_Bool
-_tc_win_show(E_TC *tc, E_TC_Win *tw)
-{
-   Eina_Bool res = EINA_FALSE;
-
-   res = _tc_win_register(tc, tw);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
-
-   e_tc_win_geom_update(tw);
-   e_tc_win_show(tw);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-
-   return EINA_TRUE;
-}
-
-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_multi_wins_pre_run(tc, EINA_TRUE, 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_FALSE, 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;
-
-   // show red
-   res = _tc_win_show(tc, tc->data->tw_red);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show green
-   res = _tc_win_show(tc, tc->data->tw_green);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show blue
-   res = _tc_win_show(tc, tc->data->tw_blue);
-   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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_FALSE, 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;
-
-   // show blue
-   res = _tc_win_show(tc, tc->data->tw_blue);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show red
-   res = _tc_win_show(tc, tc->data->tw_red);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show green
-   res = _tc_win_show(tc, tc->data->tw_green);
-   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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_FALSE, 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;
-
-   // show green
-   res = _tc_win_show(tc, tc->data->tw_green);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show blue
-   res = _tc_win_show(tc, tc->data->tw_blue);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show red
-   res = _tc_win_show(tc, tc->data->tw_red);
-   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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_TRUE, 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_TRUE, 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_TRUE, 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_TRUE, 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_TRUE, 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_TRUE, 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_TRUE, 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0161_multi_all_full_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_multi_wins_pre_run(tc, EINA_TRUE, 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;
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0162_multi_all_full_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_multi_wins_pre_run(tc, EINA_FALSE, 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
-   res = _tc_win_show(tc, tc->data->tw_red);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show green
-   res = _tc_win_show(tc, tc->data->tw_green);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show blue
-   res = _tc_win_show(tc, tc->data->tw_blue);
-   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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0163_multi_all_full_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_multi_wins_pre_run(tc, EINA_FALSE, 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
-   res = _tc_win_show(tc, tc->data->tw_blue);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show red
-   res = _tc_win_show(tc, tc->data->tw_red);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show green
-   res = _tc_win_show(tc, tc->data->tw_green);
-   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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-
-Eina_Bool
-tc_0164_multi_all_full_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_multi_wins_pre_run(tc, EINA_FALSE, 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
-   res = _tc_win_show(tc, tc->data->tw_green);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show blue
-   res = _tc_win_show(tc, tc->data->tw_blue);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show red
-   res = _tc_win_show(tc, tc->data->tw_red);
-   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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0165_multi_all_full_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_multi_wins_pre_run(tc, EINA_TRUE, 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;
-
-   // Expected stack result:
-   // [Top] Blue -> Green -> Red [Bottom]
-
-   // Raise Red
-   e_test_runner_req_win_stack_set(tc->runner, tw_red, NULL, EINA_TRUE);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0166_multi_all_full_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_multi_wins_pre_run(tc, EINA_TRUE, 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;
-
-   // Expected stack result:
-   // [Top] Blue -> Green -> Red [Bottom]
-
-   // Raise Green
-   e_test_runner_req_win_stack_set(tc->runner, tw_green, NULL, EINA_TRUE);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0167_multi_all_full_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_multi_wins_pre_run(tc, EINA_TRUE, 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;
-
-   // 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-
-Eina_Bool
-tc_0168_multi_all_full_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_multi_wins_pre_run(tc, EINA_TRUE, 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;
-
-   // 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0169_multi_all_full_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_multi_wins_pre_run(tc, EINA_TRUE, 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;
-
-   // 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0170_multi_all_full_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_multi_wins_pre_run(tc, EINA_TRUE, 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;
-
-   // Expected stack result:
-   // [Top] Blue -> Green -> Red [Bottom]
-
-   // Lower Blue
-   e_test_runner_req_win_stack_set(tc->runner, tw_blue, NULL, EINA_FALSE);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-
-Eina_Bool
-tc_0171_multi_all_full_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_multi_wins_pre_run(tc, EINA_TRUE, 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;
-
-   // Expected stack result:
-   // [Top] Blue -> Green -> Red [Bottom]
-
-   // Lower Green
-   e_test_runner_req_win_stack_set(tc->runner, tw_green, NULL, EINA_FALSE);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_FALSE, EINA_TRUE);
-   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
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_FALSE, EINA_TRUE);
-   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
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_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_multi_wins_pre_run(tc, EINA_FALSE, EINA_TRUE);
-   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
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0183_multi_full_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_multi_wins_pre_run(tc, EINA_FALSE, 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
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-
-Eina_Bool
-tc_0184_multi_full_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_multi_wins_pre_run(tc, EINA_FALSE, 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
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-
-Eina_Bool
-tc_0185_multi_full_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_multi_wins_pre_run(tc, EINA_FALSE, 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
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-
-   // 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_multi_wins_post_run(tc);
-   _tc_multi_wins_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
diff --git a/src/0200_transient_for.c b/src/0200_transient_for.c
deleted file mode 100644 (file)
index 5fdd926..0000000
+++ /dev/null
@@ -1,508 +0,0 @@
-#include "e_test_runner.h"
-
-struct _E_TC_Data
-{
-   E_TC_Win *tw;
-   E_TC_Win *tw_parent;
-   E_TC_Win *tw_child;
-   E_TC_Win *tw_register;
-};
-
-static Eina_Bool _tc_transient_for_win_register(E_TC *tc, E_TC_Win *win);
-static void      _tc_transient_for_win_unregister(E_TC *tc);
-static Eina_Bool _tc_transient_for_pre_run(E_TC *tc);
-static void      _tc_transient_for_post_run(E_TC *tc);
-static void      _tc_transient_for_shutdown(E_TC *tc);
-
-static Eina_Bool
-_tc_transient_for_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);
-
-   if (tc->data->tw_register)
-     {
-        e_test_runner_req_win_deregister(tc->runner, tc->data->tw_register);
-        tc->data->tw_register = NULL;
-     }
-
-   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_transient_for_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_win_show(E_TC *tc, E_TC_Win *tw)
-{
-   Eina_Bool res = EINA_FALSE;
-
-   res = _tc_transient_for_win_register(tc, tw);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(res, EINA_FALSE);
-
-   e_tc_win_geom_update(tw);
-   e_tc_win_show(tw);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_ON);
-
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_tc_transient_for_pre_run(E_TC *tc)
-{
-   Eina_Bool res;
-
-   tc->data = E_NEW(E_TC_Data, 1);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc->data, EINA_FALSE);
-
-   tc->data->tw_parent = e_tc_win_add(NULL, ELM_WIN_BASIC,
-                                      EINA_FALSE, "parent",
-                                      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(NULL, ELM_WIN_BASIC,
-                                     EINA_FALSE, "child",
-                                     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",
-                               200, 200, 500, 500, EINA_FALSE,
-                               200, E_TC_WIN_COLOR_GREEN);
-   EINA_SAFETY_ON_NULL_GOTO(tc->data->tw, cleanup);
-
-   // show tw_parent
-   res = _tc_win_show(tc, tc->data->tw_parent);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // show tw
-   res = _tc_win_show(tc, tc->data->tw);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-
-   // show tw_child
-   res = _tc_win_show(tc, tc->data->tw_child);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-
-   // set transient_for
-   res = e_tc_win_transient_for_set(tc->data->tw_child,
-                                    tc->data->tw_parent,
-                                    EINA_TRUE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   e_test_runner_work();
-
-   return EINA_TRUE;
-
-cleanup:
-   _tc_transient_for_shutdown(tc);
-   return EINA_FALSE;
-}
-
-static void
-_tc_transient_for_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);
-}
-
-static void
-_tc_transient_for_shutdown(E_TC *tc)
-{
-   EINA_SAFETY_ON_NULL_RETURN(tc->data);
-
-   _tc_transient_for_win_unregister(tc);
-   e_tc_win_del(tc->data->tw_child);
-   e_tc_win_del(tc->data->tw_parent);
-   e_tc_win_del(tc->data->tw);
-
-   E_FREE(tc->data);
-}
-
-Eina_Bool
-tc_0200_transient_for_basic(E_TC *tc)
-{
-   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_transient_for_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]
-
-   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)
-          {
-             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_main->native_win), cleanup);
-             pass_count++;
-             continue;
-          }
-        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((pass_count == 3), cleanup);
-
-   tc->passed = EINA_TRUE;
-
-cleanup:
-   _tc_transient_for_post_run(tc);
-   _tc_transient_for_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0201_transient_for_raise(E_TC *tc)
-{
-   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_transient_for_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]
-
-   res = _tc_transient_for_win_register(tc, tw_parent);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   e_test_runner_req_win_stack_set(tc->runner, tw_parent, NULL, EINA_TRUE);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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, tw)
-     {
-        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_FALSE_GOTO((pass_count == 3), cleanup);
-
-   tc->passed = EINA_TRUE;
-
-cleanup:
-   _tc_transient_for_post_run(tc);
-   _tc_transient_for_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0202_transient_for_lower(E_TC *tc)
-{
-   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_transient_for_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]
-
-   res = _tc_transient_for_win_register(tc, tw_parent);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // Raise Transient_for Parent window
-   e_test_runner_req_win_stack_set(tc->runner, tw_parent, NULL, EINA_TRUE);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // Expected stack result:
-   // [Top] tw_child -> tw_parent -> tw_main [Bottom]
-
-
-   // lower tw_parent
-   e_test_runner_req_win_stack_set(tc->runner, tw_parent, NULL, EINA_FALSE);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_LOWER);
-
-   // 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 < 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_FALSE_GOTO((pass_count == 3), cleanup);
-
-   tc->passed = EINA_TRUE;
-
-cleanup:
-   _tc_transient_for_post_run(tc);
-   _tc_transient_for_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0203_transient_for_stack_above(E_TC *tc)
-{
-   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_transient_for_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]
-
-   res = _tc_transient_for_win_register(tc, tw_parent);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   e_test_runner_req_win_stack_set(tc->runner, tw_parent, tw_main, EINA_TRUE);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_ABOVE);
-
-   // 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, tw)
-     {
-        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_FALSE_GOTO((pass_count == 3), cleanup);
-
-   tc->passed = EINA_TRUE;
-
-cleanup:
-   _tc_transient_for_post_run(tc);
-   _tc_transient_for_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
-
-Eina_Bool
-tc_0204_transient_for_stack_below(E_TC *tc)
-{
-   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_transient_for_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]
-
-   res = _tc_transient_for_win_register(tc, tw_parent);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   // raise tw_parent
-   e_test_runner_req_win_stack_set(tc->runner, tw_parent, NULL, EINA_TRUE);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_RAISE);
-
-   // 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);
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_STACK_BELOW);
-
-   // 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_FOREACH(list, l, tw)
-     {
-        if (tw->layer > 200) continue;
-        if (pass_count == 0)
-          {
-             EINA_SAFETY_ON_FALSE_GOTO((tw->native_win == tw_main->native_win), cleanup);
-             pass_count++;
-             continue;
-          }
-        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((pass_count == 3), cleanup);
-
-   tc->passed = EINA_TRUE;
-
-cleanup:
-   _tc_transient_for_post_run(tc);
-   _tc_transient_for_shutdown(tc);
-   E_FREE_LIST(list, e_tc_win_del);
-
-   return tc->passed;
-}
diff --git a/src/0300_notification.c b/src/0300_notification.c
deleted file mode 100644 (file)
index ffac16a..0000000
+++ /dev/null
@@ -1,561 +0,0 @@
-#include <efl_util.h>
-#include "e_test_runner.h"
-
-#define TW_W   400
-#define TW_H   400
-
-struct _E_TC_Data
-{
-   E_TC_Win *tw_normal;
-   E_TC_Win *tw_noti1;
-   E_TC_Win *tw_noti2;
-};
-
-static void
-_tc_shutdown(E_TC *tc)
-{
-   E_TC_Data *data = tc->data;
-   EINA_SAFETY_ON_NULL_RETURN(data);
-
-   e_test_runner_req_win_deregister(tc->runner, data->tw_normal);
-   e_tc_win_del(data->tw_normal);
-   e_tc_win_del(data->tw_noti1);
-   e_tc_win_del(data->tw_noti2);
-
-   E_FREE(data);
-   tc->data = NULL;
-}
-
-static void
-_tc_post_run(E_TC *tc)
-{
-   E_TC_Data *data = tc->data;
-   EINA_SAFETY_ON_NULL_RETURN(data);
-
-   e_tc_win_hide(data->tw_normal);
-   e_tc_win_hide(data->tw_noti1);
-   e_tc_win_hide(data->tw_noti2);
-}
-
-static Eina_Bool
-_tc_pre_run(E_TC *tc, Eina_Bool usegeom)
-{
-   Eina_Bool res;
-   E_TC_Data *data = NULL;
-
-   data = E_NEW(E_TC_Data, 1);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(data, EINA_FALSE);
-   tc->data = data;
-
-   data->tw_normal = e_tc_win_add(NULL, ELM_WIN_BASIC,
-                                  EINA_FALSE, "tw_normal",
-                                  0, 0, TW_W, TW_H, usegeom,
-                                  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, usegeom,
-                                 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, usegeom,
-                                 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);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   e_tc_win_geom_update(data->tw_normal);
-   e_tc_win_geom_update(data->tw_noti1);
-   e_tc_win_geom_update(data->tw_noti2);
-
-   e_tc_win_show(data->tw_normal);
-   e_tc_win_show(data->tw_noti1);
-   e_tc_win_show(data->tw_noti2);
-
-   e_test_runner_ev_wait(tc->runner, E_TC_EVENT_TYPE_VIS_CHANGED);
-
-   e_test_runner_work();
-
-   return EINA_TRUE;
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_tc_noti_level_set(E_TC_Win *tw, efl_util_notification_level_e level)
-{
-   int ret;
-
-   ret = efl_util_set_notification_window_level(tw->elm_win, level);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(ret == EFL_UTIL_ERROR_NONE, EINA_FALSE);
-
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_tc_noti_level_check(E_TC_Win *tw, efl_util_notification_level_e level)
-{
-   efl_util_notification_level_e value = -1;
-   int ret;
-
-   ret = efl_util_get_notification_window_level(tw->elm_win, &value);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(ret == EFL_UTIL_ERROR_NONE, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(value == level, EINA_FALSE);
-
-   return EINA_TRUE;
-}
-
-static Eina_Bool
-_tc_check_stack(E_TC *tc, E_TC_Win *bottom, E_TC_Win *middle, E_TC_Win *top)
-{
-   Eina_List *list = NULL, *l;
-   int b_layer = 0, m_layer = 0, t_layer = 0;
-   E_TC_Win *tw;
-
-   list = e_test_runner_req_win_info_list_get(tc->runner);
-   EINA_SAFETY_ON_NULL_GOTO(list, failed);
-
-   EINA_LIST_FOREACH(list, l, tw)
-     {
-        if (top->native_win == tw->native_win)
-          {
-             t_layer = tw->layer;
-             continue;
-          }
-        else if (middle->native_win == tw->native_win)
-          {
-             m_layer = tw->layer;
-             continue;
-          }
-        else if (bottom->native_win == tw->native_win)
-          {
-             b_layer = tw->layer;
-             continue;
-          }
-     }
-
-   EINA_SAFETY_ON_FALSE_GOTO(b_layer <= m_layer, failed);
-   EINA_SAFETY_ON_FALSE_GOTO(m_layer <= t_layer, failed);
-
-   E_FREE_LIST(list, e_tc_win_del);
-   return EINA_TRUE;
-
-failed:
-   E_FREE_LIST(list, e_tc_win_del);
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-_tc_check_layer(E_TC *tc, E_TC_Win *win, E_Layer expected)
-{
-   Eina_List *list = NULL, *l = NULL;
-   int layer = 0;
-   E_TC_Win *tw = NULL;
-   Eina_Bool result = EINA_FALSE;
-
-   list = e_test_runner_req_win_info_list_get(tc->runner);
-   EINA_SAFETY_ON_NULL_GOTO(list, failed);
-
-   EINA_LIST_FOREACH(list, l, tw)
-     {
-        if (tw->native_win == win->native_win)
-          {
-             layer = tw->layer;
-             break;
-          }
-     }
-
-   EINA_SAFETY_ON_FALSE_GOTO(layer == expected, failed);
-
-   result = EINA_TRUE;
-
-failed:
-   E_FREE_LIST(list, e_tc_win_del);
-   return result;
-}
-
-Eina_Bool
-tc_0300_notification_level_default(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_TRUE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_check(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0301_notification_level_medium(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_TRUE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_check(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0302_notification_level_high(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_TRUE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_check(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0303_notification_level_top(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_TRUE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_TOP);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_check(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_TOP);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0304_notification_level_none(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_TRUE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti2, EFL_UTIL_NOTIFICATION_LEVEL_TOP);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti1, data->tw_noti2);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti2, EFL_UTIL_NOTIFICATION_LEVEL_NONE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_layer(tc, data->tw_noti2, E_LAYER_CLIENT_NORMAL);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0305_notification_level_change(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_TRUE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti2, EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti1, data->tw_noti2);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti2, EFL_UTIL_NOTIFICATION_LEVEL_TOP);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti1, data->tw_noti2);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0306_notification_fullsize_level_default(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_check(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0307_notification_fullsize_level_medium(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_check(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0308_notification_fullsize_level_high(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_check(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0309_notification_fullsize_level_top(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_TOP);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_check(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_TOP);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0310_notification_fullsize_level_none(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti2, EFL_UTIL_NOTIFICATION_LEVEL_TOP);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti1, data->tw_noti2);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti2, EFL_UTIL_NOTIFICATION_LEVEL_NONE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_layer(tc, data->tw_noti2, E_LAYER_CLIENT_NORMAL);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
-
-Eina_Bool
-tc_0311_notification_fullsize_level_change(E_TC *tc)
-{
-   Eina_Bool res = EINA_FALSE;
-   E_TC_Data *data;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   res = _tc_pre_run(tc, EINA_FALSE);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-   data = tc->data;
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti2, EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti1, data->tw_noti2);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti1, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti2, data->tw_noti1);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_noti_level_set(data->tw_noti2, EFL_UTIL_NOTIFICATION_LEVEL_TOP);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-   res = _tc_check_stack(tc, data->tw_normal, data->tw_noti1, data->tw_noti2);
-   EINA_SAFETY_ON_FALSE_GOTO(res, cleanup);
-
-cleanup:
-   _tc_post_run(tc);
-   _tc_shutdown(tc);
-
-   return res;
-}
index 60a4e49..5cf7dbd 100644 (file)
@@ -2,22 +2,32 @@ bin_PROGRAMS = e_test_runner
 
 e_test_runner_CPPFLAGS = \
 -I. \
+-I$(includedir)/gtest \
 @E_TEST_RUNNER_CFLAGS@
 
 e_test_runner_LDADD = \
+-lgtest \
 @E_TEST_RUNNER_LIBS@
 
+e_test_runner_TESTCASES = \
+testcase/1_easy.cpp \
+testcase/2_base_operation.cpp \
+testcase/3_base_operation_multi_wins.cpp \
+testcase/4_transient_for.cpp \
+testcase/5_notification.cpp
+
 e_test_runner_SOURCES = \
-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 \
-0400_tzsh.c \
-0500_rotation.c \
-0600_focus.c
+e_test_main.cpp \
+e_test_event.h \
+e_test_event.cpp \
+e_test_win.h \
+e_test_win.cpp \
+e_test_util.h \
+testcase/1_easy.cpp \
+testcase/2_base_operation.cpp \
+testcase/3_base_operation_multi_wins.cpp \
+testcase/4_transient_for.cpp \
+testcase/5_notification.cpp
 
 MAINTAINERCLEANFILES = \
 Makefile.in
diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp
new file mode 100644 (file)
index 0000000..17e739c
--- /dev/null
@@ -0,0 +1,1046 @@
+#include "e_test_event.h"
+
+#define E_TEST_WORK_TIME 3.0
+#define E_TC_SIGN_WIN_INFO "usiiiiibbbiibbbbbi"
+
+/**********************
+      callbacks
+ **********************/
+/* callbacks - event */
+static void _cb_resource_id(void *data,
+                            struct tizen_resource *tizen_resource,
+                            uint32_t id)
+{
+   Ecore_Window *res_id = (Ecore_Window *)data;
+
+   *res_id = id;
+
+   elm_exit();
+}
+
+/* callbacks - method */
+static void _cb_method_win_info_get(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
+static void _cb_method_win_info_list_get(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
+static void _cb_method_window_register(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
+static void _cb_method_zone_rotation_change(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
+
+/* callbacks - signal */
+static void _cb_signal_vis_changed(void *data, const Eldbus_Message *msg);
+static void _cb_signal_stack_changed(void *data, const Eldbus_Message *msg);
+static void _cb_signal_win_rot_changed(void *data, const Eldbus_Message *msg);
+static void _cb_signal_focus_changed(void *data, const Eldbus_Message *msg);
+
+/* callbacks - timer */
+static Eina_Bool _cb_work_timeout(void *data);
+static Eina_Bool _ev_wait_timeout(void *data);
+
+/**********************
+      listeners
+ **********************/
+static const struct tizen_resource_listener _e_test_tizen_resource_listener =
+{
+   _cb_resource_id,
+};
+
+/**********************
+   class EtEventLoop
+ **********************/
+
+/* public methods */
+EtEventLoop::EtEventLoop()
+{
+   this->log_dom_ = -1;
+
+   this->tizen_policy_ = NULL;
+   this->tizen_surface_ = NULL;
+
+   this->Ev.expire_timer = NULL;
+   this->Ev.expect = E_TC_EVENT_TYPE_NONE;
+   this->Ev.response = E_TC_EVENT_TYPE_NONE;
+
+   this->Dbus.conn = NULL;
+   this->Dbus.obj = NULL;
+   this->Dbus.proxy = NULL;
+}
+
+EtEventLoop::~EtEventLoop()
+{
+   // TODO:: release resources
+   this->FreeLastWinInfoList();
+
+   if (this->tizen_policy_)
+     {
+        tizen_policy_destroy(this->tizen_policy_);
+        this->tizen_policy_ = NULL;
+     }
+   if (this->tizen_surface_)
+     {
+        tizen_surface_destroy(this->tizen_surface_);
+        this->tizen_surface_ = NULL;
+     }
+
+   // deinit eldbus
+   if (this->Dbus.proxy)
+     {
+        eldbus_proxy_unref(this->Dbus.proxy);
+        this->Dbus.proxy = NULL;
+     }
+   if (this->Dbus.obj)
+     {
+        eldbus_object_unref(this->Dbus.obj);
+        this->Dbus.obj = NULL;
+     }
+   if (this->Dbus.conn)
+     {
+        eldbus_connection_unref(this->Dbus.conn);
+        this->Dbus.conn = NULL;
+     }
+}
+
+Eina_Bool EtEventLoop::Init()
+{
+   Eina_Bool result = EINA_FALSE;
+
+   this->log_dom_ = eina_log_domain_register("e-tc", EINA_COLOR_BLUE);
+
+   // init tizen_extension protocol
+   result = GetTizenPolicy();
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+   result = GetTizenSurface();
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+   // init eldbus
+   eldbus_init();
+   this->Dbus.conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(this->Dbus.conn, EINA_FALSE);
+
+   this->Dbus.obj = eldbus_object_get(this->Dbus.conn,
+                                      "org.enlightenment.wm",
+                                      "/org/enlightenment/wm");
+   EINA_SAFETY_ON_NULL_RETURN_VAL(this->Dbus.obj, EINA_FALSE);
+
+   this->Dbus.proxy = eldbus_proxy_get(this->Dbus.obj,
+                                       "org.enlightenment.wm.Test");
+   EINA_SAFETY_ON_NULL_RETURN_VAL(this->Dbus.proxy, EINA_FALSE);
+
+   return EINA_TRUE;
+}
+
+void EtEventLoop::Shutdown()
+{
+   eina_log_domain_unregister(this->log_dom_);
+
+   this->FreeLastWinInfoList();
+
+   // deinit tizen_extension protocol
+   if (this->tizen_policy_)
+     {
+        tizen_policy_destroy(this->tizen_policy_);
+        this->tizen_policy_ = NULL;
+     }
+   if (this->tizen_surface_)
+     {
+        tizen_surface_destroy(this->tizen_surface_);
+        this->tizen_surface_ = NULL;
+     }
+
+   // deinit eldbus
+   if (this->Dbus.proxy)
+     {
+        eldbus_proxy_unref(this->Dbus.proxy);
+        this->Dbus.proxy = NULL;
+     }
+   if (this->Dbus.obj)
+     {
+        eldbus_object_unref(this->Dbus.obj);
+        this->Dbus.obj = NULL;
+     }
+   if (this->Dbus.conn)
+     {
+        eldbus_connection_unref(this->Dbus.conn);
+        this->Dbus.conn = NULL;
+     }
+   eldbus_shutdown();
+}
+
+Eina_Bool EtEventLoop::RegisterWin(EtWin *tw)
+{
+   Eldbus_Pending *p = NULL;
+   Eina_Bool accepted = EINA_FALSE;
+
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "RegisterWindow",
+                         _cb_method_window_register,
+                         &accepted,
+                         -1,
+                         "u",
+                         tw->native_win);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+
+   elm_run();
+
+   return accepted;
+}
+
+Eina_Bool EtEventLoop::DeregisterWin(EtWin *tw)
+{
+   Eldbus_Pending *p = NULL;
+   Eina_Bool accepted = EINA_FALSE;
+
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "DeregisterWindow",
+                         _cb_method_window_register,
+                         &accepted,
+                         -1,
+                         "u",
+                         tw->native_win);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+
+   elm_run();
+
+   return accepted;
+}
+
+Eina_Bool EtEventLoop::SetWinStack(EtWin *tw,
+                                   EtWin *sibiling,
+                                   Eina_Bool above)
+{
+   Eldbus_Pending *p = NULL;
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "SetWindowStack",
+                         NULL,
+                         NULL,
+                         -1,
+                         "uui",
+                         tw->native_win,
+                         sibiling? sibiling->native_win : 0,
+                         above);
+   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
+
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::SetWinTransientFor(EtWin *tw_child,
+                                          EtWin *tw_parent,
+                                          Eina_Bool set)
+{
+   // TODO:: change to send dbus message
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tw_child, EINA_FALSE);
+
+   if (!this->tizen_policy_)
+     this->GetTizenPolicy();
+
+   if (set)
+     {
+        tizen_policy_set_transient_for(this->tizen_policy_,
+                                       tw_child->native_win,
+                                       tw_parent->native_win);
+     }
+   else
+     {
+        tizen_policy_unset_transient_for(this->tizen_policy_,
+                                         tw_child->native_win);
+     }
+
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::SetWinNotiLevel(EtWin *tw,
+                                       efl_util_notification_level_e level)
+{
+   // TODO:: change to send dbus message
+   Eina_Bool result = EINA_FALSE;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
+
+   result = efl_util_set_notification_window_level(tw->elm_win, level);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(result == EFL_UTIL_ERROR_NONE, EINA_FALSE);
+
+   return EINA_TRUE;
+}
+
+efl_util_notification_level_e EtEventLoop::GetWinNotiLevel(EtWin *tw)
+{
+   // TODO:: change to send dbus message
+   Eina_Bool result = EINA_FALSE;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EFL_UTIL_NOTIFICATION_LEVEL_NONE);
+
+   result = efl_util_get_notification_window_level(tw->elm_win, &level);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL(result == EFL_UTIL_ERROR_NONE, EFL_UTIL_NOTIFICATION_LEVEL_NONE);
+
+   return level;
+}
+
+Eina_Bool EtEventLoop::SetZoneRotation(int angle)
+{
+   Eldbus_Pending *p = NULL;
+   Eina_Bool allowed = EINA_FALSE;
+
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "ChangeZoneRotation",
+                         _cb_method_zone_rotation_change,
+                         &allowed,
+                         -1,
+                         "i",
+                         angle);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+
+   elm_run();
+
+   return allowed;
+}
+
+Eina_Bool EtEventLoop::GetWinInfo(EtWin *tw)
+{
+   Eldbus_Pending *p = NULL;
+   Ecore_Window win;
+   int retry = 10;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
+
+   win = tw->native_win;
+   retry = (int) win;
+
+   while (retry)
+     {
+        p = eldbus_proxy_call(this->Dbus.proxy,
+                              "GetWinInfo",
+                              _cb_method_win_info_get,
+                              tw,
+                              -1,
+                              "u",
+                              win);
+        EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+
+        elm_run();
+
+        if ((tw->native_win == win) && (!tw->effect))
+          return EINA_TRUE;
+        else
+          retry--;
+     }
+
+   if (tw->native_win != win)
+     {
+        ERR("Something Wrong. Difference with quering window"
+            "and received window from server");
+        tw->native_win = win;
+     }
+
+   return EINA_FALSE;
+}
+
+Eina_List *EtEventLoop::GetWinInfoList()
+{
+   Eldbus_Pending *p = NULL;
+   Window_Info_List *info_list = NULL;
+   EtWin *tw = NULL;
+   Eina_List *result = NULL;
+
+   info_list = E_NEW(Window_Info_List, 1);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(info_list, NULL);
+
+   while (info_list)
+     {
+        p = eldbus_proxy_call(this->Dbus.proxy,
+                              "GetWinsInfo",
+                              _cb_method_win_info_list_get,
+                              info_list,
+                              -1,
+                              "");
+        EINA_SAFETY_ON_NULL_RETURN_VAL(p, NULL);
+
+        elm_run();
+
+        if (info_list->retry)
+          {
+             info_list->retry = EINA_FALSE;
+             EINA_LIST_CAST_FREE(info_list->list, tw, EtWin*)
+               {
+                  if (tw)
+                    delete tw;
+               }
+
+             continue;
+          }
+
+        break;
+     }
+
+   result = eina_list_clone(info_list->list);
+   E_FREE(info_list);
+
+   this->FreeLastWinInfoList();
+   this->last_win_info_list_ = result;
+
+   return result;
+}
+
+void EtEventLoop::FreeWinInfoList(Eina_List *list)
+{
+   EtWin *tw = NULL;
+
+   EINA_SAFETY_ON_NULL_RETURN(list);
+
+   if (this->last_win_info_list_ == list)
+     this->last_win_info_list_ = NULL;
+
+   EINA_LIST_CAST_FREE(list, tw, EtWin*)
+     {
+        if (tw != NULL)
+          delete tw;
+     }
+
+   list = NULL;
+}
+
+Eina_Bool EtEventLoop::SetDpms(Eina_Bool on)
+{
+   Eldbus_Pending *p = NULL;
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "DPMS",
+                         NULL,
+                         NULL,
+                         -1,
+                         "u",
+                         on);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::FreezeEvent()
+{
+   Eldbus_Pending *p = NULL;
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "EventFreeze",
+                         NULL,
+                         NULL,
+                         -1,
+                         "u",
+                         1);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::ThawEvent()
+{
+   Eldbus_Pending *p = NULL;
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "EventFreeze",
+                         NULL,
+                         NULL,
+                         -1,
+                         "u",
+                         0);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::FeedMouseDown(int x, int y)
+{
+   Eldbus_Pending *p = NULL;
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "EventMouse",
+                         NULL,
+                         NULL,
+                         -1,
+                         "uii",
+                         0,
+                         x, y);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::FeedMouseMove(int x, int y)
+{
+   Eldbus_Pending *p = NULL;
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "EventMouse",
+                         NULL,
+                         NULL,
+                         -1,
+                         "uii",
+                         1,
+                         x, y);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::FeedMouseUp(int x, int y)
+{
+   Eldbus_Pending *p = NULL;
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "EventMouse",
+                         NULL,
+                         NULL,
+                         -1,
+                         "u",
+                         2,
+                         x, y);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::FeedKeyDown(const char *key)
+{
+   Eldbus_Pending *p = NULL;
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "EventKey",
+                         NULL,
+                         NULL,
+                         -1,
+                         "us",
+                         0,
+                         key);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::FeedKeyUp(const char *key)
+{
+   Eldbus_Pending *p = NULL;
+   p = eldbus_proxy_call(this->Dbus.proxy,
+                         "EventKey",
+                         NULL,
+                         NULL,
+                         -1,
+                         "us",
+                         1,
+                         key);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+   return EINA_TRUE;
+}
+
+void EtEventLoop::SetLastWinInfoList(Eina_List *list)
+{
+   EINA_SAFETY_ON_NULL_RETURN(list);
+
+   this->FreeLastWinInfoList();
+
+   this->last_win_info_list_ = list;
+}
+
+void EtEventLoop::FreeLastWinInfoList()
+{
+   if (this->last_win_info_list_)
+     this->FreeWinInfoList(this->last_win_info_list_);
+
+   this->last_win_info_list_ = NULL;
+}
+
+Eina_Bool EtEventLoop::WaitEvent(E_TC_Event_Type ev)
+{
+   Eldbus_Signal_Handler *sh;
+   Eina_Bool res = EINA_FALSE;
+
+   EINA_SAFETY_ON_FALSE_RETURN_VAL((E_TC_EVENT_TYPE_NONE < ev), res);
+   EINA_SAFETY_ON_FALSE_RETURN_VAL((E_TC_EVENT_TYPE_MAX > ev), res);
+
+   switch (ev)
+     {
+      case E_TC_EVENT_TYPE_VIS_ON:
+      case E_TC_EVENT_TYPE_VIS_OFF:
+      case E_TC_EVENT_TYPE_VIS_CHANGED:
+         sh = eldbus_proxy_signal_handler_add(this->Dbus.proxy,
+                                              "VisibilityChanged",
+                                              _cb_signal_vis_changed,
+                                              this);
+         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
+         break;
+
+      case E_TC_EVENT_TYPE_STACK_RAISE:
+      case E_TC_EVENT_TYPE_STACK_LOWER:
+      case E_TC_EVENT_TYPE_STACK_ABOVE:
+      case E_TC_EVENT_TYPE_STACK_BELOW:
+         sh = eldbus_proxy_signal_handler_add(this->Dbus.proxy,
+                                              "StackChanged",
+                                              _cb_signal_stack_changed,
+                                              this);
+         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
+         break;
+
+      case E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE:
+         sh = eldbus_proxy_signal_handler_add(this->Dbus.proxy,
+                                              "WinRotationChanged",
+                                              _cb_signal_win_rot_changed,
+                                              this);
+         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
+         break;
+
+      case E_TC_EVENT_TYPE_FOCUS_CHANGED:
+         sh = eldbus_proxy_signal_handler_add(this->Dbus.proxy,
+                                              "FocusChanged",
+                                              _cb_signal_focus_changed,
+                                              this);
+         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
+         break;
+
+      default:
+         goto finish;
+         break;
+     }
+
+   if (this->Ev.expire_timer)
+     ecore_timer_del(this->Ev.expire_timer);
+
+   this->Ev.expect = ev;
+   this->Ev.response = E_TC_EVENT_TYPE_NONE;
+   this->Ev.expire_timer = ecore_timer_add(5.0, _ev_wait_timeout, this);
+
+   elm_run();
+
+   if (this->Ev.expire_timer)
+     {
+        ecore_timer_del(this->Ev.expire_timer);
+        this->Ev.expire_timer = NULL;
+     }
+
+   eldbus_signal_handler_del(sh);
+
+   res = (this->Ev.response == this->Ev.expect);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+finish:
+   this->Ev.expect = E_TC_EVENT_TYPE_NONE;
+   this->Ev.response = E_TC_EVENT_TYPE_NONE;
+
+   return res;
+}
+
+void EtEventLoop::Work()
+{
+   /* give a turn to deal with deferred job for E_TEST_WORK_TIME */
+   ecore_timer_add(E_TEST_WORK_TIME, _cb_work_timeout, NULL);
+   elm_run();
+}
+
+void EtEventLoop::PrintWinInfoList()
+{
+   EtWin *tw = NULL;
+   Eina_List *l = NULL, *ll = NULL;
+
+   printf("--------------------------------------------------------------------------------------------------------------------------\n");
+   l = this->GetWinInfoList();
+   EINA_LIST_CAST_FOREACH(l, ll, tw, EtWin*)
+     {
+        printf("%04d WinID:%5u alpha:%d %5d,%5d (%5dx%5d) vis(Win:%d Obj:%d Opaque:%2d Type:%2d Skip:%d) Icon:%d Focus(Win:%d Obj:%d) :: %20s\n",
+               tw->layer,
+               (unsigned int)tw->native_win,
+               tw->alpha,
+               tw->x, tw->y, tw->w, tw->h,
+               tw->vis.win,
+               tw->vis.obj,
+               tw->vis.opaque,
+               tw->vis.type,
+               tw->vis.skip,
+               tw->iconic,
+               tw->focus.win,
+               tw->focus.obj,
+               tw->name);
+     }
+   this->FreeWinInfoList(l);
+   printf("--------------------------------------------------------------------------------------------------------------------------\n");
+}
+
+Ecore_Window EtEventLoop::GetWinId(Evas_Object *elm_win)
+{
+   Ecore_Wl_Window *wlwin = NULL;
+   struct wl_surface *surf = NULL;
+   Ecore_Window id = 0;
+   struct tizen_resource *tzres = NULL;
+
+   wlwin = elm_win_wl_window_get(elm_win);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(wlwin, 0);
+
+   surf = ecore_wl_window_surface_get(wlwin);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(surf, 0);
+
+   if (!this->tizen_surface_)
+     this->GetTizenSurface();
+
+   tzres = tizen_surface_get_tizen_resource(this->tizen_surface_, surf);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tzres, 0);
+
+   tizen_resource_add_listener(tzres,
+                               &_e_test_tizen_resource_listener, &id);
+
+   elm_run();
+
+   if (tzres) tizen_resource_destroy(tzres);
+
+   return id;
+}
+
+Eina_Bool EtEventLoop::GetTizenPolicy()
+{
+   Eina_Inlist *globals = NULL;
+   Ecore_Wl_Global *global = NULL;
+   struct wl_registry *registry = NULL;
+
+   if (!this->tizen_policy_)
+     {
+        registry = ecore_wl_registry_get();
+        globals = ecore_wl_globals_get();
+
+        EINA_SAFETY_ON_NULL_RETURN_VAL(registry, EINA_FALSE);
+        EINA_SAFETY_ON_NULL_RETURN_VAL(globals, EINA_FALSE);
+
+        EINA_INLIST_FOREACH(globals, global)
+          {
+             if (!strcmp(global->interface, "tizen_policy"))
+               {
+                  this->tizen_policy_ = (struct tizen_policy *)
+                     wl_registry_bind(registry,
+                                      global->id,
+                                      &tizen_policy_interface,
+                                      7);
+               }
+          }
+
+        EINA_SAFETY_ON_NULL_RETURN_VAL(this->tizen_policy_, EINA_FALSE);
+     }
+
+   return EINA_TRUE;
+}
+
+Eina_Bool EtEventLoop::GetTizenSurface()
+{
+   Eina_Inlist *globals = NULL;
+   Ecore_Wl_Global *global = NULL;
+   struct wl_registry *registry = NULL;
+
+   if (!this->tizen_surface_)
+     {
+        registry = ecore_wl_registry_get();
+        globals = ecore_wl_globals_get();
+
+        EINA_SAFETY_ON_NULL_RETURN_VAL(registry, EINA_FALSE);
+        EINA_SAFETY_ON_NULL_RETURN_VAL(globals, EINA_FALSE);
+
+        EINA_INLIST_FOREACH(globals, global)
+          {
+             if (!strcmp(global->interface, "tizen_surface"))
+               {
+                  this->tizen_surface_ = (struct tizen_surface *)
+                     wl_registry_bind(registry,
+                                      global->id,
+                                      &tizen_surface_interface,
+                                      1);
+               }
+          }
+
+        EINA_SAFETY_ON_NULL_RETURN_VAL(this->tizen_surface_, EINA_FALSE);
+     }
+
+   return EINA_TRUE;
+}
+
+/* callbacks - method */
+static void _cb_method_win_info_get(void *data,
+                                    const Eldbus_Message *msg,
+                                    Eldbus_Pending *p)
+{
+   const char *name = NULL, *text = NULL, *wname = NULL;
+   EtWin *tw = NULL;
+   Eina_Bool res = EINA_FALSE;
+
+   tw = (EtWin *)data;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get
+      (msg,
+       E_TC_SIGN_WIN_INFO,
+       &tw->native_win,
+       &wname,
+       &tw->x, &tw->y, &tw->w, &tw->h,
+       &tw->layer,
+       &tw->effect,
+       &tw->vis.win,
+       &tw->vis.obj,
+       &tw->vis.opaque,
+       &tw->vis.type,
+       &tw->vis.skip,
+       &tw->iconic,
+       &tw->alpha,
+       &tw->focus.win,
+       &tw->focus.obj,
+       &tw->rot);
+
+   if (wname)
+     {
+        // change window name from char * to Eina_Stringshare
+        if (tw->name)
+          eina_stringshare_del(tw->name);
+        tw->name = eina_stringshare_add(wname);
+     }
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname:%s errmsg:%s\n", name, text);
+     }
+
+   elm_exit();
+}
+
+static void _cb_method_win_info_list_get(void *data,
+                                         const Eldbus_Message *msg,
+                                         Eldbus_Pending *p)
+{
+   const char *name = NULL, *text = NULL, *wname = NULL;
+   Eldbus_Message_Iter *array = NULL, *ec = NULL;
+   Ecore_Window target_win = 0;
+   Window_Info_List *info_list = (Window_Info_List *)data;
+   Eina_Bool res = EINA_FALSE, animating = EINA_FALSE;
+
+   if (info_list == NULL)
+     goto finish;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "ua(" E_TC_SIGN_WIN_INFO ")", &target_win, &array);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+   while (eldbus_message_iter_get_and_next(array, 'r', &ec))
+     {
+        EtWin *tw = new EtWin();
+        if (!tw) continue;
+
+        res = eldbus_message_iter_arguments_get(
+           ec,
+           E_TC_SIGN_WIN_INFO,
+           &tw->native_win,
+           &wname,
+           &tw->x, &tw->y, &tw->w, &tw->h,
+           &tw->layer,
+           &tw->effect,
+           &tw->vis.win,
+           &tw->vis.obj,
+           &tw->vis.opaque,
+           &tw->vis.type,
+           &tw->vis.skip,
+           &tw->iconic,
+           &tw->alpha,
+           &tw->focus.win,
+           &tw->focus.obj,
+           &tw->rot);
+
+        if (wname)
+          {
+             // change name to eina_stringshare
+             if (tw->name)
+               {
+                  WRN("Failed to get win info\n");
+                  delete tw;
+                  continue;
+               }
+             tw->name = eina_stringshare_add(wname);
+          }
+
+        if (tw->effect)
+          animating = EINA_TRUE;
+
+        if (!res)
+          {
+             WRN("Failed to get win info\n");
+             delete tw;
+             continue;
+          }
+
+        info_list->list = eina_list_append(info_list->list, tw);
+     }
+
+   if (animating)
+     info_list->retry = EINA_TRUE;
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname:%s errmsg:%s\n", name, text);
+     }
+
+   elm_exit();
+}
+
+static void
+_cb_method_window_register(void *data,
+                           const Eldbus_Message *msg,
+                           Eldbus_Pending *p)
+{
+   const char *name = NULL, *text = NULL;
+   Eina_Bool res = EINA_FALSE;
+   Eina_Bool *accepted = (Eina_Bool *)data;
+
+   *accepted = EINA_FALSE;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "b", accepted);
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname: %s errmsg: %s\n", name, text);
+     }
+
+   elm_exit();
+}
+
+static void _cb_method_zone_rotation_change(void *data,
+                                            const Eldbus_Message *msg,
+                                            Eldbus_Pending *p)
+{
+   const char *name = NULL, *text = NULL;
+   Eina_Bool res = EINA_FALSE;
+   Eina_Bool *allowed = (Eina_Bool *)data;
+
+   *allowed = EINA_FALSE;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "b", allowed);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+   EINA_SAFETY_ON_FALSE_GOTO(*allowed, finish);
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname: %s errmsg: %s\n", name, text);
+     }
+
+   elm_exit();
+}
+
+static void _cb_signal_vis_changed(void *data,
+                                   const Eldbus_Message *msg)
+{
+   EtEventLoop *runner = (EtEventLoop *)data;
+   const char *name = NULL, *text = NULL;
+   Eina_Bool res = EINA_FALSE;
+   int vis = 0;
+   Ecore_Window id;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "ub", &id, &vis);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+   /* TODO */
+   if (((E_TC_EVENT_TYPE_VIS_ON  == runner->Ev.expect) && (vis)) ||
+       ((E_TC_EVENT_TYPE_VIS_OFF == runner->Ev.expect) && (!vis)) ||
+       (E_TC_EVENT_TYPE_VIS_CHANGED == runner->Ev.expect))
+     {
+        runner->Ev.response = runner->Ev.expect;
+        elm_exit();
+     }
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname:%s errmsg:%s\n", name, text);
+     }
+}
+
+static void _cb_signal_stack_changed(void *data,
+                                     const Eldbus_Message *msg)
+{
+   EtEventLoop *runner = (EtEventLoop *)data;
+   const char *name = NULL, *text = NULL;
+   Eina_Bool res = EINA_FALSE;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   /* TODO */
+   if ((E_TC_EVENT_TYPE_STACK_RAISE <= runner->Ev.expect) &&
+       (E_TC_EVENT_TYPE_STACK_BELOW >= runner->Ev.expect))
+     {
+        runner->Ev.response = runner->Ev.expect;
+        elm_exit();
+     }
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname:%s errmsg:%s\n", name, text);
+     }
+}
+
+static void _cb_signal_win_rot_changed(void *data,
+                                       const Eldbus_Message *msg)
+{
+   EtEventLoop *runner = (EtEventLoop *)data;
+   const char *name = NULL, *text = NULL;
+   Eina_Bool res = EINA_FALSE;
+   int angle = 0;
+   Ecore_Window id;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   /* TODO unused 'window id' and 'angle' */
+   res = eldbus_message_arguments_get(msg, "ui", &id, &angle);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+   runner->Ev.response = runner->Ev.expect;
+   elm_exit();
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname:%s errmsg:%s\n", name, text);
+     }
+}
+
+static void _cb_signal_focus_changed(void *data,
+                                     const Eldbus_Message *msg)
+{
+   EtEventLoop *runner = (EtEventLoop *)data;
+   const char *name = NULL, *text = NULL;
+   Eina_Bool res = EINA_FALSE;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   if (E_TC_EVENT_TYPE_FOCUS_CHANGED == runner->Ev.expect)
+     {
+        runner->Ev.response = runner->Ev.expect;
+        elm_exit();
+     }
+
+finish:
+   if ((name) || (text))
+     {
+        ERR("errname:%s errmsg:%s\n", name, text);
+     }
+}
+
+static Eina_Bool _cb_work_timeout(void *data)
+{
+   elm_exit();
+   return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool _ev_wait_timeout(void *data)
+{
+   EtEventLoop *runner = (EtEventLoop *)data;
+
+   runner->Ev.expire_timer = NULL;
+   runner->Ev.response = E_TC_EVENT_TYPE_TIMEOUT;
+
+   ERR("ev:%d\n", runner->Ev.expect);
+
+   elm_exit();
+
+   return ECORE_CALLBACK_DONE;
+}
+
diff --git a/src/e_test_event.h b/src/e_test_event.h
new file mode 100644 (file)
index 0000000..dea5e48
--- /dev/null
@@ -0,0 +1,93 @@
+#ifndef __ET_EVENT_LOOP_H__
+#define __ET_EVENT_LOOP_H__
+
+#include <gtest/gtest.h>
+#include <efl_util.h>
+
+#include "e_test_util.h"
+#include "e_test_win.h"
+
+class EtEventLoop
+{
+ public: // TODO:: Change to private and add getter & setter
+    Eina_List *last_win_info_list_ = NULL;
+
+    struct tizen_policy *tizen_policy_ = NULL;
+    struct tizen_surface *tizen_surface_ = NULL;
+
+    int log_dom_ = -1;
+
+    struct
+      {
+         Ecore_Timer *expire_timer;
+         E_TC_Event_Type expect;
+         E_TC_Event_Type response;
+      } Ev;
+
+    struct
+      {
+         Eldbus_Connection *conn;
+         Eldbus_Proxy *proxy;
+         Eldbus_Object *obj;
+      } Dbus;
+
+ public:
+    /* initializer */
+    EtEventLoop();
+
+    /* deinitializer */
+    ~EtEventLoop();
+
+    /* requests */
+    Eina_Bool     Init();
+    void          Shutdown();
+    Eina_Bool     RegisterWin(EtWin *tw);
+    Eina_Bool     DeregisterWin(EtWin *tw);
+    Eina_Bool     SetWinStack(EtWin *tw,
+                              EtWin *sibiling,
+                              Eina_Bool above);
+    Eina_Bool     SetWinTransientFor(EtWin *tw_child,
+                                     EtWin *tw_parent,
+                                     Eina_Bool set);
+    Eina_Bool     SetWinNotiLevel(EtWin *tw,
+                                  efl_util_notification_level_e level);
+    efl_util_notification_level_e GetWinNotiLevel(EtWin *tw);
+    Eina_Bool     SetZoneRotation(int angle);
+    Eina_Bool     GetWinInfo(EtWin *tw);
+    Eina_List    *GetWinInfoList();
+    void          FreeWinInfoList(Eina_List *list);
+    Ecore_Window  GetWinId(Evas_Object *elm_win);
+    Eina_Bool     SetDpms(Eina_Bool on);
+    Eina_Bool     FreezeEvent();
+    Eina_Bool     ThawEvent();
+    Eina_Bool     FeedMouseDown(int x, int y);
+    Eina_Bool     FeedMouseMove(int x, int y);
+    Eina_Bool     FeedMouseUp(int x, int y);
+    Eina_Bool     FeedKeyDown(const char *key);
+    Eina_Bool     FeedKeyUp(const char *key);
+    Eina_Bool     HasLastWinInfoList() { return !!this->last_win_info_list_; };
+    void          SetLastWinInfoList(Eina_List *list);
+    void          FreeLastWinInfoList();
+
+    /* events */
+    Eina_Bool     WaitEvent(E_TC_Event_Type ev);
+
+    /* methods */
+    void          Work();
+    void          PrintWinInfoList();
+
+    /* getter & setter */
+    Eldbus_Connection  *GetEldbusConnection() { return this->Dbus.conn; };
+    Eldbus_Proxy       *GetEldbusProxy() { return this->Dbus.proxy; };
+    Eldbus_Object      *GetEldbusObject() { return this->Dbus.obj; };
+    void                SetEldbusConnection(Eldbus_Connection *conn) { this->Dbus.conn = conn; };
+    void                SetEldbusProxy(Eldbus_Proxy *proxy) { this->Dbus.proxy = proxy; };
+    void                SetEldbusObject(Eldbus_Object *obj) { this->Dbus.obj = obj; };
+    int                 GetLogDomain() { return this->log_dom_; };
+
+ protected:
+    Eina_Bool  GetTizenPolicy();
+    Eina_Bool  GetTizenSurface();
+};
+
+#endif // end of __ET_EVENT_LOOP_H__
diff --git a/src/e_test_main.cpp b/src/e_test_main.cpp
new file mode 100644 (file)
index 0000000..41b20fd
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License");
+ *    you may not use this file except in compliance with the License.
+ *    You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ */
+/**
+ * @file        e_test_main.cpp
+ * @author      Window System
+ * @version     1.0
+ * @brief       Enlightenment Unit_test with gtest framework
+ */
+
+#include "e_test_event.h"
+#include <gtest/gtest.h>
+
+using ::testing::Test;
+
+EtEventLoop *gLoop = NULL;
+
+int _GetLogDomain() { return gLoop->GetLogDomain(); } // wrapper func for EINA_LOG
+
+int
+elm_main(int argc, char **argv) {
+   int ret = 0;
+
+   gLoop = new EtEventLoop();
+   gLoop->Init();
+
+   ::testing::InitGoogleTest(&argc, argv);
+   ret = RUN_ALL_TESTS();
+
+   gLoop->Shutdown();
+
+   delete gLoop;
+
+   return ret;
+}
+ELM_MAIN();
diff --git a/src/e_test_runner.c b/src/e_test_runner.c
deleted file mode 100644 (file)
index 8085b23..0000000
+++ /dev/null
@@ -1,1282 +0,0 @@
-#include "e_test_runner.h"
-
-#define E_TEST_RUNNER_WORK_TIME 3.0
-#define E_TC_SIGN_WIN_INFO  "usiiiiibbbiibbbbbi"
-
-int _log_dom = -1;
-
-struct tizen_policy *tizen_policy = NULL;
-struct tizen_surface *tizen_surface = NULL;
-
-typedef struct {
-     Eina_List *list;
-     Eina_Bool retry;
-} Window_Info_List;
-
-static void
-_e_test_runner_cb_resource_id(void *data,
-                              struct tizen_resource *tizen_resource EINA_UNUSED,
-                              uint32_t id)
-{
-   Ecore_Window *res_id = data;
-
-   *res_id = id;
-
-   elm_exit();
-}
-
-static const struct tizen_resource_listener _tizen_resource_listener =
-{
-   _e_test_runner_cb_resource_id,
-};
-
-static Ecore_Window
-_e_test_runner_window_id_get(Evas_Object *elm_win)
-{
-   Ecore_Wl_Window *wlwin;
-   struct wl_surface *surf;
-   Ecore_Window id = 0;
-
-   Eina_Inlist *globals;
-   Ecore_Wl_Global *global;
-   struct wl_registry *registry;
-
-   struct tizen_resource *tizen_resource = NULL;
-
-   wlwin = elm_win_wl_window_get(elm_win);
-   if (!wlwin) return 0;
-
-   surf = ecore_wl_window_surface_get(wlwin);
-   if (!surf) return 0;
-
-   if (!tizen_surface)
-     {
-        registry = ecore_wl_registry_get();
-        globals = ecore_wl_globals_get();
-
-        if (!registry || !globals) return 0;
-
-        EINA_INLIST_FOREACH(globals, global)
-          {
-             if (!strcmp(global->interface, "tizen_surface"))
-               {
-                  tizen_surface =
-                     wl_registry_bind(registry, global->id,
-                                      &tizen_surface_interface, 1);
-                  break;
-               }
-          }
-
-        if (!tizen_surface) return 0;
-     }
-
-   tizen_resource = tizen_surface_get_tizen_resource(tizen_surface, surf);
-   if (!tizen_resource) return 0;
-   tizen_resource_add_listener(tizen_resource,
-                               &_tizen_resource_listener, &id);
-
-   elm_run();
-
-   if (tizen_resource) tizen_resource_destroy(tizen_resource);
-
-   return id;
-}
-
-static void
-_cb_method_win_info_get(void *data,
-                        const Eldbus_Message *msg,
-                        Eldbus_Pending *p EINA_UNUSED)
-{
-   const char *name = NULL, *text = NULL, *wname = NULL;
-   E_TC_Win *tw;
-   Eina_Bool res;
-
-   tw = data;
-
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   res = eldbus_message_arguments_get
-      (msg,
-       E_TC_SIGN_WIN_INFO,
-       &tw->native_win,
-       &wname,
-       &tw->x, &tw->y, &tw->w, &tw->h,
-       &tw->layer,
-       &tw->effect,
-       &tw->vis.win,
-       &tw->vis.obj,
-       &tw->vis.opaque,
-       &tw->vis.type,
-       &tw->vis.skip,
-       &tw->iconic,
-       &tw->alpha,
-       &tw->focus.win,
-       &tw->focus.obj,
-       &tw->rot);
-
-   if (wname)
-     {
-        if (tw->name)
-          eina_stringshare_del(tw->name);
-        tw->name = eina_stringshare_add(wname);
-     }
-
-finish:
-   if ((name) || (text))
-     {
-        ERR("errname:%s errmsg:%s\n", name, text);
-     }
-
-   elm_exit();
-}
-
-static void
-_cb_method_win_info_list_get(void *data,
-                             const Eldbus_Message *msg,
-                             Eldbus_Pending *p EINA_UNUSED)
-{
-   const char *name = NULL, *text = NULL, *wname = NULL;
-   Eldbus_Message_Iter *array, *ec;
-   Ecore_Window target_win = 0;
-   Window_Info_List *info_list = data;
-   Eina_Bool res, animating = EINA_FALSE;
-
-   if (!!!info_list)
-     goto finish;
-
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   res = eldbus_message_arguments_get(msg, "ua("E_TC_SIGN_WIN_INFO")", &target_win, &array);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-
-   while (eldbus_message_iter_get_and_next(array, 'r', &ec))
-     {
-        E_TC_Win *tw = e_tc_win_info_add();
-        if (!tw) continue;
-
-        res = eldbus_message_iter_arguments_get
-           (ec,
-            E_TC_SIGN_WIN_INFO,
-            &tw->native_win,
-            &wname,
-            &tw->x, &tw->y, &tw->w, &tw->h,
-            &tw->layer,
-            &tw->effect,
-            &tw->vis.win,
-            &tw->vis.obj,
-            &tw->vis.opaque,
-            &tw->vis.type,
-            &tw->vis.skip,
-            &tw->iconic,
-            &tw->alpha,
-            &tw->focus.win,
-            &tw->focus.obj,
-            &tw->rot);
-
-        if (wname)
-          {
-             if (tw->name)
-               eina_stringshare_del(tw->name);
-             tw->name = eina_stringshare_add(wname);
-          }
-
-        if (tw->effect)
-          animating = EINA_TRUE;
-
-        if (!res)
-          {
-             WRN("Failed to get win info\n");
-             e_tc_win_del(tw);
-             continue;
-          }
-
-        info_list->list = eina_list_append(info_list->list, tw);
-     }
-
-   if (animating)
-     info_list->retry = EINA_TRUE;
-
-
-finish:
-   if ((name) || (text))
-     {
-        ERR("errname:%s errmsg:%s\n", name, text);
-     }
-
-   elm_exit();
-}
-
-static void
-_cb_method_window_register(void *data,
-                           const Eldbus_Message *msg,
-                           Eldbus_Pending *p EINA_UNUSED)
-{
-   const char *name = NULL, *text = NULL;
-   Eina_Bool res;
-   Eina_Bool *accepted = data;
-
-   *accepted = EINA_FALSE;
-
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   res = eldbus_message_arguments_get(msg, "b", accepted);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-   EINA_SAFETY_ON_FALSE_GOTO(*accepted, finish);
-
-finish:
-   if ((name) || (text))
-     {
-        ERR("errname:%s errmsg:%s\n", name, text);
-     }
-
-   elm_exit();
-}
-
-static void
-_cb_method_window_deregister(void *data,
-                             const Eldbus_Message *msg,
-                             Eldbus_Pending *p EINA_UNUSED)
-{
-   const char *name = NULL, *text = NULL;
-   Eina_Bool res;
-   Eina_Bool *allowed = data;
-
-   *allowed = EINA_FALSE;
-
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   res = eldbus_message_arguments_get(msg, "b", allowed);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-   EINA_SAFETY_ON_FALSE_GOTO(*allowed, finish);
-
-finish:
-   if ((name) || (text))
-     {
-        ERR("errname:%s errmsg:%s\n", name, text);
-     }
-
-   elm_exit();
-}
-
-static void
-_cb_method_zone_rotation_change(void *data,
-                                const Eldbus_Message *msg,
-                                Eldbus_Pending *p EINA_UNUSED)
-{
-   const char *name = NULL, *text = NULL;
-   Eina_Bool res;
-   Eina_Bool *allowed = data;
-
-   *allowed = EINA_FALSE;
-
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   res = eldbus_message_arguments_get(msg, "b", allowed);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-   EINA_SAFETY_ON_FALSE_GOTO(*allowed, finish);
-
-finish:
-   if ((name) || (text))
-     {
-        ERR("errname:%s errmsg:%s\n", name, text);
-     }
-
-   elm_exit();
-}
-
-static void
-_cb_signal_vis_changed(void *data,
-                       const Eldbus_Message *msg)
-{
-   E_Test_Runner *runner = data;
-   const char *name = NULL, *text = NULL;
-   Eina_Bool res;
-   int vis = 0;
-   Ecore_Window id;
-
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   res = eldbus_message_arguments_get(msg, "ub", &id, &vis);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-
-   /* TODO */
-   if (((E_TC_EVENT_TYPE_VIS_ON  == runner->ev.expect) && (vis)) ||
-       ((E_TC_EVENT_TYPE_VIS_OFF == runner->ev.expect) && (!vis)) ||
-       (E_TC_EVENT_TYPE_VIS_CHANGED == runner->ev.expect))
-     {
-        runner->ev.response = runner->ev.expect;
-        elm_exit();
-     }
-
-finish:
-   if ((name) || (text))
-     {
-        ERR("errname:%s errmsg:%s\n", name, text);
-     }
-}
-
-static void
-_cb_signal_stack_changed(void *data,
-                         const Eldbus_Message *msg)
-{
-   E_Test_Runner *runner = data;
-   const char *name = NULL, *text = NULL;
-   Eina_Bool res;
-
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   /* TODO */
-   if ((E_TC_EVENT_TYPE_STACK_RAISE <= runner->ev.expect) &&
-       (E_TC_EVENT_TYPE_STACK_BELOW >= runner->ev.expect))
-     {
-        runner->ev.response = runner->ev.expect;
-        elm_exit();
-     }
-
-finish:
-   if ((name) || (text))
-     {
-        ERR("errname:%s errmsg:%s\n", name, text);
-     }
-}
-
-static void
-_cb_signal_win_rot_changed(void *data,
-                           const Eldbus_Message *msg)
-{
-   E_Test_Runner *runner = data;
-   const char *name = NULL, *text = NULL;
-   Eina_Bool res;
-   int angle = 0;
-   Ecore_Window id;
-
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   /* TODO unused 'window id' and 'angle' */
-   res = eldbus_message_arguments_get(msg, "ui", &id, &angle);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-
-   runner->ev.response = runner->ev.expect;
-   elm_exit();
-
-finish:
-   if ((name) || (text))
-     {
-        ERR("errname:%s errmsg:%s\n", name, text);
-     }
-}
-
-static void
-_cb_signal_focus_changed(void *data,
-                             const Eldbus_Message *msg)
-{
-   E_Test_Runner *runner = data;
-   const char *name = NULL, *text = NULL;
-   Eina_Bool res = EINA_FALSE;
-
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   if (E_TC_EVENT_TYPE_FOCUS_CHANGED == runner->ev.expect)
-     {
-        runner->ev.response = runner->ev.expect;
-        elm_exit();
-     }
-
-finish:
-   if ((name) || (text))
-     {
-        ERR("errname:%s errmsg:%s\n", name, text);
-     }
-}
-
-static Eina_Bool
-_cb_work_time_out(void *data EINA_UNUSED)
-{
-   elm_exit();
-   return ECORE_CALLBACK_CANCEL;
-}
-
-static Eina_Bool
-_ev_wait_timeout(void *data)
-{
-   E_Test_Runner *runner = data;
-
-   runner->ev.expire_timer = NULL;
-   runner->ev.response = E_TC_EVENT_TYPE_TIMEOUT;
-
-   ERR("ev:%d\n", runner->ev.expect);
-
-   elm_exit();
-
-   return ECORE_CALLBACK_DONE;
-}
-
-Eina_Bool
-e_test_runner_req_win_register(E_Test_Runner *runner,
-                               E_TC_Win *tw)
-{
-   Eldbus_Pending *p;
-   Eina_Bool accepted = EINA_FALSE;
-
-   p = eldbus_proxy_call(runner->dbus.proxy,
-                         "RegisterWindow",
-                         _cb_method_window_register,
-                         &accepted,
-                         -1,
-                         "u",
-                         tw->native_win);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
-
-   elm_run();
-
-   return accepted;
-}
-
-Eina_Bool
-e_test_runner_req_win_deregister(E_Test_Runner *runner,
-                                 E_TC_Win *tw)
-{
-   Eldbus_Pending *p;
-   Eina_Bool allowed = EINA_FALSE;
-
-   p = eldbus_proxy_call(runner->dbus.proxy,
-                         "DeregisterWindow",
-                         _cb_method_window_deregister,
-                         &allowed,
-                         -1,
-                         "u",
-                         tw->native_win);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
-
-   elm_run();
-
-   return allowed;
-}
-
-Eina_Bool
-e_test_runner_req_win_stack_set(E_Test_Runner *runner,
-                                E_TC_Win *tw,
-                                E_TC_Win *sibling,
-                                Eina_Bool above)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy,
-                         "SetWindowStack",
-                         NULL,
-                         NULL,
-                         -1,
-                         "uui",
-                         tw->native_win,
-                         sibling? sibling->native_win : 0,
-                         above);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_req_zone_rotation_change(E_Test_Runner *runner, int angle)
-{
-   Eldbus_Pending *p;
-   Eina_Bool allowed = EINA_FALSE;
-
-   p = eldbus_proxy_call(runner->dbus.proxy,
-                         "ChangeZoneRotation",
-                         _cb_method_zone_rotation_change,
-                         &allowed,
-                         -1,
-                         "i",
-                         angle);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
-
-   elm_run();
-
-   return allowed;
-}
-
-Eina_Bool
-e_test_runner_req_win_info_get(E_Test_Runner *runner, E_TC_Win *tw)
-{
-   Eldbus_Pending *p;
-   Ecore_Window win;
-   int retry = 10;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(runner, EINA_FALSE);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
-
-   win = tw->native_win;
-   while (retry)
-     {
-        p = eldbus_proxy_call(runner->dbus.proxy,
-                              "GetWinInfo",
-                              _cb_method_win_info_get,
-                              tw,
-                              -1,
-                              "u",
-                              win);
-        EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
-
-        elm_run();
-
-        if ((tw->native_win == win) && (!tw->effect))
-          return EINA_TRUE;
-        else
-          retry--;
-     }
-
-   if (tw->native_win != win)
-     {
-        ERR("Something Wrong. Difference with querying window and received window from server");
-        tw->native_win = win;
-     }
-
-   return EINA_FALSE;
-}
-
-
-Eina_List *
-e_test_runner_req_win_info_list_get(E_Test_Runner *runner)
-{
-   Eldbus_Pending *p;
-   Window_Info_List *info_list = NULL;
-   Eina_List *list = NULL;
-
-   info_list = E_NEW(Window_Info_List, 1);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(info_list, NULL);
-
-   while (info_list)
-     {
-        p = eldbus_proxy_call(runner->dbus.proxy,
-                              "GetWinsInfo",
-                              _cb_method_win_info_list_get,
-                              info_list,
-                              -1,
-                              "");
-        EINA_SAFETY_ON_NULL_RETURN_VAL(p, NULL);
-
-        elm_run();
-
-        if (info_list->retry)
-          {
-             E_TC_Win *tw;
-             info_list->retry = EINA_FALSE;
-             EINA_LIST_FREE(info_list->list, tw)
-               {
-                  if (tw)
-                    e_tc_win_del(tw);
-               }
-
-             continue;
-          }
-
-        break;
-     }
-
-   list = eina_list_clone(info_list->list);
-   E_FREE(info_list);
-
-   return list;
-}
-
-void
-e_test_runner_req_win_info_list_free(Eina_List *l)
-{
-   E_TC_Win *tw;
-
-   EINA_SAFETY_ON_NULL_RETURN(l);
-
-   EINA_LIST_FREE(l, tw)
-     e_tc_win_del(tw);
-}
-
-Eina_Bool
-e_test_runner_req_dpms_on(E_Test_Runner *runner)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy, "DPMS",
-                         NULL, NULL, -1,
-                         "u", 1);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_req_dpms_off(E_Test_Runner *runner)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy, "DPMS",
-                         NULL, NULL, -1,
-                         "u", 0);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_req_ev_freeze(E_Test_Runner *runner)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy, "EventFreeze",
-                         NULL, NULL, -1,
-                         "u", 1);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_req_ev_thaw(E_Test_Runner *runner)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy, "EventFreeze",
-                         NULL, NULL, -1,
-                         "u", 0);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_req_ev_feed_mouse_down(E_Test_Runner *runner, int x, int y)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy, "EventMouse",
-                         NULL, NULL, -1,
-                         "uii", 0, x, y);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_req_ev_feed_mouse_move(E_Test_Runner *runner, int x, int y)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy, "EventMouse",
-                         NULL, NULL, -1,
-                         "uii", 1, x, y);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_req_ev_feed_mouse_up(E_Test_Runner *runner, int x, int y)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy, "EventMouse",
-                         NULL, NULL, -1,
-                         "uii", 2, x, y);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_req_ev_feed_key_down(E_Test_Runner *runner, const char *key)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy, "EventKey",
-                         NULL, NULL, -1,
-                         "us", 0, key);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_req_ev_feed_key_up(E_Test_Runner *runner, const char *key)
-{
-   Eldbus_Pending *p;
-   p = eldbus_proxy_call(runner->dbus.proxy, "EventKey",
-                         NULL, NULL, -1,
-                         "us", 1, key);
-   EINA_SAFETY_ON_TRUE_RETURN_VAL(p != NULL, EINA_FALSE);
-   return EINA_TRUE;
-}
-
-Eina_Bool
-e_test_runner_ev_wait(E_Test_Runner *runner,
-                      E_TC_Event_Type ev)
-{
-   Eldbus_Signal_Handler *sh;
-   Eina_Bool res = EINA_FALSE;
-
-   EINA_SAFETY_ON_FALSE_RETURN_VAL((E_TC_EVENT_TYPE_NONE < ev), res);
-   EINA_SAFETY_ON_FALSE_RETURN_VAL((E_TC_EVENT_TYPE_MAX > ev), res);
-
-   switch (ev)
-     {
-      case E_TC_EVENT_TYPE_VIS_ON:
-      case E_TC_EVENT_TYPE_VIS_OFF:
-      case E_TC_EVENT_TYPE_VIS_CHANGED:
-         sh = eldbus_proxy_signal_handler_add(runner->dbus.proxy,
-                                              "VisibilityChanged",
-                                              _cb_signal_vis_changed,
-                                              runner);
-         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
-         break;
-
-      case E_TC_EVENT_TYPE_STACK_RAISE:
-      case E_TC_EVENT_TYPE_STACK_LOWER:
-      case E_TC_EVENT_TYPE_STACK_ABOVE:
-      case E_TC_EVENT_TYPE_STACK_BELOW:
-         sh = eldbus_proxy_signal_handler_add(runner->dbus.proxy,
-                                              "StackChanged",
-                                              _cb_signal_stack_changed,
-                                              runner);
-         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
-         break;
-
-      case E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE:
-         sh = eldbus_proxy_signal_handler_add(runner->dbus.proxy,
-                                              "WinRotationChanged",
-                                              _cb_signal_win_rot_changed,
-                                              runner);
-         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
-         break;
-
-      case E_TC_EVENT_TYPE_FOCUS_CHANGED:
-         sh = eldbus_proxy_signal_handler_add(runner->dbus.proxy,
-                                              "FocusChanged",
-                                              _cb_signal_focus_changed,
-                                              runner);
-         EINA_SAFETY_ON_NULL_GOTO(sh, finish);
-         break;
-
-      default:
-         goto finish;
-         break;
-     }
-
-   if (runner->ev.expire_timer)
-     ecore_timer_del(runner->ev.expire_timer);
-
-   runner->ev.expect = ev;
-   runner->ev.response = E_TC_EVENT_TYPE_NONE;
-   runner->ev.expire_timer = ecore_timer_add(5.0, _ev_wait_timeout, runner);
-
-   elm_run();
-
-   if (runner->ev.expire_timer)
-     {
-        ecore_timer_del(runner->ev.expire_timer);
-        runner->ev.expire_timer = NULL;
-     }
-
-   eldbus_signal_handler_del(sh);
-
-   res = (runner->ev.response == runner->ev.expect);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-
-finish:
-   runner->ev.expect = E_TC_EVENT_TYPE_NONE;
-   runner->ev.response = E_TC_EVENT_TYPE_NONE;
-
-   return res;
-}
-
-void
-e_test_runner_work(void)
-{
-   /* give a turn to deal with deferred job for E_TEST_RUNNER_WORK_TIME */
-   ecore_timer_add(E_TEST_RUNNER_WORK_TIME, _cb_work_time_out, NULL);
-   elm_run();
-}
-
-void
-e_test_runner_util_win_info_print(E_Test_Runner *runner)
-{
-   E_TC_Win *tw;
-   Eina_List *l, *ll;
-
-   printf("--------------------------------------------------------------------------------------------------------------------------\n");
-   l = e_test_runner_req_win_info_list_get(runner);
-   EINA_LIST_FOREACH(l, ll, tw)
-     {
-        printf("%04d WinID:%5u alpha:%d %5d,%5d (%5dx%5d) vis(Win:%d Obj:%d Opaque:%2d Type:%2d Skip:%d) Icon:%d Focus(Win:%d Obj:%d)\n",
-               tw->layer,
-               (unsigned int)tw->native_win,
-               tw->alpha,
-               tw->x, tw->y, tw->w, tw->h,
-               tw->vis.win,
-               tw->vis.obj,
-               tw->vis.opaque,
-               tw->vis.type,
-               tw->vis.skip,
-               tw->iconic,
-               tw->focus.win,
-               tw->focus.obj);
-     }
-   e_test_runner_req_win_info_list_free(l);
-   printf("--------------------------------------------------------------------------------------------------------------------------\n");
-}
-
-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 *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;
-
-   elm_win = elm_win_add(p_elm_win, name, type);
-   EINA_SAFETY_ON_NULL_GOTO(elm_win, err);
-
-   if (alpha) elm_win_alpha_set(elm_win, EINA_TRUE);
-
-   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);
-
-   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);
-   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;
-
-   return tw;
-
-err:
-   evas_object_del(elm_win);
-   E_FREE(tw);
-
-   return NULL;
-}
-
-E_TC_Win *
-e_tc_win_info_add(void)
-{
-   E_TC_Win *tw = NULL;
-
-   tw = E_NEW(E_TC_Win, 1);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tw, NULL);
-
-   return tw;
-}
-
-void
-e_tc_win_del(E_TC_Win *tw)
-{
-   EINA_SAFETY_ON_NULL_RETURN(tw);
-
-   if (tw->elm_win)
-     evas_object_del(tw->elm_win);
-
-   if (tw->name)
-     eina_stringshare_del(tw->name);
-
-   E_FREE(tw);
-}
-
-void
-e_tc_win_geom_update(E_TC_Win *tw)
-{
-   evas_object_move(tw->elm_win, tw->x, tw->y);
-   evas_object_resize(tw->elm_win, tw->w, tw->h);
-}
-
-void
-e_tc_win_show(E_TC_Win *tw)
-{
-   EINA_SAFETY_ON_NULL_RETURN(tw);
-
-   evas_object_show(tw->elm_win);
-}
-
-void
-e_tc_win_hide(E_TC_Win *tw)
-{
-   EINA_SAFETY_ON_NULL_RETURN(tw);
-
-   evas_object_hide(tw->elm_win);
-}
-
-Eina_Bool
-e_tc_win_transient_for_set(E_TC_Win *tw_child, E_TC_Win *tw_parent, Eina_Bool set)
-{
-   Eina_Inlist *globals;
-   Ecore_Wl_Global *global;
-   struct wl_registry *registry;
-
-   if (!tizen_policy)
-     {
-        registry = ecore_wl_registry_get();
-        globals = ecore_wl_globals_get();
-
-        if (!registry || !globals) return EINA_FALSE;
-
-        EINA_INLIST_FOREACH(globals, global)
-          {
-             if (!strcmp(global->interface, "tizen_policy"))
-               {
-                  tizen_policy =
-                     wl_registry_bind(registry, global->id,
-                                      &tizen_policy_interface, 7);
-               }
-          }
-
-        if (!tizen_policy) return EINA_FALSE;
-     }
-
-   if (set)
-     tizen_policy_set_transient_for(tizen_policy,
-                                    tw_child->native_win,
-                                    tw_parent->native_win);
-   else
-     tizen_policy_unset_transient_for(tizen_policy,
-                                    tw_child->native_win);
-   return EINA_TRUE;
-}
-
-static E_TC *
-_e_tc_add(unsigned int num,
-          const char *name,
-          Eina_Bool (*func)(E_TC*),
-          Eina_Bool expect,
-          E_Test_Runner *runner,
-          Eina_Bool all,
-          int chosen)
-{
-   E_TC *tc;
-
-   tc = E_NEW(E_TC, 1);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, NULL);
-
-   tc->num = num;
-   tc->name = name;
-   tc->func = func;
-   tc->expect = expect;
-   tc->runner = runner;
-
-   if ((!all) && (num != (unsigned int)chosen))
-     tc->skip = EINA_TRUE;
-
-   runner->tc_list = eina_list_append(runner->tc_list, tc);
-
-   return tc;
-}
-
-#undef TC_ADD
-#define TC_ADD(num, name, func, expect) _e_tc_add(num, name, func, expect, runner, all, chosen)
-
-static void
-_e_test_runner_init(E_Test_Runner *runner,
-                    Eina_Bool all,
-                    int chosen)
-{
-#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);
-#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);
-#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( 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( 161, "Multi full window: Basic",          T_FUNC( 161, multi_all_full_wins_basic        ), 1);
-   TC_ADD( 162, "Multi full window: 3 Show1",        T_FUNC( 162, multi_all_full_wins_show1        ), 1);
-   TC_ADD( 163, "Multi full window: 3 Show2",        T_FUNC( 163, multi_all_full_wins_show2        ), 1);
-   TC_ADD( 164, "Multi full window: 3 Show3",        T_FUNC( 164, multi_all_full_wins_show3        ), 1);
-   TC_ADD( 165, "Multi full window: 3 Raise1",       T_FUNC( 165, multi_all_full_wins_raise1       ), 1);
-   TC_ADD( 166, "Multi full window: 3 Raise2",       T_FUNC( 166, multi_all_full_wins_raise2       ), 1);
-   TC_ADD( 167, "Multi full window: 3 Stack Above1", T_FUNC( 167, multi_all_full_wins_stack_above1 ), 1);
-   TC_ADD( 168, "Multi full window: 3 Stack Above2", T_FUNC( 168, multi_all_full_wins_stack_above2 ), 1);
-   TC_ADD( 169, "Multi full window: 3 Stack Above3", T_FUNC( 169, multi_all_full_wins_stack_above3 ), 1);
-   TC_ADD( 170, "Multi full window: 3 Lower1",       T_FUNC( 170, multi_all_full_wins_lower1       ), 1);
-   TC_ADD( 171, "Multi full window: 3 Lower2",       T_FUNC( 171, multi_all_full_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);
-
-   TC_ADD( 183, "Multi full window: 2 Show1",   T_FUNC( 183, multi_full_2wins_show1 ), 1);
-   TC_ADD( 184, "Multi full window: 2 Show2",   T_FUNC( 184, multi_full_2wins_show2 ), 1);
-   TC_ADD( 185, "Multi full window: 2 Show3",   T_FUNC( 185, multi_full_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);
-
-   /* [0300 - 0399] notification */
-   TC_ADD( 300, "Noti Level default",           T_FUNC( 300, notification_level_default), 1);
-   TC_ADD( 301, "Noti Level medium",            T_FUNC( 301, notification_level_medium ), 1);
-   TC_ADD( 302, "Noti Level high",              T_FUNC( 302, notification_level_high   ), 1);
-   TC_ADD( 303, "Noti Level top",               T_FUNC( 303, notification_level_top    ), 1);
-   TC_ADD( 304, "Noti Level none",              T_FUNC( 304, notification_level_none   ), 1);
-   TC_ADD( 305, "Noti Level Change",            T_FUNC( 305, notification_level_change ), 1);
-
-   TC_ADD( 306, "Fullsize Noti Level default",  T_FUNC( 306, notification_fullsize_level_default), 1);
-   TC_ADD( 307, "Fullsize Noti Level medium",   T_FUNC( 307, notification_fullsize_level_medium ), 1);
-   TC_ADD( 308, "Fullsize Noti Level high",     T_FUNC( 308, notification_fullsize_level_high   ), 1);
-   TC_ADD( 309, "Fullsize Noti Level top",      T_FUNC( 309, notification_fullsize_level_top    ), 1);
-   TC_ADD( 310, "Fullsize Noti Level none",     T_FUNC( 310, notification_fullsize_level_none   ), 1);
-   TC_ADD( 311, "Fullsize Noti Level Change",   T_FUNC( 311, notification_fullsize_level_change ), 1);
-
-   /* [0400 - 0499] tizen-ws-shell */
-   TC_ADD( 400, "Screensaver: Basic",           T_FUNC( 400, scrsaver_basic            ), 1);
-   TC_ADD( 401, "Screensaver Manager: Basic",   T_FUNC( 401, scrsaver_mng_basic        ), 1);
-
-   TC_ADD( 500, "Rotation: Available Rotation", T_FUNC( 500, rotation_available_rots   ), 1);
-
-   /* [0600 - 0699] focus */
-   TC_ADD( 600, "Focus: Basic",                 T_FUNC( 600, focus_basic               ), 1);
-   TC_ADD( 601, "Focus: lower",                 T_FUNC( 601, focus_lower               ), 1);
-   TC_ADD( 602, "Focus: raise",                 T_FUNC( 602, focus_raise               ), 1);
-   TC_ADD( 603, "Focus: destroy",               T_FUNC( 603, focus_destroy             ), 1);
-   TC_ADD( 604, "Focus: partial window basic",  T_FUNC( 604, focus_partial_basic       ), 1);
-#undef T_FUNC
-}
-
-static void
-_e_test_runner_shutdown(E_Test_Runner *runner)
-{
-   E_TC *tc;
-
-   EINA_LIST_FREE(runner->tc_list, tc)
-     {
-        E_FREE(tc);
-     }
-
-   if (tizen_surface) tizen_surface_destroy(tizen_surface);
-   if (tizen_policy) tizen_policy_destroy(tizen_policy);
-
-   tizen_surface = NULL;
-   tizen_policy = NULL;
-}
-
-static void
-_e_test_runner_run(E_Test_Runner *runner)
-{
-   Eina_List *l;
-   E_TC *tc;
-   Eina_Bool pass;
-
-   EINA_LIST_FOREACH(runner->tc_list, l, tc)
-     {
-        if (tc->skip) continue;
-
-        pass = tc->func(tc);
-        tc->passed = (pass == tc->expect);
-
-        printf("TEST \"%s\" : %s\n",
-               tc->name,
-               tc->passed ? "PASS" : "FAIL");
-     }
-}
-
-static void
-_e_test_runner_result(E_Test_Runner *runner)
-{
-   Eina_Strbuf *buf;
-   Eina_List *l;
-   E_TC *tc;
-   int skip_case = 0;
-   int pass_case = 0;
-   int fail_case = 0;
-   int total = 0;
-
-   if (!(buf = eina_strbuf_new())) return;
-
-   eina_strbuf_append(buf, "\n\n");
-   eina_strbuf_append(buf, "==============================================\n");
-   eina_strbuf_append(buf, "TEST CASE RESULT\n");
-   eina_strbuf_append(buf, "==============================================\n");
-
-   EINA_LIST_FOREACH(runner->tc_list, l, tc)
-     {
-        eina_strbuf_append_printf(buf,
-                                  "[%04d] TEST \"%-30.30s\" : %s\n",
-                                  tc->num,
-                                  tc->name,
-                                  tc->skip ? "SKIP..." :
-                                  tc->passed ? "PASS" : "FAIL");
-
-        total++;
-
-        tc->skip ? skip_case++ :
-        tc->passed ? pass_case++ : fail_case++;
-     }
-
-   eina_strbuf_append(buf, "==============================================\n");
-   eina_strbuf_append_printf(buf, "TOTAL: %4d Cases\n", total);
-   eina_strbuf_append_printf(buf, "SKIP : %4d Cases\n", skip_case);
-   eina_strbuf_append_printf(buf, "PASS : %4d Cases\n", pass_case);
-   eina_strbuf_append_printf(buf, "FAIL : %4d Cases\n", fail_case);
-   eina_strbuf_append(buf, "==============================================\n");
-
-   printf("%s", eina_strbuf_string_get(buf));
-   eina_strbuf_free(buf);
-}
-
-static void
-_usage(const char *exec)
-{
-   printf("\n");
-   printf("Usage: %s [OPTION]\n", exec);
-   printf("\n");
-   printf("Options:\n");
-   printf("   -h      display this help and exit\n");
-   printf("   -d      display the list of test cases\n");
-   printf("   -t num  select and run a testcase\n");
-   printf("\n");
-}
-
-static Eina_Bool
-_opts_check(int argc,
-            char **argv,
-            Eina_Bool *all,
-            int *chosen)
-{
-   int tc;
-
-   if (argc == 1) return EINA_TRUE;
-
-   if (!strcmp(argv[1], "-h") ||
-       !strcmp(argv[1], "-help") ||
-       !strcmp(argv[1], "--help"))
-     {
-        goto usage;
-     }
-   else if (!strcmp(argv[1], "-d"))
-     {
-        /* TODO */
-        return EINA_FALSE;
-     }
-   else if (!strcmp(argv[1], "-t"))
-     {
-        if (argc != 3) goto usage;
-        tc = atoi(argv[2]);
-
-        *all = EINA_FALSE;
-        *chosen = tc;
-        return EINA_TRUE;
-     }
-
-usage:
-   _usage(argv[0]);
-
-   return EINA_FALSE;
-}
-
-EAPI_MAIN int
-elm_main(int argc,
-         char **argv)
-{
-   E_Test_Runner *runner = NULL;
-   Eina_Bool r, all = EINA_TRUE;
-   int res, chosen = -1;
-   int ret = -1;
-
-   r = _opts_check(argc, argv, &all, &chosen);
-   if (!r) goto err;
-
-   runner = E_NEW(E_Test_Runner, 1);
-   EINA_SAFETY_ON_NULL_GOTO(runner, err);
-
-   _log_dom = eina_log_domain_register("e-tc", EINA_COLOR_BLUE);
-   EINA_SAFETY_ON_FALSE_GOTO(_log_dom >= 0, err);
-
-   res = eldbus_init();
-   EINA_SAFETY_ON_FALSE_GOTO((res > 0), err);
-
-   runner->dbus.conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
-   EINA_SAFETY_ON_NULL_GOTO(runner->dbus.conn, err);
-
-   runner->dbus.obj = eldbus_object_get(runner->dbus.conn,
-                                        "org.enlightenment.wm",
-                                        "/org/enlightenment/wm");
-   EINA_SAFETY_ON_NULL_GOTO(runner->dbus.obj, err);
-
-   runner->dbus.proxy = eldbus_proxy_get(runner->dbus.obj,
-                                         "org.enlightenment.wm.Test");
-   EINA_SAFETY_ON_NULL_GOTO(runner->dbus.proxy, err);
-
-   _e_test_runner_init(runner, all, chosen);
-   _e_test_runner_run(runner);
-   _e_test_runner_result(runner);
-   _e_test_runner_shutdown(runner);
-
-   eldbus_proxy_unref(runner->dbus.proxy);
-   eldbus_object_unref(runner->dbus.obj);
-   eldbus_connection_unref(runner->dbus.conn);
-   eldbus_shutdown();
-   eina_log_domain_unregister(_log_dom);
-
-   ret = 0;
-
-err:
-   E_FREE(runner);
-   return ret;
-}
-ELM_MAIN()
diff --git a/src/e_test_runner.h b/src/e_test_runner.h
deleted file mode 100644 (file)
index 78e79de..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-#ifndef E_TC_MAIN_H
-#define E_TC_MAIN_H
-
-#include "config.h"
-#include <Eldbus.h>
-#include <Elementary.h>
-#include <Ecore_Wayland.h>
-#include <wayland-client.h>
-#include <tizen-extension-client-protocol.h>
-
-extern int _log_dom;
-
-#ifdef ERR
-# undef ERR
-#endif
-#define ERR(...) EINA_LOG_DOM_ERR(_log_dom, __VA_ARGS__)
-
-#ifdef DBG
-# undef DBG
-#endif
-#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__)
-
-#ifdef INF
-# undef INF
-#endif
-#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__)
-
-#ifdef WRN
-# undef WRN
-#endif
-#define WRN(...) EINA_LOG_DOM_WARN(_log_dom, __VA_ARGS__)
-
-#ifdef CRI
-# undef CRI
-#endif
-#define CRI(...) EINA_LOG_DOM_CRIT(_log_dom, __VA_ARGS__)
-
-#ifdef E_NEW
-# undef E_NEW
-#endif
-# define E_NEW(s, n) (s *)calloc(n, sizeof(s))
-
-#ifdef E_FREE
-# undef E_FREE
-#endif
-# define E_FREE(p) do { free(p); p = NULL; } while (0)
-
-#ifdef E_FREE_LIST
-# undef E_FREE_LIST
-#endif
-# define E_FREE_LIST(list, free)   \
-  do                               \
-    {                              \
-       void *_tmp_;                \
-       EINA_LIST_FREE(list, _tmp_) \
-         {                         \
-            free(_tmp_);           \
-         }                         \
-    }                              \
-  while (0)
-
-typedef enum _E_TC_Event_Type
-{
-   E_TC_EVENT_TYPE_NONE = 0,
-   E_TC_EVENT_TYPE_TIMEOUT,
-   E_TC_EVENT_TYPE_VIS_ON,
-   E_TC_EVENT_TYPE_VIS_OFF,
-   E_TC_EVENT_TYPE_VIS_CHANGED,
-   E_TC_EVENT_TYPE_STACK_RAISE,
-   E_TC_EVENT_TYPE_STACK_LOWER,
-   E_TC_EVENT_TYPE_STACK_ABOVE,
-   E_TC_EVENT_TYPE_STACK_BELOW,
-   E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE,
-   E_TC_EVENT_TYPE_FOCUS_CHANGED,
-   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;
-
-/* NB: These types are originally defined in the enlightenment.
- *     But, we can't use original types in the header files of enlightenment,
- *     because e_test_runner needs to use tizen-extension-client-protocol that
- *     conflicts with tizen-extension-server-protocol enlightenment header had.
- *
- * Duplicated enum types: E_Layer, E_Visibility
- */
-typedef enum _E_Layer
-{
-   E_LAYER_BOTTOM = -100,
-   E_LAYER_BG = -1, // zone bg stuff
-   E_LAYER_DESKTOP = 0, // desktop objects: fileman, gadgets, shelves
-   E_LAYER_DESKTOP_TOP = 10, // raised desktop objects: gadgets
-   E_LAYER_CLIENT_DESKTOP = 100, //shelves
-   E_LAYER_CLIENT_BELOW = 150,
-   E_LAYER_CLIENT_NORMAL = 200,
-   E_LAYER_CLIENT_ABOVE = 250,
-   E_LAYER_CLIENT_EDGE = 300,
-   E_LAYER_CLIENT_FULLSCREEN = 350,
-   E_LAYER_CLIENT_EDGE_FULLSCREEN = 400,
-   E_LAYER_CLIENT_POPUP = 450,
-   E_LAYER_CLIENT_TOP = 500,
-   E_LAYER_CLIENT_DRAG = 550,
-   E_LAYER_CLIENT_PRIO = 600,
-   E_LAYER_CLIENT_NOTIFICATION_LOW = 650,
-   E_LAYER_CLIENT_NOTIFICATION_NORMAL = 700,
-   E_LAYER_CLIENT_NOTIFICATION_HIGH = 750,
-   E_LAYER_CLIENT_NOTIFICATION_TOP = 800,
-   E_LAYER_CLIENT_ALERT_LOW = 850,
-   E_LAYER_CLIENT_ALERT = 900,
-   E_LAYER_CLIENT_ALERT_HIGH = 950,
-   E_LAYER_CLIENT_CURSOR = 990,
-   E_LAYER_POPUP = 999, // popups
-   E_LAYER_EFFECT = 1999,
-   E_LAYER_MENU = 5000, // menus
-   E_LAYER_DESKLOCK = 9999, // desklock
-   E_LAYER_MAX = 32767 // EVAS_LAYER_MAX
-} E_Layer;
-
-typedef enum _E_Visibility
-{
-   E_VISIBILITY_UNKNOWN = -1,
-   E_VISIBILITY_UNOBSCURED = 0,
-   E_VISIBILITY_PARTIALLY_OBSCURED = 1,
-   E_VISIBILITY_FULLY_OBSCURED = 2,
-   E_VISIBILITY_PRE_UNOBSCURED = 3,
-} E_Visibility;
-
-typedef struct _E_Test_Runner E_Test_Runner;
-typedef struct _E_TC_Win      E_TC_Win;
-typedef struct _E_TC          E_TC;
-typedef struct _E_TC_Data     E_TC_Data;
-
-struct _E_Test_Runner
-{
-   Eina_List   *tc_list; // test suite
-
-   struct
-   {
-      Ecore_Timer       *expire_timer;
-      E_TC_Event_Type    expect;
-      E_TC_Event_Type    response;
-   } ev;
-
-   struct
-   {
-      Eldbus_Connection *conn;
-      Eldbus_Proxy      *proxy;
-      Eldbus_Object     *obj;
-   } dbus;
-};
-
-struct _E_TC_Win
-{
-   Evas_Object      *elm_win;    // elm_win evas object
-   Eina_Bool         animating;
-
-   Ecore_Window      native_win; // native window id
-   const char       *name;       // name of client window
-   int               x, y, w, h; // geometry
-   int               rot;
-   E_Layer           layer;
-   Eina_Bool         effect;
-   struct
-     {
-        Eina_Bool    win;
-        Eina_Bool    obj;
-        int          opaque;
-        E_Visibility type;
-        Eina_Bool    skip;
-     } vis;
-   Eina_Bool         iconic;
-   Eina_Bool         alpha;
-   struct
-     {
-        Eina_Bool    win;
-        Eina_Bool    obj;
-     } focus;
-};
-
-struct _E_TC
-{
-   const char    *name;
-   unsigned int   num;
-   Eina_Bool      skip;
-   Eina_Bool      (*func) (E_TC *tc);
-   Eina_Bool      passed;
-   Eina_Bool      expect;
-   E_Test_Runner *runner;
-   E_TC_Data     *data;
-};
-
-Eina_Bool  e_test_runner_req_win_register(E_Test_Runner *runner, E_TC_Win *tw);
-Eina_Bool  e_test_runner_req_win_deregister(E_Test_Runner *runner, E_TC_Win *tw);
-Eina_Bool  e_test_runner_req_win_info_get(E_Test_Runner *runner, E_TC_Win *tw);
-Eina_List *e_test_runner_req_win_info_list_get(E_Test_Runner *runner);
-void       e_test_runner_req_win_info_list_free(Eina_List *l);
-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_req_dpms_on(E_Test_Runner *runner);
-Eina_Bool  e_test_runner_req_dpms_off(E_Test_Runner *runner);
-Eina_Bool  e_test_runner_req_ev_freeze(E_Test_Runner *runner);
-Eina_Bool  e_test_runner_req_ev_thaw(E_Test_Runner *runner);
-Eina_Bool  e_test_runner_req_ev_feed_mouse_down(E_Test_Runner *runner, int x, int y);
-Eina_Bool  e_test_runner_req_ev_feed_mouse_move(E_Test_Runner *runner, int x, int y);
-Eina_Bool  e_test_runner_req_ev_feed_mouse_up(E_Test_Runner *runner, int x, int y);
-Eina_Bool  e_test_runner_req_ev_feed_key_down(E_Test_Runner *runner, const char *key);
-Eina_Bool  e_test_runner_req_ev_feed_key_up(E_Test_Runner *runner, const char *key);
-Eina_Bool  e_test_runner_req_zone_rotation_change(E_Test_Runner *runner, int angle);
-
-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, Eina_Bool usr_geom, int layer, E_TC_Win_Color color);
-E_TC_Win  *e_tc_win_info_add(void);
-void       e_tc_win_del(E_TC_Win *tw);
-void       e_tc_win_geom_update(E_TC_Win *tw);
-void       e_tc_win_show(E_TC_Win *tw);
-void       e_tc_win_hide(E_TC_Win *tw);
-Eina_Bool  e_tc_win_transient_for_set(E_TC_Win *tw_parent, E_TC_Win *tw_child, Eina_Bool set);
-void       e_test_runner_work(void);
-
-/* utils */
-void       e_test_runner_util_win_info_print(E_Test_Runner *runner);
-
-/* test cases */
-Eina_Bool  tc_0000_base_pass(E_TC *tc);
-Eina_Bool  tc_0001_base_fail(E_TC *tc);
-Eina_Bool  tc_0010_introspect(E_TC *tc);
-Eina_Bool  tc_0011_win_register(E_TC *tc);
-
-Eina_Bool  tc_0100_win_show(E_TC *tc);
-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_0161_multi_all_full_wins_basic(E_TC *tc);
-Eina_Bool  tc_0162_multi_all_full_wins_show1(E_TC *tc);
-Eina_Bool  tc_0163_multi_all_full_wins_show2(E_TC *tc);
-Eina_Bool  tc_0164_multi_all_full_wins_show3(E_TC *tc);
-Eina_Bool  tc_0165_multi_all_full_wins_raise1(E_TC *tc);
-Eina_Bool  tc_0166_multi_all_full_wins_raise2(E_TC *tc);
-Eina_Bool  tc_0167_multi_all_full_wins_stack_above1(E_TC *tc);
-Eina_Bool  tc_0168_multi_all_full_wins_stack_above2(E_TC *tc);
-Eina_Bool  tc_0169_multi_all_full_wins_stack_above3(E_TC *tc);
-Eina_Bool  tc_0170_multi_all_full_wins_lower1(E_TC *tc);
-Eina_Bool  tc_0171_multi_all_full_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_0183_multi_full_2wins_show1(E_TC *tc);
-Eina_Bool  tc_0184_multi_full_2wins_show2(E_TC *tc);
-Eina_Bool  tc_0185_multi_full_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);
-Eina_Bool  tc_0203_transient_for_stack_above(E_TC *tc);
-Eina_Bool  tc_0204_transient_for_stack_below(E_TC *tc);
-
-Eina_Bool  tc_0300_notification_level_default(E_TC *tc);
-Eina_Bool  tc_0301_notification_level_medium(E_TC *tc);
-Eina_Bool  tc_0302_notification_level_high(E_TC *tc);
-Eina_Bool  tc_0303_notification_level_top(E_TC *tc);
-Eina_Bool  tc_0304_notification_level_none(E_TC *tc);
-Eina_Bool  tc_0305_notification_level_change(E_TC *tc);
-Eina_Bool  tc_0306_notification_fullsize_level_default(E_TC *tc);
-Eina_Bool  tc_0307_notification_fullsize_level_medium(E_TC *tc);
-Eina_Bool  tc_0308_notification_fullsize_level_high(E_TC *tc);
-Eina_Bool  tc_0309_notification_fullsize_level_top(E_TC *tc);
-Eina_Bool  tc_0310_notification_fullsize_level_none(E_TC *tc);
-Eina_Bool  tc_0311_notification_fullsize_level_change(E_TC *tc);
-
-Eina_Bool  tc_0400_scrsaver_basic(E_TC *tc);
-Eina_Bool  tc_0401_scrsaver_mng_basic(E_TC *tc);
-
-Eina_Bool  tc_0600_focus_basic(E_TC *tc);
-Eina_Bool  tc_0601_focus_lower(E_TC *tc);
-Eina_Bool  tc_0602_focus_raise(E_TC *tc);
-Eina_Bool  tc_0603_focus_destroy(E_TC *tc);
-Eina_Bool  tc_0604_focus_partial_basic(E_TC *tc);
-
-#include "0500_rotation.h"
-
-#endif
diff --git a/src/e_test_util.h b/src/e_test_util.h
new file mode 100644 (file)
index 0000000..793cc96
--- /dev/null
@@ -0,0 +1,153 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef E_TC_MAIN_H
+#define E_TC_MAIN_H
+
+#include "config.h"
+#include "eina_list_ext.h"
+#include <Eldbus.h>
+#include <Elementary.h>
+#include <Ecore_Wayland.h>
+#include <wayland-client.h>
+#include <tizen-extension-client-protocol.h>
+
+int _GetLogDomain();
+
+#ifdef ERR
+# undef ERR
+#endif
+#define ERR(...) EINA_LOG_DOM_ERR(_GetLogDomain(), __VA_ARGS__)
+
+#ifdef DBG
+# undef DBG
+#endif
+#define DBG(...) EINA_LOG_DOM_DBG(_GetLogDomain(), __VA_ARGS__)
+
+#ifdef INF
+# undef INF
+#endif
+#define INF(...) EINA_LOG_DOM_INFO(_GetLogDomain(), __VA_ARGS__)
+
+#ifdef WRN
+# undef WRN
+#endif
+#define WRN(...) EINA_LOG_DOM_WARN(_GetLogDomain(), __VA_ARGS__)
+
+#ifdef CRI
+# undef CRI
+#endif
+#define CRI(...) EINA_LOG_DOM_CRIT(_GetLogDomain(), __VA_ARGS__)
+
+#ifdef E_NEW
+# undef E_NEW
+#endif
+# define E_NEW(s, n) (s *)calloc(n, sizeof(s))
+
+#ifdef E_FREE
+# undef E_FREE
+#endif
+# define E_FREE(p) do { free(p); p = NULL; } while (0)
+
+#ifdef E_FREE_LIST
+# undef E_FREE_LIST
+#endif
+# define E_FREE_LIST(list, free)   \
+  do                               \
+    {                              \
+       void *_tmp_;                \
+       EINA_LIST_FREE(list, _tmp_) \
+         {                         \
+            free(_tmp_);           \
+         }                         \
+    }                              \
+  while (0)
+
+typedef enum _E_TC_Event_Type
+{
+   E_TC_EVENT_TYPE_NONE = 0,
+   E_TC_EVENT_TYPE_TIMEOUT,
+   E_TC_EVENT_TYPE_VIS_ON,
+   E_TC_EVENT_TYPE_VIS_OFF,
+   E_TC_EVENT_TYPE_VIS_CHANGED,
+   E_TC_EVENT_TYPE_STACK_RAISE,
+   E_TC_EVENT_TYPE_STACK_LOWER,
+   E_TC_EVENT_TYPE_STACK_ABOVE,
+   E_TC_EVENT_TYPE_STACK_BELOW,
+   E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE,
+   E_TC_EVENT_TYPE_FOCUS_CHANGED,
+   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;
+
+/* NB: These types are originally defined in the enlightenment.
+ *     But, we can't use original types in the header files of enlightenment,
+ *     because e_test_data needs to use tizen-extension-client-protocol that
+ *     conflicts with tizen-extension-server-protocol enlightenment header had.
+ *
+ * Duplicated enum types: E_Layer, E_Visibility
+ */
+typedef enum _E_Layer
+{
+   E_LAYER_BOTTOM = -100,
+   E_LAYER_BG = -1, // zone bg stuff
+   E_LAYER_DESKTOP = 0, // desktop objects: fileman, gadgets, shelves
+   E_LAYER_DESKTOP_TOP = 10, // raised desktop objects: gadgets
+   E_LAYER_CLIENT_DESKTOP = 100, //shelves
+   E_LAYER_CLIENT_BELOW = 150,
+   E_LAYER_CLIENT_NORMAL = 200,
+   E_LAYER_CLIENT_ABOVE = 250,
+   E_LAYER_CLIENT_EDGE = 300,
+   E_LAYER_CLIENT_FULLSCREEN = 350,
+   E_LAYER_CLIENT_EDGE_FULLSCREEN = 400,
+   E_LAYER_CLIENT_POPUP = 450,
+   E_LAYER_CLIENT_TOP = 500,
+   E_LAYER_CLIENT_DRAG = 550,
+   E_LAYER_CLIENT_PRIO = 600,
+   E_LAYER_CLIENT_NOTIFICATION_LOW = 650,
+   E_LAYER_CLIENT_NOTIFICATION_NORMAL = 700,
+   E_LAYER_CLIENT_NOTIFICATION_HIGH = 750,
+   E_LAYER_CLIENT_NOTIFICATION_TOP = 800,
+   E_LAYER_CLIENT_ALERT_LOW = 850,
+   E_LAYER_CLIENT_ALERT = 900,
+   E_LAYER_CLIENT_ALERT_HIGH = 950,
+   E_LAYER_CLIENT_CURSOR = 990,
+   E_LAYER_POPUP = 999, // popups
+   E_LAYER_EFFECT = 1999,
+   E_LAYER_MENU = 5000, // menus
+   E_LAYER_DESKLOCK = 9999, // desklock
+   E_LAYER_MAX = 32767 // EVAS_LAYER_MAX
+} E_Layer;
+
+typedef enum _E_Visibility
+{
+   E_VISIBILITY_UNKNOWN = -1,
+   E_VISIBILITY_UNOBSCURED = 0,
+   E_VISIBILITY_PARTIALLY_OBSCURED = 1,
+   E_VISIBILITY_FULLY_OBSCURED = 2,
+   E_VISIBILITY_PRE_UNOBSCURED = 3,
+} E_Visibility;
+
+typedef struct _Window_Info_List
+{
+   Eina_List *list;
+   Eina_Bool  retry;
+} Window_Info_List;
+
+#endif // end of E_TC_MAIN_H
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/e_test_win.cpp b/src/e_test_win.cpp
new file mode 100644 (file)
index 0000000..191e6b1
--- /dev/null
@@ -0,0 +1,101 @@
+#include "e_test_win.h"
+
+/**********************
+      class EtWin
+ **********************/
+
+EtWin::EtWin()
+{
+   // nothing to do. you should use initializer with args.
+   this->elm_win = NULL;
+   this->animating = EINA_FALSE;
+   this->native_win = 0;
+}
+
+EtWin::~EtWin()
+{
+   this->DeInit();
+}
+
+Eina_Bool EtWin::Init(EtWin *parent,
+                      Elm_Win_Type type,
+                      Eina_Bool alpha,
+                      const char *name,
+                      int x, int y,
+                      int w, int h,
+                      Eina_Bool usr_geom,
+                      E_Layer layer,
+                      E_TC_Win_Color color)
+{
+   Evas_Object *bg = NULL;
+   int screen_width = 0, screen_height = 0;
+
+   this->parent = parent;
+
+   this->elm_win = elm_win_add(NULL, name, type);
+   EINA_SAFETY_ON_NULL_GOTO(this->elm_win, error);
+
+   if (alpha)
+     elm_win_alpha_set(this->elm_win, EINA_TRUE);
+
+   elm_win_title_set(this->elm_win, name);
+   elm_win_autodel_set(this->elm_win, EINA_FALSE);
+   elm_win_borderless_set(this->elm_win, EINA_TRUE);
+
+   if (usr_geom)
+     elm_win_aux_hint_add(elm_win, "wm.policy.win.user.geometry", "1");
+
+   bg = elm_bg_add(this->elm_win);
+   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_win_resize_object_add(elm_win, bg);
+
+   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, 100, 100, 100); break;
+     }
+   evas_object_show(bg);
+
+   elm_win_screen_size_get(this->elm_win, NULL, NULL, &screen_width, &screen_height);
+
+   goto finish;
+
+error:
+   // TODO:: add error case
+   printf("ERROR OCCURED IN EtWin INITIALIZATION\n");
+   return EINA_FALSE;
+
+finish:
+   // set information
+   this->animating = EINA_FALSE;
+   this->native_win = 0; // TODO:: get Ecore_Window from static get_win_id function
+   this->name = eina_stringshare_add(name);
+   this->x = usr_geom? x : 0;
+   this->y = usr_geom? y : 0;
+   this->w = usr_geom? w : screen_width;
+   this->h = usr_geom? h : screen_height;
+
+   return EINA_TRUE;
+}
+
+void EtWin::DeInit()
+{
+   if (this->elm_win)
+     {
+        evas_object_del(this->elm_win);
+        this->elm_win = NULL;
+     }
+
+   if (this->name)
+     {
+        eina_stringshare_del(name);
+        this->name = NULL;
+     }
+}
diff --git a/src/e_test_win.h b/src/e_test_win.h
new file mode 100644 (file)
index 0000000..2e80d55
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef __ET_WIN_H__
+#define __ET_WIN_H__
+
+#include <Elementary.h>
+
+#include "e_test_util.h"
+
+class EtWin
+{
+ public: // TODO:: Change to private and add getter & setter
+    EtWin             *parent     = NULL;
+    Evas_Object       *elm_win    = NULL;
+    Eina_Bool          animating  = EINA_FALSE;
+    Ecore_Window       native_win = 0;
+    const char        *name       = NULL;
+    int                x = 0, y = 0, w = 0, h = 0;
+    int                rot        = 0;
+    E_Layer            layer      = E_LAYER_CLIENT_NORMAL;
+    Eina_Bool          effect     = EINA_FALSE;
+    struct
+      {
+         Eina_Bool     win         = EINA_FALSE;
+         Eina_Bool     obj         = EINA_FALSE;
+         int           opaque      = 0;
+         E_Visibility  type        = E_VISIBILITY_UNKNOWN;
+         Eina_Bool     skip        = EINA_FALSE;
+      } vis;
+    Eina_Bool          iconic     = EINA_FALSE;
+    Eina_Bool          alpha      = EINA_FALSE;
+    struct
+      {
+         Eina_Bool     win        = EINA_FALSE;
+         Eina_Bool     obj        = EINA_FALSE;
+      } focus;
+
+ public:
+    EtWin();
+    ~EtWin();
+
+    /* methods */
+    Eina_Bool Init(EtWin *parent,
+                   Elm_Win_Type type,
+                   Eina_Bool alpha,
+                   const char *name,
+                   int x, int y, int w, int h,
+                   Eina_Bool usr_geom,
+                   E_Layer layer,
+                   E_TC_Win_Color color);
+    void DeInit();
+    void UpdateGeometry()
+      {
+         EINA_SAFETY_ON_NULL_RETURN(elm_win);
+         evas_object_move(elm_win, x, y);
+         evas_object_resize(elm_win, w, h);
+      }
+    void Show()
+      {
+         EINA_SAFETY_ON_NULL_RETURN(elm_win);
+         evas_object_show(elm_win);
+      }
+    void Hide()
+      {
+         EINA_SAFETY_ON_NULL_RETURN(elm_win);
+         evas_object_hide(elm_win);
+      }
+
+    /* getter&setter */
+    Evas_Object *GetElmWin()
+      {
+         return elm_win;
+      }
+    Ecore_Window GetNativeWin()
+      {
+         return native_win;
+      }
+
+ protected:
+};
+
+#endif // end of __ET_WIN_H__
diff --git a/src/eina_list_ext.h b/src/eina_list_ext.h
new file mode 100644 (file)
index 0000000..216747a
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+   eina_list_ext.h
+
+   This header is extension of EINA_LIST_FOREACH macro function.
+   It provides EINA_LIST_CAST_* macro functions to avoid compile error in g++ compiler.
+
+   USAGE:
+     EINA_LIST_CAST_*(as,you,did, variable type)
+       {
+          for_loop_codes;
+       }
+
+*/
+
+#include <eina_list.h>
+
+#ifndef __EINA_LIST_EXT_H__
+#define __EINA_LIST_EXT_H__
+
+#define EINA_LIST_CAST_FOREACH(list, l, data, caster) \
+  for (l = list,                                      \
+       data = (caster) eina_list_data_get(l);         \
+       l;                                             \
+       l = eina_list_next(l),                         \
+       data = (caster) eina_list_data_get(l))
+
+#define EINA_LIST_CAST_REVERSE_FOREACH(list, l, data, caster) \
+  for (l = eina_list_last(list),                              \
+       data = (caster)eina_list_data_get(l);                  \
+       l;                                                     \
+       l = eina_list_prev(l),                                 \
+       data = (caster)eina_list_data_get(l))
+
+#define EINA_LIST_CAST_REVERSE_FOREACH(list, l, data, caster) \
+  for (l = eina_list_last(list),                              \
+       data = (caster)eina_list_data_get(l);                  \
+       l;                                                     \
+       l = eina_list_prev(l),                                 \
+       data = (caster)eina_list_data_get(l))
+
+#define EINA_LIST_CAST_REVERSE_FOREACH_SAFE(list, l, l_prev, data, caster) \
+  for (l = eina_list_last(list),                                           \
+       l_prev = eina_list_prev(l),                                         \
+       data = (caster)eina_list_data_get(l);                               \
+       l;                                                                  \
+       l = l_prev,                                                         \
+       l_prev = eina_list_prev(l),                                         \
+       data = (caster)eina_list_data_get(l))
+
+#define EINA_LIST_CAST_FREE(list, data, caster)    \
+  for (data = (caster)eina_list_data_get(list);    \
+       list;                                       \
+       list = eina_list_remove_list(list, list),   \
+       data = (caster)eina_list_data_get(list))
+
+#endif
similarity index 62%
rename from src/0000_easy.c
rename to src/testcase/1_easy.cpp
index 8a7600f..8428495 100644 (file)
@@ -1,11 +1,25 @@
-#include "e_test_runner.h"
+#include <gtest/gtest.h>
+#include "e_test_event.h"
+
+#define _WIN_ID 0x123456
+
+using ::testing::Test;
+
+extern EtEventLoop *gLoop;
+
+class TestcaseEasy : public ::testing::Test
+{
+ protected:
+    static void SetUpTestCase() {};
+    static void TearDownTestCase() {};
+};
 
 static void
 _cb_introspect(void *data,
                const Eldbus_Message *msg,
                Eldbus_Pending *pending EINA_UNUSED)
 {
-   E_TC *tc = data;
+   Eina_Bool *result = (Eina_Bool *)data;
    const char *arg, *name = NULL, *text = NULL;
    Eina_Bool res;
 
@@ -37,35 +51,30 @@ _cb_introspect(void *data,
         goto finish;
      }
 
-   tc->passed = EINA_TRUE;
+   *result = EINA_TRUE;
 
 finish:
-   if (!tc->passed) ERR("errname:%s errmsg:%s\n", name, text);
+   if (*result == EINA_FALSE)
+     ERR("errname:%s errmsg:%s\n", name, text);
 
    elm_exit();
 }
 
-#define _WIN_ID 0x123456
-
 static void
 _cb_prop_registrant(void *data,
                     const Eldbus_Message *msg,
                     Eldbus_Pending *p EINA_UNUSED)
 {
-   E_TC *tc = data;
+   Eina_Bool *result = (Eina_Bool *)data;
    const char *name = NULL, *text = NULL;
    Eldbus_Message_Iter *variant = NULL;
    Ecore_Window win;
    Eina_Bool res;
    char *type;
 
-   if (!tc)
-     {
-        elm_exit();
-        return;
-     }
+   EINA_SAFETY_ON_NULL_GOTO(result, finish);
 
-   tc->passed = EINA_FALSE;
+   *result = EINA_FALSE;
 
    res = eldbus_message_error_get(msg, &name, &text);
    EINA_SAFETY_ON_TRUE_GOTO(res, finish);
@@ -82,10 +91,10 @@ _cb_prop_registrant(void *data,
    EINA_SAFETY_ON_FALSE_GOTO(res, finish);
    EINA_SAFETY_ON_FALSE_GOTO((win == _WIN_ID), finish);
 
-   tc->passed = EINA_TRUE;
+   *result = EINA_TRUE;
 
 finish:
-   if (!tc->passed)
+   if (!(*result))
      {
         ERR("errname:%s errmsg:%s\n", name, text);
      }
@@ -93,78 +102,61 @@ finish:
    elm_exit();
 }
 
-Eina_Bool
-tc_0000_base_pass(E_TC *tc)
+TEST_F(TestcaseEasy, base_pass)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+   Eina_Bool result = EINA_TRUE;
 
-   tc->passed = EINA_TRUE;
-
-   return tc->passed;
+   ASSERT_TRUE(result);
 }
 
-Eina_Bool
-tc_0001_base_fail(E_TC *tc)
+TEST_F(TestcaseEasy, base_fail)
 {
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   tc->passed = EINA_FALSE;
+   Eina_Bool result = EINA_FALSE;
 
-   return tc->passed;
+   ASSERT_FALSE(result);
 }
 
-Eina_Bool
-tc_0010_introspect(E_TC *tc)
+TEST_F(TestcaseEasy, introspect)
 {
-   Eldbus_Pending *p;
+   Eina_Bool result = EINA_FALSE;
+   Eldbus_Pending *p = NULL;
+   Eldbus_Object *obj = NULL;
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
+   obj = gLoop->GetEldbusObject();
+   ASSERT_TRUE(obj != NULL);
 
-   p = eldbus_object_introspect(tc->runner->dbus.obj,
+   p = eldbus_object_introspect(obj,
                                 _cb_introspect,
-                                tc);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+                                &result);
+   ASSERT_TRUE(p != NULL);
 
-   elm_run();
+   gLoop->Work();
 
-   return tc->passed;
+   ASSERT_TRUE(result);
 }
 
-Eina_Bool
-tc_0011_win_register(E_TC *tc)
+TEST_F(TestcaseEasy, win_register)
 {
-   Eldbus_Pending *p;
-   Eina_Bool res;
-   E_TC_Win *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eldbus_Pending *p = NULL;
 
-   EINA_SAFETY_ON_NULL_RETURN_VAL(tc, EINA_FALSE);
-
-   tw = e_tc_win_info_add();
-   EINA_SAFETY_ON_NULL_GOTO(tw, finish);
+   EtWin *tw = new EtWin();
+   ASSERT_TRUE(tw != NULL);
 
    tw->native_win = _WIN_ID;
 
-   /* check RegisterWindow method */
-   res = e_test_runner_req_win_register(tc->runner, tw);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+   result = gLoop->RegisterWin(tw);
+   ASSERT_TRUE(result);
 
-   /* check whether registered window id is same */
-   p = eldbus_proxy_property_get(tc->runner->dbus.proxy,
+   p = eldbus_proxy_property_get(gLoop->GetEldbusProxy(),
                                  "Registrant",
                                  _cb_prop_registrant,
-                                 tc);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+                                 &result);
+   ASSERT_TRUE(p != NULL);
 
-   elm_run();
-   EINA_SAFETY_ON_FALSE_RETURN_VAL(tc->passed, EINA_FALSE);
+   gLoop->Work();
+   ASSERT_TRUE(result);
 
-   /* check DeregisterWindow method */
-   res = e_test_runner_req_win_deregister(tc->runner, tw);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-
-   tc->passed = EINA_TRUE;
-
-finish:
-   e_tc_win_del(tw);
-   return tc->passed;
+   result = gLoop->DeregisterWin(tw);
+   ASSERT_TRUE(result);
 }
diff --git a/src/testcase/2_base_operation.cpp b/src/testcase/2_base_operation.cpp
new file mode 100644 (file)
index 0000000..38ce02c
--- /dev/null
@@ -0,0 +1,133 @@
+#include <gtest/gtest.h>
+#include "e_test_event.h"
+
+using ::testing::Test;
+
+extern EtEventLoop *gLoop;
+
+class TestcaseBaseOperation : public ::testing::Test
+{
+ public:
+    TestcaseBaseOperation()
+      {
+      };
+    ~TestcaseBaseOperation()
+      {
+         if (gLoop->HasLastWinInfoList())
+           gLoop->FreeLastWinInfoList();
+
+         if (tw)
+           {
+              gLoop->DeregisterWin(tw);
+              tw->DeInit();
+              delete tw;
+           }
+      };
+
+ protected:
+    EtWin *tw = NULL;
+
+    static void SetUpTestCase()
+      {
+      };
+    static void TearDownTestCase()
+      {
+      };
+
+    Eina_Bool InitTC(Eina_Bool alpha)
+      {
+         Eina_Bool result = EINA_FALSE;
+
+         this->tw = new EtWin();
+         this->tw->Init(NULL,
+                        ELM_WIN_BASIC,
+                        alpha,
+                        "E_Testcase_Window",
+                        0, 0, 320, 320, EINA_FALSE,
+                        E_LAYER_CLIENT_NORMAL,
+                        E_TC_WIN_COLOR_GREEN);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
+         this->tw->native_win = gLoop->GetWinId(this->tw->elm_win);
+
+         result = gLoop->RegisterWin(this->tw);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         this->tw->UpdateGeometry();
+         this->tw->Show();
+
+         gLoop->WaitEvent(E_TC_EVENT_TYPE_VIS_ON);
+
+         return EINA_TRUE;
+      };
+};
+
+TEST_F(TestcaseBaseOperation, win_show)
+{
+   Eina_Bool result = EINA_FALSE;
+
+   result = this->InitTC(EINA_FALSE);
+   ASSERT_TRUE(result);
+}
+
+TEST_F(TestcaseBaseOperation, win_stack)
+{
+   EtWin *tw2 = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+
+   result = this->InitTC(EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw2, EtWin*)
+     {
+        if (tw2->layer > tw->layer) continue;
+        if (tw2->layer < tw->layer) break;
+
+        if (!strncmp(tw2->name, tw->name, strlen(tw2->name)))
+          result = EINA_TRUE;
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_TRUE(result);
+}
+
+TEST_F(TestcaseBaseOperation, alpha_win_show)
+{
+   Eina_Bool result = EINA_FALSE;
+
+   result = this->InitTC(EINA_TRUE);
+   ASSERT_TRUE(result);
+}
+
+TEST_F(TestcaseBaseOperation, alpha_win_stack)
+{
+   EtWin *tw2 = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+
+   result = this->InitTC(EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw2, EtWin*)
+     {
+        if (tw2->layer > tw->layer) continue;
+        if (tw2->layer < tw->layer) break;
+
+        if (!strncmp(tw2->name, tw->name, strlen(tw2->name)))
+          result = EINA_TRUE;
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_TRUE(EINA_TRUE);
+}
+
diff --git a/src/testcase/3_base_operation_multi_wins.cpp b/src/testcase/3_base_operation_multi_wins.cpp
new file mode 100644 (file)
index 0000000..9826ae8
--- /dev/null
@@ -0,0 +1,1606 @@
+#include <gtest/gtest.h>
+#include "e_test_event.h"
+
+using ::testing::Test;
+
+extern EtEventLoop *gLoop;
+
+class TestcaseBaseMulti : public ::testing::Test
+{
+ public:
+    TestcaseBaseMulti()
+      {
+      };
+    ~TestcaseBaseMulti()
+      {
+         if (gLoop->HasLastWinInfoList())
+           gLoop->FreeLastWinInfoList();
+
+         if (tw_register)
+           gLoop->DeregisterWin(tw_register);
+
+         if (tw_red)
+           delete tw_red;
+
+         if (tw_blue)
+           delete tw_blue;
+
+         if (tw_green)
+           delete tw_green;
+      };
+
+ protected:
+    EtWin *tw_red = NULL;
+    EtWin *tw_green = NULL;
+    EtWin *tw_blue = NULL;
+
+    EtWin *tw_register = NULL;
+
+    static void SetUpTestCase()
+      {
+      };
+    static void TearDownTestCase()
+      {
+      };
+
+    Eina_Bool RegisterTCWin(EtWin *tw)
+      {
+         Eina_Bool result = EINA_FALSE;
+
+         EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
+         EINA_SAFETY_ON_TRUE_RETURN_VAL(tw == tw_register, EINA_TRUE);
+
+         if (this->tw_register)
+           {
+              gLoop->DeregisterWin(this->tw_register);
+              this->tw_register = NULL;
+           }
+
+         result = gLoop->RegisterWin(tw);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         this->tw_register = tw;
+
+         return EINA_TRUE;
+      }
+
+    Eina_Bool InitTC(Eina_Bool show_win, Eina_Bool use_geom)
+      {
+         this->tw_red = new EtWin();
+         this->tw_red->Init(NULL,
+                            ELM_WIN_BASIC,
+                            EINA_FALSE,
+                            "EtWin Red",
+                            0, 0, 400, 400, use_geom,
+                            E_LAYER_CLIENT_NORMAL,
+                            E_TC_WIN_COLOR_RED);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(this->tw_red, EINA_FALSE);
+         this->tw_red->native_win = gLoop->GetWinId(this->tw_red->elm_win);
+
+         if (show_win)
+           {
+              this->tw_red->UpdateGeometry();
+              this->tw_red->Show();
+           }
+
+         this->tw_green = new EtWin();
+         this->tw_green->Init(NULL,
+                              ELM_WIN_BASIC,
+                              EINA_FALSE,
+                              "EtWin Green",
+                              50, 50, 400, 400, use_geom,
+                              E_LAYER_CLIENT_NORMAL,
+                              E_TC_WIN_COLOR_GREEN);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(this->tw_green, EINA_FALSE);
+         this->tw_green->native_win = gLoop->GetWinId(this->tw_green->elm_win);
+
+         if (show_win)
+           {
+              this->tw_green->UpdateGeometry();
+              this->tw_green->Show();
+           }
+
+         this->tw_blue = new EtWin();
+         this->tw_blue->Init(NULL,
+                             ELM_WIN_BASIC,
+                             EINA_FALSE,
+                             "EtWin Blue",
+                             100, 100, 400, 400, use_geom,
+                             E_LAYER_CLIENT_NORMAL,
+                             E_TC_WIN_COLOR_BLUE);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(this->tw_blue, EINA_FALSE);
+         this->tw_blue->native_win = gLoop->GetWinId(this->tw_blue->elm_win);
+
+         if (show_win)
+           {
+              this->RegisterTCWin(this->tw_blue);
+
+              this->tw_blue->UpdateGeometry();
+              this->tw_blue->Show();
+
+              gLoop->WaitEvent(E_TC_EVENT_TYPE_VIS_ON);
+           }
+
+         return EINA_TRUE;
+      };
+
+    Eina_Bool ShowTCWin(EtWin *tw)
+      {
+         Eina_Bool result = EINA_FALSE;
+
+         EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
+
+         result = this->RegisterTCWin(tw);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         tw->UpdateGeometry();
+         tw->Show();
+         gLoop->WaitEvent(E_TC_EVENT_TYPE_VIS_ON);
+
+         return EINA_TRUE;
+      }
+};
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_basic)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_show1)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Green -> Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_show2)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Green -> Red -> Blue [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_show3)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Red -> Blue -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_raise1)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // Raise Red
+   gLoop->SetWinStack(tw_red, NULL, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Red -> Blue -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_raise2)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // Raise Green
+   gLoop->SetWinStack(tw_green, NULL, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Green-> Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_stack_above1)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // Raise Red on the Green
+   gLoop->SetWinStack(tw_red, tw_green, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Blue -> Red -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_stack_above2)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // Raise Blue on the Red
+   gLoop->SetWinStack(tw_blue, tw_red, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Green-> Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_stack_above3)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // Raise Red on the Blue
+   gLoop->SetWinStack(tw_red, tw_blue, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Green-> Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_lower1)
+{
+   EtWin *tw = NULL, *tw_above = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // Lower Blue
+   gLoop->SetWinStack(tw_blue, NULL, EINA_FALSE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Green -> Red -> ... -> Blue [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             if (tw->layer < 200)
+               {
+                  ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+                  pass_count++;
+               }
+             else
+               {
+                  tw_above = tw;
+                  continue;
+               }
+          }
+
+        break;
+     }
+
+   // check the tw_above when there is no window under 200 layer
+   if (tw == NULL)
+     {
+        ASSERT_TRUE(tw_above != NULL);
+        ASSERT_EQ(tw_above->native_win, this->tw_blue->native_win);
+        pass_count++;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_wins_lower2)
+{
+   EtWin *tw = NULL, *tw_above = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // Lower Green
+   gLoop->SetWinStack(tw_green, NULL, EINA_FALSE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Blue -> Red -> ... -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             if (tw->layer < 200)
+               {
+                  ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+                  pass_count++;
+               }
+             else
+               {
+                  tw_above = tw;
+                  continue;
+               }
+          }
+
+        break;
+     }
+
+   // check the tw_above when there is no window under 200 layer
+   if (tw == NULL)
+     {
+        ASSERT_TRUE(tw_above != NULL);
+        ASSERT_EQ(tw_above->native_win, this->tw_green->native_win);
+        pass_count++;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_basic)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Blue -> Green -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_show1)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Green -> Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_show2)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Green -> Red -> Blue [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_show3)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Red -> Blue -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_raise1)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // Raise Red
+   gLoop->SetWinStack(tw_red, NULL, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Red -> Blue -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_raise2)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // Raise Green
+   gLoop->SetWinStack(tw_green, NULL, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Green-> Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_stack_above1)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // Raise Red on the Green
+   gLoop->SetWinStack(tw_red, tw_green, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Blue -> Red -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_stack_above2)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // Raise Blue on the Red
+   gLoop->SetWinStack(tw_blue, tw_red, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Green-> Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_stack_above3)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // Raise Red on the Blue
+   gLoop->SetWinStack(tw_red, tw_blue, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Green-> Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_lower1)
+{
+   EtWin *tw = NULL, *tw_above = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // Lower Blue
+   gLoop->SetWinStack(tw_blue, NULL, EINA_FALSE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Green -> Red -> ... -> Blue [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             if (tw->layer < 200)
+               {
+                  ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+                  pass_count++;
+               }
+             else
+               {
+                  tw_above = tw;
+                  continue;
+               }
+          }
+
+        break;
+     }
+
+   // check the tw_above when there is no window under 200 layer
+   if (tw == NULL)
+     {
+        ASSERT_TRUE(tw_above != NULL);
+        ASSERT_EQ(tw_above->native_win, this->tw_blue->native_win);
+        pass_count++;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_all_full_wins_lower2)
+{
+   EtWin *tw = NULL, *tw_above = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // Lower Green
+   gLoop->SetWinStack(tw_green, NULL, EINA_FALSE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   // Expected stack result:
+   // [Top] Blue -> Red -> ... -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             if (tw->layer < 200)
+               {
+                  ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+                  pass_count++;
+               }
+             else
+               {
+                  tw_above = tw;
+                  continue;
+               }
+          }
+
+        break;
+     }
+
+   // check the tw_above when there is no window under 200 layer
+   if (tw == NULL)
+     {
+        ASSERT_TRUE(tw_above != NULL);
+        ASSERT_EQ(tw_above->native_win, this->tw_green->native_win);
+        pass_count++;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_2wins_show1)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Red -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(2, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_2wins_show2)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Green -> Blue [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(2, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_2wins_show3)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(2, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_full_2wins_show1)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Red -> Green [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(2, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_full_2wins_show2)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // show green
+   result = this->ShowTCWin(this->tw_green);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Green -> Blue [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_green->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(2, pass_count);
+}
+
+TEST_F(TestcaseBaseMulti, multi_full_2wins_show3)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE, EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // show red
+   result = this->ShowTCWin(this->tw_red);
+   ASSERT_TRUE(result);
+
+   // show blue
+   result = this->ShowTCWin(this->tw_blue);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] Blue -> Red [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_blue->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_red->native_win);
+             pass_count++;
+          }
+
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(2, pass_count);
+}
diff --git a/src/testcase/4_transient_for.cpp b/src/testcase/4_transient_for.cpp
new file mode 100644 (file)
index 0000000..0b1f4cb
--- /dev/null
@@ -0,0 +1,351 @@
+#include "e_test_event.h"
+
+using ::testing::Test;
+
+extern EtEventLoop *gLoop;
+
+class TestcaseTransientFor : public ::testing::Test
+{
+ public:
+    TestcaseTransientFor()
+      {
+      };
+    ~TestcaseTransientFor()
+      {
+         if (gLoop->HasLastWinInfoList())
+           gLoop->FreeLastWinInfoList();
+
+         if (tw_register)
+           gLoop->DeregisterWin(tw_register);
+
+         if (tw_base)
+           delete tw_base;
+
+         if (tw_parent)
+           delete tw_parent;
+
+         if (tw_child)
+           delete tw_child;
+      };
+
+ protected:
+    EtWin *tw_base = NULL;
+    EtWin *tw_parent = NULL;
+    EtWin *tw_child = NULL;
+
+    EtWin *tw_register = NULL;
+
+    static void SetUpTestCase()
+      {
+      };
+    static void TearDownTestCase()
+      {
+      };
+
+    Eina_Bool RegisterTCWin(EtWin *tw)
+      {
+         Eina_Bool result = EINA_FALSE;
+
+         EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
+
+         if (this->tw_register)
+           {
+              gLoop->DeregisterWin(this->tw_register);
+              this->tw_register = NULL;
+           }
+
+         result = gLoop->RegisterWin(tw);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         this->tw_register = tw;
+
+         return EINA_TRUE;
+      };
+
+    Eina_Bool InitTC()
+      {
+         Eina_Bool result = EINA_FALSE;
+
+         this->tw_parent = new EtWin();
+         this->tw_parent->Init(NULL,
+                               ELM_WIN_BASIC,
+                                        EINA_FALSE,
+                                        "EtWin Parent",
+                                        0, 0, 400, 400, EINA_FALSE,
+                                        E_LAYER_CLIENT_NORMAL,
+                                        E_TC_WIN_COLOR_BLUE);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(this->tw_parent, EINA_FALSE);
+         this->tw_parent->native_win = gLoop->GetWinId(this->tw_parent->elm_win);
+
+         result = this->ShowTCWin(this->tw_parent);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         this->tw_child = new EtWin();
+         this->tw_child->Init(NULL,
+                              ELM_WIN_BASIC,
+                                       EINA_FALSE,
+                                       "EtWin Child",
+                                       0, 0, 320, 320, EINA_FALSE,
+                                       E_LAYER_CLIENT_NORMAL,
+                                       E_TC_WIN_COLOR_RED);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(this->tw_child, EINA_FALSE);
+         this->tw_child->native_win = gLoop->GetWinId(this->tw_child->elm_win);
+
+         result = this->ShowTCWin(this->tw_child);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         this->tw_base = new EtWin();
+         this->tw_base->Init(NULL,ELM_WIN_BASIC,
+                                     EINA_FALSE,
+                                     "EtWin Base",
+                                     200, 200, 500, 500, EINA_FALSE,
+                                     E_LAYER_CLIENT_NORMAL,
+                                     E_TC_WIN_COLOR_RED);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(this->tw_base, EINA_FALSE);
+         this->tw_base->native_win = gLoop->GetWinId(this->tw_base->elm_win);
+
+         result = this->ShowTCWin(this->tw_base);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         // set transient_for
+         result = gLoop->SetWinTransientFor(this->tw_child,
+                                          this->tw_parent,
+                                          EINA_TRUE);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+         // TODO:: have to write this->work()?
+
+         return EINA_TRUE;
+      };
+
+    Eina_Bool ShowTCWin(EtWin *tw)
+      {
+         Eina_Bool result = EINA_FALSE;
+
+         result = this->RegisterTCWin(tw);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         tw->UpdateGeometry();
+         tw->Show();
+         gLoop->WaitEvent(E_TC_EVENT_TYPE_VIS_ON);
+
+         return EINA_TRUE;
+      };
+};
+
+TEST_F(TestcaseTransientFor, transient_for_basic)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC();
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] tw_base -> tw_child -> tw_parent [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_base->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_child->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_parent->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseTransientFor, transient_for_raise)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC();
+   ASSERT_TRUE(result);
+
+   result = this->RegisterTCWin(this->tw_parent);
+   EXPECT_TRUE(result);
+
+   // tw_parent raise
+   result = gLoop->SetWinStack(this->tw_parent, NULL, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] tw_child -> tw_parent -> tw_base [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_child->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_parent->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_base->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseTransientFor, transient_for_lower)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC();
+   ASSERT_TRUE(result);
+
+   result = this->RegisterTCWin(this->tw_parent);
+   EXPECT_TRUE(result);
+
+   // tw_parent raise for prepare lower
+   result = gLoop->SetWinStack(this->tw_parent, NULL, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   ASSERT_TRUE(result);
+
+   // tw_parent lower
+   result = gLoop->SetWinStack(this->tw_parent, NULL, EINA_FALSE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_LOWER);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] tw_base -> ... -> tw_child -> tw_parent [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_base->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             if (tw->native_win != this->tw_child->native_win)
+               continue; // skip for find lower layer
+             ASSERT_EQ(tw->native_win, this->tw_child->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 2)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_parent->native_win);
+             pass_count++;
+          }
+        else
+          {
+             if (tw->layer < 200)
+               break;
+             else
+               // expected stack result is tw_parent is lowest window.
+               // so, it is failed testcase.
+               ASSERT_FALSE(EINA_TRUE);
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseTransientFor, transient_for_above)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   int pass_count = 0;
+
+   result = this->InitTC();
+   ASSERT_TRUE(result);
+
+   result = this->RegisterTCWin(this->tw_parent);
+   EXPECT_TRUE(result);
+
+   // tw_parent raise for prepare lower
+   result = gLoop->SetWinStack(this->tw_parent, this->tw_base, EINA_TRUE);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_ABOVE);
+   ASSERT_TRUE(result);
+
+   // Expected stack result:
+   // [Top] tw_child -> tw_parent -> tw_base [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          continue;
+
+        if (pass_count == 0)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_child->native_win);
+             pass_count++;
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_parent->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_base->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
diff --git a/src/testcase/5_notification.cpp b/src/testcase/5_notification.cpp
new file mode 100644 (file)
index 0000000..ad46d6b
--- /dev/null
@@ -0,0 +1,1181 @@
+#include "e_test_event.h"
+#include <efl_util.h>
+
+using ::testing::Test;
+
+extern EtEventLoop *gLoop;
+
+class TestcaseNotification : public ::testing::Test
+{
+ public:
+    TestcaseNotification()
+      {
+      };
+    ~TestcaseNotification()
+      {
+         if (tw_register)
+           gLoop->DeregisterWin(tw_register);
+
+         if (tw_normal)
+           delete tw_normal;
+
+         if (tw_noti1)
+           delete tw_noti1;
+
+         if (tw_noti2)
+           delete tw_noti2;
+      };
+
+ protected:
+    EtWin *tw_normal = NULL;
+    EtWin *tw_noti1 = NULL;
+    EtWin *tw_noti2 = NULL;
+
+    EtWin *tw_register = NULL;
+
+    Eina_Bool InitTC(Eina_Bool use_geom)
+      {
+         Eina_Bool result = EINA_FALSE;
+         this->tw_normal = new EtWin();
+         this->tw_normal->Init(NULL,
+                               ELM_WIN_BASIC,
+                               EINA_FALSE,
+                               "EtWin Normal",
+                               0, 0, 400, 400, use_geom,
+                               E_LAYER_CLIENT_NORMAL,
+                               E_TC_WIN_COLOR_RED);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(this->tw_normal, EINA_FALSE);
+         this->tw_normal->native_win = gLoop->GetWinId(this->tw_normal->elm_win);
+
+         this->tw_normal->UpdateGeometry();
+         this->tw_normal->Show();
+
+         this->tw_noti1 = new EtWin();
+         this->tw_noti1->Init(NULL,
+                              ELM_WIN_NOTIFICATION,
+                              EINA_FALSE,
+                              "EtWin Noti_1",
+                              100, 100, 400, 400, use_geom,
+                              E_LAYER_CLIENT_NORMAL,
+                              E_TC_WIN_COLOR_GREEN);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(this->tw_noti1, EINA_FALSE);
+         this->tw_noti1->native_win = gLoop->GetWinId(this->tw_noti1->elm_win);
+
+         this->tw_noti1->UpdateGeometry();
+         this->tw_noti1->Show();
+
+         this->tw_noti2 = new EtWin();
+         this->tw_noti2->Init(NULL,
+                              ELM_WIN_NOTIFICATION,
+                              EINA_FALSE,
+                              "EtWin Noti_2",
+                              50, 200, 400, 400, use_geom,
+                              E_LAYER_CLIENT_NORMAL,
+                              E_TC_WIN_COLOR_BLUE);
+         EINA_SAFETY_ON_NULL_RETURN_VAL(this->tw_noti2, EINA_FALSE);
+         this->tw_noti2->native_win = gLoop->GetWinId(this->tw_noti2->elm_win);
+
+         this->tw_noti2->UpdateGeometry();
+         this->tw_noti2->Show();
+
+         // register window
+         result = this->RegisterTCWin(this->tw_normal);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         gLoop->WaitEvent(E_TC_EVENT_TYPE_VIS_ON);
+
+         return EINA_TRUE;
+      };
+
+    Eina_Bool RegisterTCWin(EtWin *tw)
+      {
+         Eina_Bool result = EINA_FALSE;
+         EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE);
+
+         if (this->tw_register)
+           {
+              gLoop->DeregisterWin(this->tw_register);
+              this->tw_register = NULL;
+           }
+
+         result = gLoop->RegisterWin(tw);
+         EINA_SAFETY_ON_FALSE_RETURN_VAL(result, EINA_FALSE);
+
+         this->tw_register = tw;
+
+         return EINA_TRUE;
+      }
+};
+
+TEST_F(TestcaseNotification, notification_level_default)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification layer
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_LOW)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (tw->layer > 200)
+          {
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_level_medium)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification layer
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_NORMAL)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (tw->layer > 200)
+          {
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_level_high)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification layer
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (tw->layer > 200)
+          {
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_level_top)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification layer
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_TOP);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_TOP)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (tw->layer > 200)
+          {
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_level_none)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification high
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
+
+   // set tw_noti2 to notification top
+   result = gLoop->SetWinNotiLevel(this->tw_noti2,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_TOP);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti2);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> ... -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          {
+             // check notification level
+             if (pass_count == 0)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_TOP)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else if (pass_count == 1)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else
+               continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+   pass_count = 0;
+
+   // set tw_noti2 to notification none
+   result = gLoop->SetWinNotiLevel(this->tw_noti2,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_NONE);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti2);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_NONE, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> ... -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             if (tw->layer > 200)
+               continue;
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_level_change)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_TRUE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification default
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT, level);
+
+   // set tw_noti2 to notification medium
+   result = gLoop->SetWinNotiLevel(this->tw_noti2,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti2);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM, level);
+
+   // Expected stack result:
+   // [Top] Noti2 -> Noti1 -> ... -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          {
+             // check notification level
+             if (pass_count == 0)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_NORMAL)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else if (pass_count == 1)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_LOW)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else
+               continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+   pass_count = 0;
+
+   // set tw_noti1 to notification high
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> ... -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          {
+             // check notification level
+             if (pass_count == 0)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else if (pass_count == 1)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_NORMAL)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else
+               continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+   pass_count = 0;
+
+   // set tw_noti2 to notification top
+   result = gLoop->SetWinNotiLevel(this->tw_noti2,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_TOP);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti2);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
+
+   // Expected stack result:
+   // [Top] Noti2 -> Noti1 -> ... -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          {
+             // check notification level
+             if (pass_count == 0)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_TOP)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else if (pass_count == 1)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else
+               continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_fullsize_level_default)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification layer
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_LOW)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (tw->layer > 200)
+          {
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_fullsize_level_medium)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification layer
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_NORMAL)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (tw->layer > 200)
+          {
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_fullsize_level_high)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification layer
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (tw->layer > 200)
+          {
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_fullsize_level_top)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification layer
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_TOP);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_TOP)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (tw->layer > 200)
+          {
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_fullsize_level_none)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification high
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
+
+   // set tw_noti2 to notification top
+   result = gLoop->SetWinNotiLevel(this->tw_noti2,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_TOP);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti2);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> ... -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          {
+             // check notification level
+             if (pass_count == 0)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_TOP)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else if (pass_count == 1)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else
+               continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+   pass_count = 0;
+
+   // set tw_noti2 to notification none
+   result = gLoop->SetWinNotiLevel(this->tw_noti2,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_NONE);
+   EXPECT_TRUE(result);
+
+   // TODO:: add ev_wait for notification level
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+
+   level = gLoop->GetWinNotiLevel(this->tw_noti2);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_NONE, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> ... -> Noti2 -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (pass_count == 0)
+          {
+             if (tw->layer > 200)
+               {
+                  // check notification level
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+               }
+             continue;
+          }
+        else if (pass_count == 1)
+          {
+             if (tw->layer > 200)
+               continue;
+             ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+             pass_count++;
+             continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+
+TEST_F(TestcaseNotification, notification_fullsize_level_change)
+{
+   EtWin *tw = NULL;
+   Eina_Bool result = EINA_FALSE;
+   Eina_List *list = NULL, *l = NULL;
+   efl_util_notification_level_e level = EFL_UTIL_NOTIFICATION_LEVEL_NONE;
+   int pass_count = 0;
+
+   result = this->InitTC(EINA_FALSE);
+   ASSERT_TRUE(result);
+
+   // set tw_noti1 to notification default
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT, level);
+
+   // set tw_noti2 to notification medium
+   result = gLoop->SetWinNotiLevel(this->tw_noti2,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti2);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_MEDIUM, level);
+
+   // Expected stack result:
+   // [Top] Noti2 -> Noti1 -> ... -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          {
+             // check notification level
+             if (pass_count == 0)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_NORMAL)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else if (pass_count == 1)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_LOW)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else
+               continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+   pass_count = 0;
+
+   // set tw_noti1 to notification high
+   result = gLoop->SetWinNotiLevel(this->tw_noti1,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti1);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_HIGH, level);
+
+   // Expected stack result:
+   // [Top] Noti1 -> Noti2 -> ... -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          {
+             // check notification level
+             if (pass_count == 0)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else if (pass_count == 1)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_NORMAL)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else
+               continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+   pass_count = 0;
+
+   // set tw_noti2 to notification top
+   result = gLoop->SetWinNotiLevel(this->tw_noti2,
+                                   EFL_UTIL_NOTIFICATION_LEVEL_TOP);
+   EXPECT_TRUE(result);
+   gLoop->WaitEvent(E_TC_EVENT_TYPE_STACK_RAISE);
+   level = gLoop->GetWinNotiLevel(this->tw_noti2);
+   ASSERT_EQ(EFL_UTIL_NOTIFICATION_LEVEL_TOP, level);
+
+   // Expected stack result:
+   // [Top] Noti2 -> Noti1 -> ... -> Normal [Bottom]
+   list = gLoop->GetWinInfoList();
+   ASSERT_TRUE(list != NULL);
+
+   EINA_LIST_CAST_FOREACH(list, l, tw, EtWin*)
+     {
+        if (tw->layer > 200)
+          {
+             // check notification level
+             if (pass_count == 0)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_TOP)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti2->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else if (pass_count == 1)
+               {
+                  if (tw->layer != E_LAYER_CLIENT_NOTIFICATION_HIGH)
+                    continue;
+                  ASSERT_EQ(tw->native_win, this->tw_noti1->native_win);
+                  pass_count++;
+                  continue;
+               }
+             else
+               continue;
+          }
+        else
+          {
+             ASSERT_EQ(tw->native_win, this->tw_normal->native_win);
+             pass_count++;
+          }
+        break;
+     }
+   gLoop->FreeWinInfoList(list);
+
+   ASSERT_EQ(3, pass_count);
+}
+