std::string testCaseName;
std::string testName;
- void initTC(Eina_Bool show_win);
- void makeTransientBelowChild(etWin **win, etWin *parent, int x, int y, int w, int h, E_TC_Win_Color color, const char *name);
+ void initTC(Eina_Bool show_win, Eina_Bool partial = EINA_TRUE);
+ void makeTransientBelowChild(etWin **win, etWin *parent, int x, int y, int w, int h, E_TC_Win_Color color, const char *name, Eina_Bool partial = EINA_TRUE);
};
void
-etTestTransientForBelow::initTC(Eina_Bool show_win)
+etTestTransientForBelow::initTC(Eina_Bool show_win, Eina_Bool partial)
{
const ::testing::TestInfo *const test_info = ::testing::UnitTest::GetInstance()->current_test_info();
- tw_base = initNormalWin("TCWin_Normal_normal", 0, 0, 480, 800, E_TC_WIN_COLOR_BLACK);
+ if (partial)
+ tw_base = initNormalWin("TCWin_Normal_normal", 0, 0, 480, 800, E_TC_WIN_COLOR_BLACK);
+ else
+ tw_base = initNormalWin("TCWin_Normal_normal", EINA_FALSE, E_TC_WIN_COLOR_BLACK);
if (show_win)
{
showTCWin(tw_base);
}
ASSERT_TRUE(tw_base != NULL) << "failed to initiation window";
- tw_parent = initNormalWin("TCWin_Normal_parent", 50, 50, 300, 300, E_TC_WIN_COLOR_RED);
+ if (partial)
+ tw_parent = initNormalWin("TCWin_Normal_parent", 50, 50, 300, 300, E_TC_WIN_COLOR_RED);
+ else
+ tw_parent = initNormalWin("TCWin_Normal_parent", EINA_FALSE, E_TC_WIN_COLOR_RED);
if (show_win)
{
showTCWin(tw_parent);
}
void
-etTestTransientForBelow::makeTransientBelowChild(etWin **win, etWin *parent, int x, int y, int w, int h, E_TC_Win_Color color, const char *name)
+etTestTransientForBelow::makeTransientBelowChild(etWin **win, etWin *parent, int x, int y, int w, int h, E_TC_Win_Color color, const char *name, Eina_Bool partial)
{
Eina_Bool res;
etWin *temp_win = NULL;
- temp_win = initNormalWin(name, x, y, w, h, color);
+ if (partial)
+ temp_win = initNormalWin(name, x, y, w, h, color);
+ else
+ temp_win = initNormalWin(name, EINA_FALSE, color);
ASSERT_TRUE(temp_win != NULL) << "failed to create window";
res = etRunner::get().setWinTransientForBelow(temp_win, parent, EINA_TRUE);
etRunner::get().work(0.1); // wait for activate done. It does not change stack.
showTCWin(temp_win);
- ASSERT_VIS_ON(temp_win);
+ if (partial)
+ ASSERT_VIS_ON(temp_win);
*win = temp_win;
}
//ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
}
+TEST_F(etTestTransientForBelow, transient_for_below_parent_change_alpha)
+{
+ etWin *tw = NULL;
+ etWin *tw_child = NULL;
+ etWin *tw_child2 = NULL;
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+
+ // init TC window, show=true, geom=false
+ initTC(EINA_TRUE, EINA_FALSE);
+
+ // make below child : user_geo=false
+ makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child", EINA_FALSE);
+ makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2", EINA_FALSE);
+
+ // Expected stack res:
+ // [Top] tw_parent -> tw_child (iconified) -> tw_child2 (iconified) -> tw_base [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_parent->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_child2->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_base->native_win);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(4, pass_count);
+
+
+ // change parent's alpha
+ elm_win_alpha_set(tw_parent->elm_win, EINA_TRUE);
+ etRunner::get().work(0.5);
+
+ // Expected stack res:
+ // [Top] tw_parent -> tw_child (uniconified) -> tw_child2 (iconified) -> tw_base [Bottom]
+ list = etRunner::get().getWinInfoList();
+ ASSERT_TRUE(list != NULL);
+
+ pass_count = 0;
+ EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
+ {
+ if (tw->layer > 200) continue;
+
+ if (pass_count == 0)
+ {
+ ASSERT_EQ(tw->native_win, tw_parent->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_child2->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_base->native_win);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(4, pass_count);
+ //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
+TEST_F(etTestTransientForBelow, transient_for_below_parent_change_alpha2)
+{
+ etWin *tw = NULL;
+ etWin *tw_child = NULL;
+ etWin *tw_child2 = NULL;
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+
+ // init TC window, show=true, geom=false
+ initTC(EINA_TRUE, EINA_FALSE);
+
+ // make below child : user_geo=false
+ makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child", EINA_FALSE);
+ elm_win_alpha_set(tw_child->elm_win, EINA_TRUE);
+ makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2", EINA_FALSE);
+
+ // Expected stack res:
+ // [Top] tw_parent -> tw_child (iconified) -> tw_child2 (iconified) -> tw_base [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_parent->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_child2->native_win);
+ ASSERT_FALSE(tw->Vis.obj);
+ ASSERT_TRUE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_base->native_win);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(4, pass_count);
+
+
+ // change parent's alpha
+ elm_win_alpha_set(tw_parent->elm_win, EINA_TRUE);
+ etRunner::get().work(0.5);
+
+ // Expected stack res:
+ // [Top] tw_parent -> tw_child (uniconified) -> tw_child2 (iconified) -> tw_base [Bottom]
+ list = etRunner::get().getWinInfoList();
+ ASSERT_TRUE(list != NULL);
+
+ pass_count = 0;
+ EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
+ {
+ if (tw->layer > 200) continue;
+
+ if (pass_count == 0)
+ {
+ ASSERT_EQ(tw->native_win, tw_parent->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_child2->native_win);
+ ASSERT_TRUE(tw->Vis.obj);
+ ASSERT_FALSE(tw->iconic.set);
+ ASSERT_FALSE(tw->iconic.by_client);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_base->native_win);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(4, pass_count);
+ //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
TEST_F(etTestTransientForBelow, transient_for_below_parent_lower)
{
etWin *tw = NULL;