ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
}
+TEST_F(etTestTransientFor, transient_for_stack_below)
+{
+ etWin *tw = NULL;
+ Eina_Bool res = EINA_FALSE;
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+
+ // init TC window, show=true, geom=true
+ initTC(EINA_TRUE, EINA_TRUE);
+
+ // tw_parent raise for prepare stack below
+ res = etRunner::get().setWinStack(tw_parent, NULL, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_RAISE);
+
+ // set transient_for
+ res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // tw_parent set stack below of tw_base
+ res = etRunner::get().setWinStack(tw_parent, tw_base, EINA_FALSE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // Expected stack res:
+ // [Top] tw_base -> tw_child -> tw_parent [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_base->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_parent->native_win);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(3, pass_count);
+
+ //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}
+
TEST_F(etTestTransientFor, transient_for_layer_change)
{
etWin *tw = NULL;
ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
}
+TEST_F(etTestTransientFor, transient_for_layer_change2)
+{
+ etWin *tw = NULL;
+ Eina_Bool res = EINA_FALSE;
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+ etWin *tw_noti;
+
+ // init TC window, show=true, geom=true
+ initTC(EINA_TRUE, EINA_TRUE);
+
+ // init notification window
+ tw_noti = initNotiWin("TCWin_Noti", EINA_TRUE, EINA_TRUE);
+ showTCWin(tw_noti);
+ ASSERT_VIS_ON(tw_noti);
+
+ // set transient_for tw_noti and tw_parent
+ res = etRunner::get().setWinTransientFor(tw_parent, tw_noti, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // set transient_for tw_parent and tw_child
+ res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // Expected stack res:
+ // [Top] tw_child -> tw_parent -> tw_noti -> ... -> tw_base [Bottom]
+ list = etRunner::get().getWinInfoList();
+ ASSERT_TRUE(list != NULL);
+
+ EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
+ {
+ if (tw->layer == E_LAYER_CLIENT_NOTIFICATION_NORMAL)
+ {
+ if (pass_count == 0)
+ {
+ // check notification level
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_parent->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_noti->native_win);
+ pass_count++;
+ continue;
+ }
+ }
+ else if (tw->layer == E_LAYER_CLIENT_NORMAL)
+ {
+ if (pass_count == 3)
+ {
+ 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(etTestTransientFor, transient_for_layer_revert)
{
etWin *tw = NULL;
ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
}
+TEST_F(etTestTransientFor, transient_for_layer_revert2)
+{
+ etWin *tw = NULL;
+ Eina_Bool res = EINA_FALSE;
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+ etWin *tw_noti;
+
+ // init TC window, show=true, geom=true
+ initTC(EINA_TRUE, EINA_TRUE);
+
+ // init notification window
+ tw_noti = initNotiWin("TCWin_Noti", EINA_TRUE, EINA_TRUE);
+ showTCWin(tw_noti);
+ ASSERT_VIS_ON(tw_noti);
+
+ // set transient_for tw_noti and tw_parent
+ res = etRunner::get().setWinTransientFor(tw_parent, tw_noti, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // set transient_for tw_parent and tw_child
+ res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // Expected stack res:
+ // [Top] tw_child -> tw_parent -> tw_noti -> ... -> tw_base [Bottom]
+ list = etRunner::get().getWinInfoList();
+ ASSERT_TRUE(list != NULL);
+
+ EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
+ {
+ if (tw->layer == E_LAYER_CLIENT_NOTIFICATION_NORMAL)
+ {
+ if (pass_count == 0)
+ {
+ // check notification level
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_parent->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_noti->native_win);
+ pass_count++;
+ continue;
+ }
+ }
+ else if (tw->layer == E_LAYER_CLIENT_NORMAL)
+ {
+ if (pass_count == 3)
+ {
+ ASSERT_EQ(tw->native_win, tw_base->native_win);
+ pass_count++;
+ break;
+ }
+ }
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(4, pass_count);
+ pass_count = 0;
+
+ // unset transient_for of tw_parent
+ res = etRunner::get().setWinTransientFor(tw_parent, nullptr, EINA_FALSE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_CHANGED);
+
+ // Expected stack res:
+ // [Top] tw_noti -> ... -> tw_child -> tw_parent -> tw_base [Bottom]
+ list = etRunner::get().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, tw_noti->native_win);
+ pass_count++;
+ continue;
+ }
+ }
+ else if (tw->layer > 200)
+ {
+ continue;
+ }
+
+ if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_parent->native_win);
+ 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(etTestTransientFor, transient_for_always_on_top_basic)
{
etWin *tw = NULL;
ASSERT_EQ(4, pass_count);
// ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
}
+
+TEST_F(etTestTransientFor, transient_for_child_chain)
+{
+ etWin *tw = NULL;
+ Eina_Bool res = EINA_FALSE;
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+
+ // init TC window, show=true, geom=true
+ initTC(EINA_TRUE, EINA_TRUE);
+
+ // raise tw_parent
+ etRunner::get().setWinStack(tw_parent, NULL, EINA_TRUE);
+ ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_RAISE);
+
+ // set transient_for
+ res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_ABOVE);
+
+ // create tw_child2
+ tw_child2 = initNormalWin("TCWin_Normal_child2", EINA_TRUE);
+ showTCWin(tw_child2);
+ ASSERT_TRUE(tw_child2 != NULL) << "failed to initiation window";
+
+ // set transient_for tw_child2 to tw_child
+ res = etRunner::get().setWinTransientFor(tw_child2, tw_child, EINA_TRUE);
+ ASSERT_TRUE(res);
+
+ etRunner::get().work(0.5);
+
+ // Expected stack res:
+ // [Top] tw_child2 -> tw_child -> tw_parent -> 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_child2->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_parent->native_win);
+ 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(etTestTransientFor, transient_for_child_chain_raise)
+{
+ etWin *tw = NULL;
+ Eina_Bool res = EINA_FALSE;
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+
+ // init TC window, show=true, geom=true
+ initTC(EINA_TRUE, EINA_TRUE);
+
+ // set transient_for
+ res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
+ ASSERT_TRUE(res);
+ etRunner::get().work(0.1); // wait for transient_for done.
+
+ // create tw_child2
+ tw_child2 = initNormalWin("TCWin_Normal_child2", EINA_TRUE);
+ showTCWin(tw_child2);
+ ASSERT_TRUE(tw_child2 != NULL) << "failed to initiation window";
+
+ // set transient_for tw_child2 to tw_child
+ res = etRunner::get().setWinTransientFor(tw_child2, tw_child, EINA_TRUE);
+ ASSERT_TRUE(res);
+ etRunner::get().work(0.1); // wait for transient_for done.
+
+ // raise tw_parent
+ etRunner::get().setWinStack(tw_parent, NULL, EINA_TRUE);
+ ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_RAISE);
+
+ // Expected stack res:
+ // [Top] tw_child2 -> tw_child -> tw_parent -> 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_child2->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_parent->native_win);
+ 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(etTestTransientFor, transient_for_child_chain_lower)
+{
+ etWin *tw = NULL;
+ Eina_Bool res = EINA_FALSE;
+ Eina_List *list = NULL, *l = NULL;
+ int pass_count = 0;
+
+ // init TC window, show=true, geom=true
+ initTC(EINA_TRUE, EINA_TRUE);
+
+ // raise tw_parent
+ etRunner::get().setWinStack(tw_parent, NULL, EINA_TRUE);
+ ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_RAISE);
+
+ // set transient_for
+ res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE);
+ ASSERT_TRUE(res);
+ ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_ABOVE);
+
+ // create tw_child2
+ tw_child2 = initNormalWin("TCWin_Normal_child2", EINA_TRUE);
+ showTCWin(tw_child2);
+ ASSERT_TRUE(tw_child2 != NULL) << "failed to initiation window";
+
+ // set transient_for tw_child2 to tw_child
+ res = etRunner::get().setWinTransientFor(tw_child2, tw_child, EINA_TRUE);
+ ASSERT_TRUE(res);
+ etRunner::get().work(0.1); // wait for transient_for done.
+
+ // lower tw_parent
+ etRunner::get().setWinStack(tw_parent, NULL, EINA_FALSE);
+ ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_LOWER);
+
+ // Expected stack res:
+ // [Top] tw_base -> ... -> tw_child2 -> tw_child -> tw_parent [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_base->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 1)
+ {
+ if (tw->native_win != tw_child2->native_win)
+ continue; // skip for find lower layer
+ ASSERT_EQ(tw->native_win, tw_child2->native_win);
+ pass_count++;
+ continue;
+ }
+ else if (pass_count == 2)
+ {
+ ASSERT_EQ(tw->native_win, tw_child->native_win);
+ pass_count++;
+ continue;
+ }
+ else
+ {
+ ASSERT_EQ(tw->native_win, tw_parent->native_win);
+ pass_count++;
+ }
+
+ break;
+ }
+ etRunner::get().freeWinInfoList(list);
+
+ ASSERT_EQ(4, pass_count);
+
+// ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
+}