ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
}
+
+TEST_F(etTestIconicState, iconify_by_transient_for_basic)
+{
+ etWin *tw = NULL;
+ Eina_List *list = NULL, *l = NULL;
+ Eina_Bool res = EINA_FALSE;
+ int pass_count = 0;
+
+ // init TC window, show=true, geom=true
+ initTC(EINA_TRUE, EINA_TRUE);
+
+ // set transient_for between tw_blue(parent) and tw_red(child)
+ res = etRunner::get().setWinTransientFor(tw_red, tw_blue, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_red, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // set iconify the tw_blue(parent)
+ res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_ICONIFIED_BY_CLIENT(tw_blue);
+
+ // Expected stack res:
+ // [Top] Red(iconified by client) -> Blue(iconified by client) -> Green [Bottom]
+ list = etRunner::get().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, tw_red->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_TRUE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_blue->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_TRUE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_green->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(3, pass_count);
+
+ //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
+TEST_F(etTestIconicState, iconify_by_transient_for_fully_obscured)
+{
+ etWin *tw = NULL;
+ Eina_List *list = NULL, *l = NULL;
+ Eina_Bool res = EINA_FALSE;
+ int pass_count = 0;
+
+ // init TC window, show=true, geom=true
+ initTC(EINA_TRUE, EINA_TRUE);
+
+ // set transient_for between tw_blue(parent) and tw_red(child)
+ res = etRunner::get().setWinTransientFor(tw_red, tw_blue, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_red, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // set iconify the tw_blue(parent)
+ res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_ICONIFIED_BY_CLIENT(tw_blue);
+
+ // maximize and raise tw_green to obscure other windows
+ tw_green->maximize();
+ res = etRunner::get().setWinStack(tw_green, NULL, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_green, E_TC_EVENT_TYPE_STACK_RAISE);
+
+ // Expected stack res:
+ // [Top] Green -> Red(iconified by client) -> Blue(iconified by client) [Bottom]
+ list = etRunner::get().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, tw_green->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_red->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_TRUE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_blue->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_TRUE(tw->iconic.by_client);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(3, pass_count);
+
+ //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
+TEST_F(etTestIconicState, iconify_by_transient_for_unobscured)
+{
+ etWin *tw = NULL;
+ Eina_List *list = NULL, *l = NULL;
+ Eina_Bool res = EINA_FALSE;
+ int pass_count = 0;
+
+ // init TC window, show=true, geom=true
+ initTC(EINA_TRUE, EINA_TRUE);
+
+ // set transient_for between tw_blue(parent) and tw_red(child)
+ res = etRunner::get().setWinTransientFor(tw_red, tw_blue, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_red, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // set iconify the tw_blue(parent)
+ res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_ICONIFIED_BY_CLIENT(tw_blue);
+
+ // maximize and raise tw_green to obscure other windows
+ tw_green->maximize();
+ res = etRunner::get().setWinStack(tw_green, NULL, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_green, E_TC_EVENT_TYPE_STACK_RAISE);
+
+ // Expected stack res:
+ // [Top] Green -> Red(iconified by client) -> Blue(iconified by client) [Bottom]
+ list = etRunner::get().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, tw_green->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_red->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_TRUE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_blue->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_TRUE(tw->iconic.by_client);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(3, pass_count);
+ pass_count = 0;
+
+ // hide tw_green to unobscure other windows
+ hideTCWin(tw_green);
+ ASSERT_EVENT(tw_green, E_TC_EVENT_TYPE_VIS_OFF);
+
+ // Expected stack res:
+ // [Top] Green -> Red(iconified by client) -> Blue(iconified by client) [Bottom]
+ list = etRunner::get().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, tw_green->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_red->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_TRUE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_blue->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_TRUE(tw->iconic.by_client);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(3, pass_count);
+
+ //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}