From e99484dd872d20aa1fb2b21fdfe3c6e7d27e0476 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Thu, 22 Jul 2021 12:24:31 +0900 Subject: [PATCH 01/16] e_test: add some color values - ORANGE, INDIGO, KHAKI, GRAY Change-Id: I266f480361f0d0bdb18ebdc593daa4b665049ff0 --- src/e_test_util.h | 4 ++++ src/e_test_win.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/e_test_util.h b/src/e_test_util.h index ac5e326..a2fe04d 100644 --- a/src/e_test_util.h +++ b/src/e_test_util.h @@ -103,6 +103,10 @@ typedef enum _E_TC_Win_Color E_TC_WIN_COLOR_YELLOW, E_TC_WIN_COLOR_CYAN, E_TC_WIN_COLOR_PURPLE, + E_TC_WIN_COLOR_ORANGE, + E_TC_WIN_COLOR_INDIGO, + E_TC_WIN_COLOR_KHAKI, + E_TC_WIN_COLOR_GRAY, E_TC_WIN_COLOR_AUTO = 255, } E_TC_Win_Color; diff --git a/src/e_test_win.cpp b/src/e_test_win.cpp index b543e6d..4b852d4 100644 --- a/src/e_test_win.cpp +++ b/src/e_test_win.cpp @@ -58,6 +58,10 @@ etWin::init(etWin *parent, case E_TC_WIN_COLOR_YELLOW: elm_bg_color_set(this->bg.obj, 255, 255, 0); break; case E_TC_WIN_COLOR_CYAN: elm_bg_color_set(this->bg.obj, 0, 255, 255); break; case E_TC_WIN_COLOR_PURPLE: elm_bg_color_set(this->bg.obj, 255, 0, 255); break; + case E_TC_WIN_COLOR_ORANGE: elm_bg_color_set(this->bg.obj, 255, 165, 0); break; + case E_TC_WIN_COLOR_INDIGO: elm_bg_color_set(this->bg.obj, 75, 0, 130); break; + case E_TC_WIN_COLOR_KHAKI: elm_bg_color_set(this->bg.obj, 240, 230, 140); break; + case E_TC_WIN_COLOR_GRAY: elm_bg_color_set(this->bg.obj, 128, 128, 128); break; default: elm_bg_color_set(this->bg.obj, 100, 100, 100); break; } evas_object_show(this->bg.obj); -- 2.7.4 From 20a65a304d1f64539b40e9a687fbb48276cd4937 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Thu, 22 Jul 2021 12:25:40 +0900 Subject: [PATCH 02/16] transient_for_below: add more tests - raise/lower parent on multi parent - raise/lower child on multi parent Change-Id: I23d459d33fd004865c3490ccda6694026bb1ddc1 --- src/testcase/0014_transient_for_below.cpp | 893 ++++++++++++++++++++++++++++++ 1 file changed, 893 insertions(+) diff --git a/src/testcase/0014_transient_for_below.cpp b/src/testcase/0014_transient_for_below.cpp index d63693b..be4c10c 100644 --- a/src/testcase/0014_transient_for_below.cpp +++ b/src/testcase/0014_transient_for_below.cpp @@ -348,3 +348,896 @@ TEST_F(etTestTransientForBelow, transient_for_below_lower2) //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); } +TEST_F(etTestTransientForBelow, transient_for_below_parent_lower) +{ + etWin *tw = NULL; + etWin *tw_child = NULL; + etWin *tw_child2 = NULL; + etWin *tw_above = NULL; + Eina_List *list = NULL, *l = NULL; + int pass_count = 0; + + // init TC window, show=true, geom=true + initTC(EINA_TRUE); + + makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2"); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> tw_child2 -> tw_base [Bottom] + + + ////////////////////////////////////////////////// + // Lower tw_parent + ////////////////////////////////////////////////// + etRunner::get().setWinStack(tw_parent, NULL, EINA_FALSE); + ASSERT_EVENT(tw_parent, E_TC_EVENT_TYPE_STACK_LOWER); + + list = etRunner::get().getWinInfoList(); + ASSERT_TRUE(list != NULL); + + // Expected stack res: + // [Top] tw_base -> ... -> tw_parent -> tw_child -> tw_child2 [Bottom] + + // In this case, + // To check validation of stack order, we have to check the stack from bottom to top + // [Bottom] tw_child2 <- tw_child <- tw_parent <- ... <- tw_base [Top] + + EINA_LIST_CAST_REVERSE_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 + { + if (tw->layer > 200) + { + ASSERT_EQ(tw_above->native_win, tw_base->native_win); + pass_count++; + break; + } + else + tw_above = tw; + } + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(4, pass_count); + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTransientForBelow, transient_for_below_multi_parent) +{ + etWin *tw = NULL; + etWin *tw_child = NULL; + etWin *tw_child2 = NULL; + etWin *tw_child3 = NULL; + + etWin *tw_parent2 = NULL; + etWin *tw_parent2_child = NULL; + etWin *tw_parent2_child2 = NULL; + Eina_List *list = NULL, *l = NULL; + int pass_count = 0; + + // init TC window, show=true, geom=true + initTC(EINA_TRUE); + + makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2"); + makeTransientBelowChild(&tw_child3, tw_parent, 130, 130, 300, 300, E_TC_WIN_COLOR_YELLOW, "TCWin_Normal_child3"); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> tw_child2 -> tw_child3 -> tw_base [Bottom] + + tw_parent2 = initNormalWin("TCWin_Normal_parent2", 0, 300, 400, 400, E_TC_WIN_COLOR_ORANGE); + ASSERT_TRUE(tw_parent2 != NULL) << "failed to initiation window"; + showTCWin(tw_parent2); + ASSERT_VIS_ON(tw_parent2); + + makeTransientBelowChild(&tw_parent2_child, tw_parent2, 20, 320, 400, 400, E_TC_WIN_COLOR_CYAN, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_parent2_child2, tw_parent2, 40, 340, 400, 400, E_TC_WIN_COLOR_INDIGO, "TCWin_Normal_child2"); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_parent -> tw_child -> tw_child2 -> tw_child3 -> 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_parent2->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + ASSERT_EQ(tw->native_win, tw_parent2_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 2) + { + ASSERT_EQ(tw->native_win, tw_parent2_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 3) + { + ASSERT_EQ(tw->native_win, tw_parent->native_win); + pass_count++; + continue; + } + else if (pass_count == 4) + { + ASSERT_EQ(tw->native_win, tw_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 5) + { + ASSERT_EQ(tw->native_win, tw_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 6) + { + ASSERT_EQ(tw->native_win, tw_child3->native_win); + pass_count++; + continue; + } + else + { + ASSERT_EQ(tw->native_win, tw_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(8, pass_count); + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTransientForBelow, transient_for_below_multi_parent_raise_parent) +{ + etWin *tw = NULL; + etWin *tw_child = NULL; + etWin *tw_child2 = NULL; + etWin *tw_child3 = NULL; + + etWin *tw_parent2 = NULL; + etWin *tw_parent2_child = NULL; + etWin *tw_parent2_child2 = NULL; + Eina_List *list = NULL, *l = NULL; + int pass_count = 0; + + // init TC window, show=true, geom=true + initTC(EINA_TRUE); + + makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2"); + makeTransientBelowChild(&tw_child3, tw_parent, 130, 130, 300, 300, E_TC_WIN_COLOR_YELLOW, "TCWin_Normal_child3"); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> tw_child2 -> tw_child3 -> tw_base [Bottom] + + + tw_parent2 = initNormalWin("TCWin_Normal_parent2", 0, 300, 400, 400, E_TC_WIN_COLOR_ORANGE); + ASSERT_TRUE(tw_parent2 != NULL) << "failed to initiation window"; + showTCWin(tw_parent2); + ASSERT_VIS_ON(tw_parent2); + + makeTransientBelowChild(&tw_parent2_child, tw_parent2, 20, 320, 400, 400, E_TC_WIN_COLOR_CYAN, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_parent2_child2, tw_parent2, 40, 340, 400, 400, E_TC_WIN_COLOR_INDIGO, "TCWin_Normal_child2"); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_parent -> tw_child -> tw_child2 -> tw_child3 -> tw_base [Bottom] + + + ////////////////////////////////////////////////// + // 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_parent -> tw_child -> tw_child2 -> tw_child3 -> tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> 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); + 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_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 3) + { + ASSERT_EQ(tw->native_win, tw_child3->native_win); + pass_count++; + continue; + } + else if (pass_count == 4) + { + ASSERT_EQ(tw->native_win, tw_parent2->native_win); + pass_count++; + continue; + } + else if (pass_count == 5) + { + ASSERT_EQ(tw->native_win, tw_parent2_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 6) + { + ASSERT_EQ(tw->native_win, tw_parent2_child2->native_win); + pass_count++; + continue; + } + else + { + ASSERT_EQ(tw->native_win, tw_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(8, pass_count); + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTransientForBelow, transient_for_below_multi_parent_lower_parent) +{ + etWin *tw = NULL; + etWin *tw_child = NULL; + etWin *tw_child2 = NULL; + etWin *tw_child3 = NULL; + + etWin *tw_parent2 = NULL; + etWin *tw_parent2_child = NULL; + etWin *tw_parent2_child2 = NULL; + Eina_List *list = NULL, *l = NULL; + int pass_count = 0; + + // init TC window, show=true, geom=true + initTC(EINA_TRUE); + + makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2"); + makeTransientBelowChild(&tw_child3, tw_parent, 130, 130, 300, 300, E_TC_WIN_COLOR_YELLOW, "TCWin_Normal_child3"); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> tw_child2 -> tw_child3 -> tw_base [Bottom] + + + tw_parent2 = initNormalWin("TCWin_Normal_parent2", 0, 300, 400, 400, E_TC_WIN_COLOR_ORANGE); + ASSERT_TRUE(tw_parent2 != NULL) << "failed to initiation window"; + showTCWin(tw_parent2); + ASSERT_VIS_ON(tw_parent2); + + makeTransientBelowChild(&tw_parent2_child, tw_parent2, 20, 320, 400, 400, E_TC_WIN_COLOR_CYAN, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_parent2_child2, tw_parent2, 40, 340, 400, 400, E_TC_WIN_COLOR_INDIGO, "TCWin_Normal_child2"); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_parent -> tw_child -> tw_child2 -> tw_child3 -> tw_base [Bottom] + + + ////////////////////////////////////////////////// + // Lower tw_parent2 + ////////////////////////////////////////////////// + etRunner::get().setWinStack(tw_parent2, NULL, EINA_FALSE); + ASSERT_EVENT(tw_parent2, E_TC_EVENT_TYPE_STACK_LOWER); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> tw_child2 -> tw_child3 -> tw_base -> ... -> tw_parent2 -> tw_parent2_child -> tw_parent2_child2 [Bottom] + + // In this case, + // To check validation of stack order, we have to check 2 steps. + // First, check window from top to bottom until meet tw_base. + // Second, check window from bottom to top until tw_parent2. + + 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); + 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_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 3) + { + ASSERT_EQ(tw->native_win, tw_child3->native_win); + pass_count++; + continue; + } + else + { + ASSERT_EQ(tw->native_win, tw_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + + // [Bottom] tw_parent2_child2 <- tw_parent2_child <- tw_parent2 <- ... <- tw_base <- tw_child3 <- tw_child2 <- tw_child <- tw_parent [Top] + list = etRunner::get().getWinInfoList(); + ASSERT_TRUE(list != NULL); + EINA_LIST_CAST_REVERSE_FOREACH(list, l, tw, etWin*) + { + if (tw->layer < 200) continue; + + if (pass_count == 5) + { + ASSERT_EQ(tw->native_win, tw_parent2_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 6) + { + ASSERT_EQ(tw->native_win, tw_parent2_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 7) + { + ASSERT_EQ(tw->native_win, tw_parent2->native_win); + pass_count++; + break; + } + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(8, pass_count); + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTransientForBelow, transient_for_below_multi_parent_raise_child) +{ + etWin *tw = NULL; + etWin *tw_child = NULL; + etWin *tw_child2 = NULL; + etWin *tw_child3 = NULL; + + etWin *tw_parent2 = NULL; + etWin *tw_parent2_child = NULL; + etWin *tw_parent2_child2 = NULL; + Eina_List *list = NULL, *l = NULL; + int pass_count = 0; + + // init TC window, show=true, geom=true + initTC(EINA_TRUE); + + makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2"); + makeTransientBelowChild(&tw_child3, tw_parent, 130, 130, 300, 300, E_TC_WIN_COLOR_YELLOW, "TCWin_Normal_child3"); + + tw_parent2 = initNormalWin("TCWin_Normal_parent2", 0, 300, 400, 400, E_TC_WIN_COLOR_ORANGE); + ASSERT_TRUE(tw_parent2 != NULL) << "failed to initiation window"; + showTCWin(tw_parent2); + ASSERT_VIS_ON(tw_parent2); + + makeTransientBelowChild(&tw_parent2_child, tw_parent2, 20, 320, 400, 400, E_TC_WIN_COLOR_CYAN, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_parent2_child2, tw_parent2, 40, 340, 400, 400, E_TC_WIN_COLOR_INDIGO, "TCWin_Normal_child2"); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_parent -> tw_child -> tw_child2 -> tw_child3 -> tw_base [Bottom] + + + ////////////////////////////////////////////////// + // Raise tw_child3 + ////////////////////////////////////////////////// + etRunner::get().setWinStack(tw_child3, NULL, EINA_TRUE); + ASSERT_EVENT(tw_child3, E_TC_EVENT_TYPE_STACK_RAISE); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_parent -> tw_child3 -> tw_child -> tw_child2 -> 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_parent2->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + ASSERT_EQ(tw->native_win, tw_parent2_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 2) + { + ASSERT_EQ(tw->native_win, tw_parent2_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 3) + { + ASSERT_EQ(tw->native_win, tw_parent->native_win); + pass_count++; + continue; + } + else if (pass_count == 4) + { + ASSERT_EQ(tw->native_win, tw_child3->native_win); + pass_count++; + continue; + } + else if (pass_count == 5) + { + ASSERT_EQ(tw->native_win, tw_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 6) + { + ASSERT_EQ(tw->native_win, tw_child2->native_win); + pass_count++; + continue; + } + else + { + ASSERT_EQ(tw->native_win, tw_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(8, pass_count); + + ////////////////////////////////////////////////// + // Raise tw_child3 again + ////////////////////////////////////////////////// + etRunner::get().setWinStack(tw_child3, NULL, EINA_TRUE); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_parent -> tw_child3 -> tw_child -> tw_child2 -> 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_parent2->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + ASSERT_EQ(tw->native_win, tw_parent2_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 2) + { + ASSERT_EQ(tw->native_win, tw_parent2_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 3) + { + ASSERT_EQ(tw->native_win, tw_parent->native_win); + pass_count++; + continue; + } + else if (pass_count == 4) + { + ASSERT_EQ(tw->native_win, tw_child3->native_win); + pass_count++; + continue; + } + else if (pass_count == 5) + { + ASSERT_EQ(tw->native_win, tw_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 6) + { + ASSERT_EQ(tw->native_win, tw_child2->native_win); + pass_count++; + continue; + } + else + { + ASSERT_EQ(tw->native_win, tw_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(8, pass_count); + + + ////////////////////////////////////////////////// + // Raise tw_child + ////////////////////////////////////////////////// + etRunner::get().setWinStack(tw_child, NULL, EINA_TRUE); + ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_RAISE); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_parent -> tw_child -> tw_child3 -> tw_child2 -> 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_parent2->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + ASSERT_EQ(tw->native_win, tw_parent2_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 2) + { + ASSERT_EQ(tw->native_win, tw_parent2_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 3) + { + ASSERT_EQ(tw->native_win, tw_parent->native_win); + pass_count++; + continue; + } + else if (pass_count == 4) + { + ASSERT_EQ(tw->native_win, tw_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 5) + { + ASSERT_EQ(tw->native_win, tw_child3->native_win); + pass_count++; + continue; + } + else if (pass_count == 6) + { + ASSERT_EQ(tw->native_win, tw_child2->native_win); + pass_count++; + continue; + } + else + { + ASSERT_EQ(tw->native_win, tw_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(8, pass_count); + + + ////////////////////////////////////////////////// + // Raise tw_parent2_child2 + ////////////////////////////////////////////////// + etRunner::get().setWinStack(tw_parent2_child2, NULL, EINA_TRUE); + ASSERT_EVENT(tw_parent2_child2, E_TC_EVENT_TYPE_STACK_RAISE); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child2 -> tw_parent2_child -> tw_parent -> tw_child -> tw_child3 -> tw_child2 -> 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_parent2->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + ASSERT_EQ(tw->native_win, tw_parent2_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 2) + { + ASSERT_EQ(tw->native_win, tw_parent2_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 3) + { + ASSERT_EQ(tw->native_win, tw_parent->native_win); + pass_count++; + continue; + } + else if (pass_count == 4) + { + ASSERT_EQ(tw->native_win, tw_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 5) + { + ASSERT_EQ(tw->native_win, tw_child3->native_win); + pass_count++; + continue; + } + else if (pass_count == 6) + { + ASSERT_EQ(tw->native_win, tw_child2->native_win); + pass_count++; + continue; + } + else + { + ASSERT_EQ(tw->native_win, tw_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(8, pass_count); + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTransientForBelow, transient_for_below_multi_parent_raise_child_and_parent) +{ + etWin *tw = NULL; + etWin *tw_child = NULL; + etWin *tw_child2 = NULL; + etWin *tw_child3 = NULL; + + etWin *tw_parent2 = NULL; + etWin *tw_parent2_child = NULL; + etWin *tw_parent2_child2 = NULL; + Eina_List *list = NULL, *l = NULL; + int pass_count = 0; + + // init TC window, show=true, geom=true + initTC(EINA_TRUE); + + makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_child2, tw_parent, 110, 110, 300, 300, E_TC_WIN_COLOR_GREEN, "TCWin_Normal_child2"); + makeTransientBelowChild(&tw_child3, tw_parent, 130, 130, 300, 300, E_TC_WIN_COLOR_YELLOW, "TCWin_Normal_child3"); + + tw_parent2 = initNormalWin("TCWin_Normal_parent2", 0, 300, 400, 400, E_TC_WIN_COLOR_ORANGE); + ASSERT_TRUE(tw_parent2 != NULL) << "failed to initiation window"; + showTCWin(tw_parent2); + ASSERT_VIS_ON(tw_parent2); + + makeTransientBelowChild(&tw_parent2_child, tw_parent2, 20, 320, 400, 400, E_TC_WIN_COLOR_CYAN, "TCWin_Normal_child"); + makeTransientBelowChild(&tw_parent2_child2, tw_parent2, 40, 340, 400, 400, E_TC_WIN_COLOR_INDIGO, "TCWin_Normal_child2"); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_parent -> tw_child -> tw_child2 -> tw_child3 -> tw_base [Bottom] + + + ////////////////////////////////////////////////// + // Raise tw_child3 + ////////////////////////////////////////////////// + etRunner::get().setWinStack(tw_child3, NULL, EINA_TRUE); + ASSERT_EVENT(tw_child3, E_TC_EVENT_TYPE_STACK_RAISE); + + // Expected stack res: + // [Top] tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_parent -> tw_child3 -> tw_child -> tw_child2 -> 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_parent2->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + ASSERT_EQ(tw->native_win, tw_parent2_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 2) + { + ASSERT_EQ(tw->native_win, tw_parent2_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 3) + { + ASSERT_EQ(tw->native_win, tw_parent->native_win); + pass_count++; + continue; + } + else if (pass_count == 4) + { + ASSERT_EQ(tw->native_win, tw_child3->native_win); + pass_count++; + continue; + } + else if (pass_count == 5) + { + ASSERT_EQ(tw->native_win, tw_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 6) + { + ASSERT_EQ(tw->native_win, tw_child2->native_win); + pass_count++; + continue; + } + else + { + ASSERT_EQ(tw->native_win, tw_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(8, pass_count); + + + ////////////////////////////////////////////////// + // 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_parent -> tw_child3 -> tw_child -> tw_child2 -> tw_parent2 -> tw_parent2_child -> tw_parent2_child2 -> tw_base [Bottom] + + pass_count = 0; + 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); + pass_count++; + continue; + } + else if (pass_count == 1) + { + ASSERT_EQ(tw->native_win, tw_child3->native_win); + pass_count++; + continue; + } + else if (pass_count == 2) + { + ASSERT_EQ(tw->native_win, tw_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 3) + { + ASSERT_EQ(tw->native_win, tw_child2->native_win); + pass_count++; + continue; + } + else if (pass_count == 4) + { + ASSERT_EQ(tw->native_win, tw_parent2->native_win); + pass_count++; + continue; + } + else if (pass_count == 5) + { + ASSERT_EQ(tw->native_win, tw_parent2_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 6) + { + ASSERT_EQ(tw->native_win, tw_parent2_child2->native_win); + pass_count++; + continue; + } + else + { + ASSERT_EQ(tw->native_win, tw_base->native_win); + pass_count++; + } + break; + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(8, pass_count); + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} -- 2.7.4 From 48f2750dc33d0241fc86f20e5054c98b1652140a Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Tue, 3 Aug 2021 13:35:43 +0900 Subject: [PATCH 03/16] e_test_win: added set color method Change-Id: Ide5bd6d51fb747d5abdbc8dc955d0f58d24e5d3e --- src/e_test_win.cpp | 27 +++++++++++++++++++++++++++ src/e_test_win.h | 2 ++ 2 files changed, 29 insertions(+) diff --git a/src/e_test_win.cpp b/src/e_test_win.cpp index 4b852d4..d1631c3 100644 --- a/src/e_test_win.cpp +++ b/src/e_test_win.cpp @@ -125,6 +125,33 @@ void etWin::resize(int w, int h) evas_object_resize(elm_win, w, h); } +void etWin::setColor(E_TC_Win_Color color) +{ + switch (color) + { + case E_TC_WIN_COLOR_BLACK: elm_bg_color_set(this->bg.obj, 0, 0, 0); break; + case E_TC_WIN_COLOR_WHITE: elm_bg_color_set(this->bg.obj, 255, 255, 255); break; + case E_TC_WIN_COLOR_RED: elm_bg_color_set(this->bg.obj, 255, 0, 0); break; + case E_TC_WIN_COLOR_GREEN: elm_bg_color_set(this->bg.obj, 0, 255, 0); break; + case E_TC_WIN_COLOR_BLUE: elm_bg_color_set(this->bg.obj, 0, 0, 255); break; + case E_TC_WIN_COLOR_YELLOW: elm_bg_color_set(this->bg.obj, 255, 255, 0); break; + case E_TC_WIN_COLOR_CYAN: elm_bg_color_set(this->bg.obj, 0, 255, 255); break; + case E_TC_WIN_COLOR_PURPLE: elm_bg_color_set(this->bg.obj, 255, 0, 255); break; + case E_TC_WIN_COLOR_ORANGE: elm_bg_color_set(this->bg.obj, 255, 165, 0); break; + case E_TC_WIN_COLOR_INDIGO: elm_bg_color_set(this->bg.obj, 75, 0, 130); break; + case E_TC_WIN_COLOR_KHAKI: elm_bg_color_set(this->bg.obj, 240, 230, 140); break; + case E_TC_WIN_COLOR_GRAY: elm_bg_color_set(this->bg.obj, 128, 128, 128); break; + default: elm_bg_color_set(this->bg.obj, 100, 100, 100); break; + } + evas_object_show(this->bg.obj); +} + +void etWin::setColor(int r, int g, int b) +{ + elm_bg_color_set(this->bg.obj, r, g, b); + evas_object_show(this->bg.obj); +} + static Eina_Bool _cb_timeout(void *data) { int r = 0, g = 0, b = 0; diff --git a/src/e_test_win.h b/src/e_test_win.h index cdeccd2..b4de12a 100644 --- a/src/e_test_win.h +++ b/src/e_test_win.h @@ -74,6 +74,8 @@ public: } void move(int x, int y); void resize(int w, int h); + void setColor(E_TC_Win_Color color); + void setColor(int r, int g, int b); void startBGColor(double time); void stopBGColor(); -- 2.7.4 From 363f0b7aeda117d2b74f01d43f6fc959277126d7 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Tue, 3 Aug 2021 14:14:15 +0900 Subject: [PATCH 04/16] 0013_iconic_state: change color method to setColor from startBGColor using startBGColor to change window's color can cause timing issue of verifyTC. so, use setColor after uniconify request to make buffer commit of window. Change-Id: Ibcd46268fef645cad7e5465f5fdfd1b7154ef4fd --- .../iconify_by_client_uniconify2.png | Bin 5713 -> 5711 bytes .../iconify_by_client_uniconify3.png | Bin 5713 -> 5711 bytes src/testcase/0013_iconic_state.cpp | 42 +++------------------ 3 files changed, 5 insertions(+), 37 deletions(-) diff --git a/data/img/mobile/etTestIconicState/iconify_by_client_uniconify2.png b/data/img/mobile/etTestIconicState/iconify_by_client_uniconify2.png index 487628910782cb2873fecb445e67fa226e552c35..5b4cb9b5885da6e8491434cf2ef1267894ee1036 100644 GIT binary patch delta 84 zcmV-a0IUDeEYB>EHZ256L_t(|obA@34FDkk1VMN~|MjA%;YmnV%;*y*caA*(0Nz^v q=HHta008&1K?3>{vrqxu0TnqO$O{0C(6^lc0000mdKI;Vst05t3#MF0Q* diff --git a/data/img/mobile/etTestIconicState/iconify_by_client_uniconify3.png b/data/img/mobile/etTestIconicState/iconify_by_client_uniconify3.png index 487628910782cb2873fecb445e67fa226e552c35..5b4cb9b5885da6e8491434cf2ef1267894ee1036 100644 GIT binary patch delta 84 zcmV-a0IUDeEYB>EHZ256L_t(|obA@34FDkk1VMN~|MjA%;YmnV%;*y*caA*(0Nz^v q=HHta008&1K?3>{vrqxu0TnqO$O{0C(6^lc0000mdKI;Vst05t3#MF0Q* diff --git a/src/testcase/0013_iconic_state.cpp b/src/testcase/0013_iconic_state.cpp index bd32531..b160a41 100644 --- a/src/testcase/0013_iconic_state.cpp +++ b/src/testcase/0013_iconic_state.cpp @@ -62,17 +62,11 @@ TEST_F(etTestIconicState, iconify_by_client_basic) // init TC window, show=true, geom=false initTC(EINA_TRUE, EINA_FALSE); - // set tw_blue bg color change - tw_blue->startBGColor(0.1); - // Iconify Blue res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE); ASSERT_TRUE(res); ASSERT_ICONIFIED(tw_blue); - // unset tw_blue bg color change - tw_blue->stopBGColor(); - // Expected stack res: // [Top] Blue (iconified) -> Green -> Red [Bottom] list = etRunner::get().getWinInfoList(); @@ -244,9 +238,6 @@ TEST_F(etTestIconicState, iconify_by_client_uniconify) // init TC window, show=true, geom=false initTC(EINA_TRUE, EINA_FALSE); - // set tw_blue bg color change - tw_blue->startBGColor(0.1); - // Iconify Blue res = etRunner::get().setWinIconic(tw_blue, EINA_TRUE); ASSERT_TRUE(res); @@ -255,11 +246,9 @@ TEST_F(etTestIconicState, iconify_by_client_uniconify) // Uniconify Blue res = etRunner::get().setWinIconic(tw_blue, EINA_FALSE); ASSERT_TRUE(res); + tw_blue->setColor(0, 0, 250); // for buffer commit ASSERT_UNICONIFIED(tw_blue); - // unset tw_blue bg color change - tw_blue->stopBGColor(); - // Expected stack res: // [Top] Blue -> Green -> Red [Bottom] list = etRunner::get().getWinInfoList(); @@ -312,9 +301,6 @@ TEST_F(etTestIconicState, iconify_by_client_uniconify2) // init TC window, show=true, geom=false initTC(EINA_TRUE, EINA_FALSE); - // set tw_green bg color change - tw_green->startBGColor(0.1); - // Iconify Green res = etRunner::get().setWinIconic(tw_green, EINA_TRUE); ASSERT_TRUE(res); @@ -322,11 +308,9 @@ TEST_F(etTestIconicState, iconify_by_client_uniconify2) // Uniconify Green res = etRunner::get().setWinIconic(tw_green, EINA_FALSE); ASSERT_TRUE(res); + tw_green->setColor(0, 250, 0); // for buffer commit ASSERT_UNICONIFIED(tw_green); - // unset tw_green bg color change - tw_green->stopBGColor(); - // Expected stack res: // [Top] Green -> Blue -> Red [Bottom] list = etRunner::get().getWinInfoList(); @@ -379,17 +363,12 @@ TEST_F(etTestIconicState, iconify_by_client_uniconify3) // init TC window, show=true, geom=false initTC(EINA_TRUE, EINA_FALSE); - // set tw_green bg color change - tw_green->startBGColor(0.1); - // Uniconify Green res = etRunner::get().setWinIconic(tw_green, EINA_FALSE); ASSERT_TRUE(res); + tw_green->setColor(0, 250, 0); // for buffer commit ASSERT_UNICONIFIED(tw_green); - // unset tw_green bg color change - tw_green->stopBGColor(); - // Expected stack res: // [Top] Green -> Blue -> Red [Bottom] list = etRunner::get().getWinInfoList(); @@ -501,9 +480,6 @@ TEST_F(etTestIconicState, iconify_by_server_uniconify) // init TC window, show=false, geom=false initTC(EINA_FALSE, EINA_FALSE); - // set tw_red bg color change - tw_red->startBGColor(0.1); - // show tw_red res = showTCWin(tw_red); ASSERT_TRUE(res); @@ -521,11 +497,9 @@ TEST_F(etTestIconicState, iconify_by_server_uniconify) elm_win_alpha_set(tw_green->elm_win, EINA_TRUE); // event check tw_red is uniconified + tw_red->setColor(250, 0, 0); // for buffer commit ASSERT_UNICONIFIED(tw_red); - // stop tw_red bg color change - tw_red->stopBGColor(); - // Expected stack res: // [Top] Green (alpha) -> Red [Bottom] list = etRunner::get().getWinInfoList(); @@ -570,20 +544,14 @@ TEST_F(etTestIconicState, iconify_by_server_uniconify2) // init TC window, show=true, geom=false initTC(EINA_TRUE, EINA_FALSE); - // set tw_green bg color change - tw_green->startBGColor(0.1); - // change all window to 32bit colored window elm_win_alpha_set(tw_blue->elm_win, EINA_TRUE); elm_win_alpha_set(tw_green->elm_win, EINA_TRUE); elm_win_alpha_set(tw_red->elm_win, EINA_TRUE); - // event check tw_red is iconified_by_server + // event check tw_red is uniconified_by_server ASSERT_UNICONIFIED(tw_red); - // stop tw_green bg color change - tw_green->stopBGColor(); - // Expected stack res: // [Top] Blue -> Green -> Red [Bottom] list = etRunner::get().getWinInfoList(); -- 2.7.4 From 917c93771cdd3d721d58bd2ca296ec3dc6acb6cd Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Tue, 3 Aug 2021 14:43:11 +0900 Subject: [PATCH 05/16] e_test_win: use setColor to change window's color Change-Id: Ib28cecbab7570d7257160aa4690170a26c38255a --- src/e_test_win.cpp | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/e_test_win.cpp b/src/e_test_win.cpp index d1631c3..55a7ea6 100644 --- a/src/e_test_win.cpp +++ b/src/e_test_win.cpp @@ -47,24 +47,7 @@ etWin::init(etWin *parent, this->bg.obj = elm_bg_add(elm_win); evas_object_size_hint_weight_set(this->bg.obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(elm_win, this->bg.obj); - - switch (color) - { - case E_TC_WIN_COLOR_BLACK: elm_bg_color_set(this->bg.obj, 0, 0, 0); break; - case E_TC_WIN_COLOR_WHITE: elm_bg_color_set(this->bg.obj, 255, 255, 255); break; - case E_TC_WIN_COLOR_RED: elm_bg_color_set(this->bg.obj, 255, 0, 0); break; - case E_TC_WIN_COLOR_GREEN: elm_bg_color_set(this->bg.obj, 0, 255, 0); break; - case E_TC_WIN_COLOR_BLUE: elm_bg_color_set(this->bg.obj, 0, 0, 255); break; - case E_TC_WIN_COLOR_YELLOW: elm_bg_color_set(this->bg.obj, 255, 255, 0); break; - case E_TC_WIN_COLOR_CYAN: elm_bg_color_set(this->bg.obj, 0, 255, 255); break; - case E_TC_WIN_COLOR_PURPLE: elm_bg_color_set(this->bg.obj, 255, 0, 255); break; - case E_TC_WIN_COLOR_ORANGE: elm_bg_color_set(this->bg.obj, 255, 165, 0); break; - case E_TC_WIN_COLOR_INDIGO: elm_bg_color_set(this->bg.obj, 75, 0, 130); break; - case E_TC_WIN_COLOR_KHAKI: elm_bg_color_set(this->bg.obj, 240, 230, 140); break; - case E_TC_WIN_COLOR_GRAY: elm_bg_color_set(this->bg.obj, 128, 128, 128); break; - default: elm_bg_color_set(this->bg.obj, 100, 100, 100); break; - } - evas_object_show(this->bg.obj); + this->setColor(color); elm_win_screen_size_get(elm_win, NULL, NULL, &screen_width, &screen_height); @@ -174,8 +157,7 @@ static Eina_Bool _cb_timeout(void *data) b = (b + 10) % 255; if (!b) b = 10; } - elm_bg_color_set(tw->bg.obj, r, g, b); - evas_object_show(tw->bg.obj); + tw->setColor(r, g, b); return EINA_TRUE; } -- 2.7.4 From 4f42b919a845ba1a1e645e4aacb22de90e665d39 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Tue, 3 Aug 2021 18:44:23 +0900 Subject: [PATCH 06/16] Packaging: update version to 0.6.2 Change-Id: Ie7b0899c41ea6dd42f3f01917612c599765db9ac --- packaging/e-tizen-unittests.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-tizen-unittests.spec b/packaging/e-tizen-unittests.spec index 2efa800..a72d9a5 100644 --- a/packaging/e-tizen-unittests.spec +++ b/packaging/e-tizen-unittests.spec @@ -1,7 +1,7 @@ %define USE_GCOV 0 Name: e-tizen-unittests -Version: 0.6.1 +Version: 0.6.2 Release: 1 Summary: The test case runner for enlightenment URL: http://www.enlightenment.org -- 2.7.4 From d94f5fc72e56c639ab73f5426ea40d9af4d873b3 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Fri, 6 Aug 2021 14:00:10 +0900 Subject: [PATCH 07/16] Rename to etTestTzshScreenSaver from et_TestTzsh Change-Id: I02422f04de2e0651ef04af927e34f1cf738a8f32 --- .../scrsaver_basic.png | Bin .../scrsaver_mng_basic.png | Bin packaging/e-tizen-unittests.spec | 4 ++-- src/Makefile.am | 2 +- .../{0006_tzsh.cpp => 0006_tzsh_screensaver.cpp} | 18 +++++++++--------- 5 files changed, 12 insertions(+), 12 deletions(-) rename data/img/mobile/{etTestTzsh => etTestTzshScreenSaver}/scrsaver_basic.png (100%) rename data/img/mobile/{etTestTzsh => etTestTzshScreenSaver}/scrsaver_mng_basic.png (100%) rename src/testcase/{0006_tzsh.cpp => 0006_tzsh_screensaver.cpp} (93%) diff --git a/data/img/mobile/etTestTzsh/scrsaver_basic.png b/data/img/mobile/etTestTzshScreenSaver/scrsaver_basic.png similarity index 100% rename from data/img/mobile/etTestTzsh/scrsaver_basic.png rename to data/img/mobile/etTestTzshScreenSaver/scrsaver_basic.png diff --git a/data/img/mobile/etTestTzsh/scrsaver_mng_basic.png b/data/img/mobile/etTestTzshScreenSaver/scrsaver_mng_basic.png similarity index 100% rename from data/img/mobile/etTestTzsh/scrsaver_mng_basic.png rename to data/img/mobile/etTestTzshScreenSaver/scrsaver_mng_basic.png diff --git a/packaging/e-tizen-unittests.spec b/packaging/e-tizen-unittests.spec index a72d9a5..c11619d 100644 --- a/packaging/e-tizen-unittests.spec +++ b/packaging/e-tizen-unittests.spec @@ -63,8 +63,8 @@ rm -rf %{buildroot} %__cp -afr data/img/mobile/etTestSplash/*.png %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestSplash/ %__mkdir_p %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestTransientFor/ %__cp -afr data/img/mobile/etTestTransientFor/*.png %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestTransientFor/ -%__mkdir_p %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestTzsh/ -%__cp -afr data/img/mobile/etTestTzsh/*.png %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestTzsh/ +%__mkdir_p %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestTzshScreenSaver/ +%__cp -afr data/img/mobile/etTestTzshScreenSaver/*.png %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestTzshScreenSaver/ %__mkdir_p %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestInput/ %__cp -afr data/img/mobile/etTestInput/*.png %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestInput/ %__mkdir_p %{buildroot}/usr/share/e_tizen_unittests/data/mobile/etTestFocus/ diff --git a/src/Makefile.am b/src/Makefile.am index 5845136..626e597 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -15,7 +15,7 @@ testcase/0002_base_operation.cpp \ testcase/0003_base_operation_multi_wins.cpp \ testcase/0004_transient_for.cpp \ testcase/0005_notification.cpp \ -testcase/0006_tzsh.cpp \ +testcase/0006_tzsh_screensaver.cpp \ testcase/0007_rotation.cpp \ testcase/0008_focus.cpp \ testcase/0009_input.cpp \ diff --git a/src/testcase/0006_tzsh.cpp b/src/testcase/0006_tzsh_screensaver.cpp similarity index 93% rename from src/testcase/0006_tzsh.cpp rename to src/testcase/0006_tzsh_screensaver.cpp index d6a3036..caa53a0 100644 --- a/src/testcase/0006_tzsh.cpp +++ b/src/testcase/0006_tzsh_screensaver.cpp @@ -6,7 +6,7 @@ #define E_TEST_WORK_TIME 3.0 -class etTestTzsh : public ::etTCBase +class etTestTzshScreenSaver : public ::etTCBase { public: Eina_Bool chk_timeout_val_ = EINA_FALSE; @@ -19,7 +19,7 @@ class etTestTzsh : public ::etTCBase tzsh_screensaver_service_h tz_scrsaver = NULL; tzsh_screensaver_manager_service_h tz_scrsaver_mng = NULL; - etTestTzsh() + etTestTzshScreenSaver() { chk_timeout_val_ = EINA_FALSE; chk_ev_state_idle_timeout_ = EINA_FALSE; @@ -27,7 +27,7 @@ class etTestTzsh : public ::etTCBase chk_cb_called_ = 0; }; - ~etTestTzsh() + ~etTestTzshScreenSaver() { if (tz_scrsaver_mng) tzsh_screensaver_manager_service_destroy(tz_scrsaver_mng); if (tz_scrsaver) tzsh_screensaver_service_destroy(tz_scrsaver); @@ -43,7 +43,7 @@ class etTestTzsh : public ::etTCBase }; void -etTestTzsh::initTC() +etTestTzshScreenSaver::initTC() { const ::testing::TestInfo *const test_info = ::testing::UnitTest::GetInstance()->current_test_info(); @@ -62,7 +62,7 @@ _cb_state_change(void *data, tzsh_screensaver_manager_service_h service, int states) { - etTestTzsh *tc_data = (etTestTzsh *)data; + etTestTzshScreenSaver *tc_data = (etTestTzshScreenSaver *)data; unsigned int time; tc_data->chk_cb_called_++; @@ -102,7 +102,7 @@ _cb_state_change(void *data, } /* Name: - * etTestTzsh.scrsaver_basic + * etTestTzshScreenSaver.scrsaver_basic * Description: * Check screensaver type window that is shown on the notification layer. * Steps: @@ -113,7 +113,7 @@ _cb_state_change(void *data, * Expected results: * A window is shown on the notification layer. */ -TEST_F(etTestTzsh, scrsaver_basic) +TEST_F(etTestTzshScreenSaver, scrsaver_basic) { Eina_List *list = NULL, *l = NULL; etWin *tw = NULL; @@ -161,7 +161,7 @@ TEST_F(etTestTzsh, scrsaver_basic) } /* Name: - * etTestTzsh.Screensaver_manager_basic + * etTestTzshScreenSaver.Screensaver_manager_basic * Description: * Check screensaver manager APIs and 'state changed' callback * Steps: @@ -176,7 +176,7 @@ TEST_F(etTestTzsh, scrsaver_basic) * TZSH_SCREENSAVER_MANAGER_SERVICE_STATE_IDLE_TIMEOUT_EXPIRED event occurs. * TZSH_SCREENSAVER_MANAGER_SERVICE_STATE_NOT_IDLE event occurs. */ -TEST_F(etTestTzsh, scrsaver_mng_basic) +TEST_F(etTestTzshScreenSaver, scrsaver_mng_basic) { Eina_Bool res = EINA_FALSE; -- 2.7.4 From 0a856f29ec15b4dc2b0c58bd101eaada10944f60 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Mon, 9 Aug 2021 18:10:40 +0900 Subject: [PATCH 08/16] refactoring etTCBase class - rename method : deleteTCWin() -> deinitWin() - add code removing etWin from tw_list in deinitWin() Change-Id: Ibc95b8e3c49a661e1544d6c3a99448150a5c17a9 --- src/e_test_base.cpp | 26 ++++++++++++++------------ src/e_test_base.h | 2 +- src/testcase/0008_focus.cpp | 2 +- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/e_test_base.cpp b/src/e_test_base.cpp index f03e84f..efd73e8 100644 --- a/src/e_test_base.cpp +++ b/src/e_test_base.cpp @@ -145,6 +145,20 @@ etTCBase::initNotiWin(const char *name, Eina_Bool set_noti_level_normal, int x, } Eina_Bool +etTCBase::deinitWin(etWin *tw) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(tw->elm_win, EINA_FALSE); + + tw_list = eina_list_remove(tw_list, tw); + + deregisterTCWin(tw); + delete tw; + + return EINA_TRUE; +} + +Eina_Bool etTCBase::registerTCWin(etWin *tw) { Eina_Bool res = EINA_FALSE; @@ -209,15 +223,3 @@ etTCBase::hideTCWin(etWin *tw) return EINA_TRUE; } - -Eina_Bool -etTCBase::deleteTCWin(etWin *tw) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE); - EINA_SAFETY_ON_NULL_RETURN_VAL(tw->elm_win, EINA_FALSE); - - tw->deInit(); - deregisterTCWin(tw); - - return EINA_TRUE; -} diff --git a/src/e_test_base.h b/src/e_test_base.h index 00264ab..48c94ad 100644 --- a/src/e_test_base.h +++ b/src/e_test_base.h @@ -17,13 +17,13 @@ class etTCBase : public ::testing::Test etWin *initNormalWin(const char *name, int x, int y, int w, int h, E_TC_Win_Color color = E_TC_WIN_COLOR_AUTO); etWin *initNotiWin(const char *name, Eina_Bool usr_geom, Eina_Bool set_noti_level_normal, E_TC_Win_Color color = E_TC_WIN_COLOR_AUTO); etWin *initNotiWin(const char *name, Eina_Bool set_noti_level_normal, int x, int y, int w, int h, E_TC_Win_Color color = E_TC_WIN_COLOR_AUTO); + Eina_Bool deinitWin(etWin *tw); Eina_Bool registerTCWin(etWin *tw); Eina_Bool deregisterTCWin(etWin *tw); Eina_Bool showTCWin(etWin *tw); Eina_Bool showActivateTCWin(etWin *tw); Eina_Bool hideTCWin(etWin *tw); - Eina_Bool deleteTCWin(etWin *tw); protected: std::shared_ptr ev_result; diff --git a/src/testcase/0008_focus.cpp b/src/testcase/0008_focus.cpp index 6bea2bb..09f4b62 100644 --- a/src/testcase/0008_focus.cpp +++ b/src/testcase/0008_focus.cpp @@ -1758,7 +1758,7 @@ TEST_F(etTestFocus, focus_fullsize_alpha_visible_by_above_del) elm_win_alpha_set(tw_green->elm_win, EINA_TRUE); // delete tw_blue - deleteTCWin(tw_blue); + deinitWin(tw_blue); ASSERT_VIS_ON(tw_green); // Expected focus res: -- 2.7.4 From 8d3bf3a752899bf7114a0b9d7129f9fd3962b1b9 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Fri, 13 Aug 2021 08:35:42 +0900 Subject: [PATCH 09/16] add tzsh_quickpanel test Change-Id: Ie996c92b0191bf385640c72f86b03894dc86fd3f --- configure.ac | 2 + packaging/e-tizen-unittests.spec | 2 + src/Makefile.am | 3 +- src/testcase/0015_tzsh_quickpanel.cpp | 351 ++++++++++++++++++++++++++++++++++ 4 files changed, 357 insertions(+), 1 deletion(-) create mode 100644 src/testcase/0015_tzsh_quickpanel.cpp diff --git a/configure.ac b/configure.ac index e9db6ce..36b9b52 100644 --- a/configure.ac +++ b/configure.ac @@ -35,6 +35,8 @@ requirements="\ tizen-launch-client \ tzsh-screensaver-manager-service \ tzsh-screensaver-service \ + tzsh-quickpanel \ + tzsh-quickpanel-service \ cairo \ pixman-1 \ " diff --git a/packaging/e-tizen-unittests.spec b/packaging/e-tizen-unittests.spec index c11619d..991d3f5 100644 --- a/packaging/e-tizen-unittests.spec +++ b/packaging/e-tizen-unittests.spec @@ -20,6 +20,8 @@ BuildRequires: pkgconfig(tizen-extension-client) BuildRequires: pkgconfig(tizen-launch-client) BuildRequires: pkgconfig(tzsh-screensaver-manager-service) BuildRequires: pkgconfig(tzsh-screensaver-service) +BuildRequires: pkgconfig(tzsh-quickpanel-service) +BuildRequires: pkgconfig(tzsh-quickpanel) BuildRequires: gtest-devel BuildRequires: pkgconfig(edje) BuildRequires: edje-tools diff --git a/src/Makefile.am b/src/Makefile.am index 626e597..5f81b3c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -23,7 +23,8 @@ testcase/0010_splash.cpp \ testcase/0011_effect.cpp \ testcase/0012_aux_hint.cpp \ testcase/0013_iconic_state.cpp \ -testcase/0014_transient_for_below.cpp +testcase/0014_transient_for_below.cpp \ +testcase/0015_tzsh_quickpanel.cpp e_tizen_unittests_SOURCES = \ e_test_main.cpp \ diff --git a/src/testcase/0015_tzsh_quickpanel.cpp b/src/testcase/0015_tzsh_quickpanel.cpp new file mode 100644 index 0000000..f164a5d --- /dev/null +++ b/src/testcase/0015_tzsh_quickpanel.cpp @@ -0,0 +1,351 @@ +#include "e_test_event.h" +#include "e_test_base.h" + +#include +#include + +class etTestTzshQuickpanel : public ::etTCBase +{ + public: + tzsh_h tzsh = NULL; + tzsh_window tz_win = 0x0; + tzsh_quickpanel_h tz_qp_client = NULL; + + tzsh_window tz_win2 = 0x0; + tzsh_quickpanel_h tz_qp_client2 = NULL; + + tzsh_quickpanel_event_handler_h event_handler; + tzsh_quickpanel_state_visible_e event_vis_state; + + etTestTzshQuickpanel() {}; + ~etTestTzshQuickpanel() {}; + + protected: + virtual void SetUp() + { + const ::testing::TestInfo *const test_info = ::testing::UnitTest::GetInstance()->current_test_info(); + + tw_base = initNormalWin("TCWin_Normal_base", EINA_FALSE); + + testCaseName = test_info->test_case_name(); + testName = test_info->name(); + }; + + virtual void TearDown() + { + if (tz_qp_client) + { + tzsh_quickpanel_destroy(tz_qp_client); + tz_qp_client = NULL; + } + + if (tz_qp_client2) + { + tzsh_quickpanel_destroy(tz_qp_client2); + tz_qp_client2 = NULL; + } + + if (tzsh) + { + tzsh_destroy(tzsh); + tzsh = NULL; + } + + if (tw_base) + { + deinitWin(tw_base); + tw_base = NULL; + } + + if (tw_base2) + { + deinitWin(tw_base2); + tw_base2 = NULL; + } + }; + + protected: + etWin *tw_base = NULL; + etWin *tw_base2 = NULL; + std::string testCaseName; + std::string testName; + + void checkInitTC(); +}; + +void +etTestTzshQuickpanel::checkInitTC() +{ + ASSERT_TRUE(tw_base != NULL) << "failed to Setup window"; +} + +/****************** + callbacks + *******************/ +static void +_cb_vis_changed(int type, tzsh_quickpanel_event_info_h ev_info, void *data) +{ + etTestTzshQuickpanel *tc_data = (etTestTzshQuickpanel *)data; + + if (type != TZSH_QUICKPANEL_EVENT_VISIBLE) + return; + + tzsh_quickpanel_event_visible_get(ev_info, &tc_data->event_vis_state); +} + +TEST_F(etTestTzshQuickpanel, quickpanel_basic) +{ + Eina_List *list = NULL, *l = NULL; + etWin *tw = NULL; + int pass_count = 0; + + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + showTCWin(tw_base); + ASSERT_VIS_ON(tw_base); + + 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++; + + // check visibility + ASSERT_TRUE(tw->Vis.win); + ASSERT_TRUE(tw->Vis.obj); + ASSERT_EQ(E_VISIBILITY_UNOBSCURED, tw->Vis.type); + + // check focus + ASSERT_TRUE(tw->Focus.obj); + ASSERT_TRUE(tw->Focus.win); + + break; + } + } + + etRunner::get().freeWinInfoList(list); + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTzshQuickpanel, quickpanel_show_hide) +{ + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + showTCWin(tw_base); + ASSERT_VIS_ON(tw_base); + + int ret = -1; + ret = tzsh_quickpanel_show(tz_qp_client); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + etRunner::get().work(2.0); + + tzsh_quickpanel_state_visible_e visible = TZSH_QUICKPANEL_STATE_VISIBLE_UNKNOWN; + ret = tzsh_quickpanel_visible_get(tz_qp_client, &visible); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_SHOWN); + + ret = tzsh_quickpanel_hide(tz_qp_client); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + etRunner::get().work(2.0); + + ret = tzsh_quickpanel_visible_get(tz_qp_client, &visible); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_HIDDEN); + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTzshQuickpanel, quickpanel_scrollable_state) +{ + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + showTCWin(tw_base); + ASSERT_VIS_ON(tw_base); + + int ret = -1; + + // DISABLE Scrolling Quickpanel + ret = tzsh_quickpanel_scrollable_state_set(tz_qp_client, TZSH_QUICKPANEL_STATE_SCROLLABLE_UNSET); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + ret = tzsh_quickpanel_show(tz_qp_client); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + etRunner::get().work(2.0); + + tzsh_quickpanel_state_visible_e visible = TZSH_QUICKPANEL_STATE_VISIBLE_UNKNOWN; + ret = tzsh_quickpanel_visible_get(tz_qp_client, &visible); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_HIDDEN); + + tzsh_quickpanel_state_scrollable_e scrollable_state; + ret = tzsh_quickpanel_scrollable_state_get(tz_qp_client, &scrollable_state); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + ASSERT_EQ(scrollable_state, TZSH_QUICKPANEL_STATE_SCROLLABLE_UNSET); + + // Enable Scrolling Quickpanel + ret = tzsh_quickpanel_scrollable_state_set(tz_qp_client, TZSH_QUICKPANEL_STATE_SCROLLABLE_SET); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + ret = tzsh_quickpanel_show(tz_qp_client); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + etRunner::get().work(2.0); + + ret = tzsh_quickpanel_visible_get(tz_qp_client, &visible); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_SHOWN); + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTzshQuickpanel, quickpanel_scrollable_retain) +{ + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + showTCWin(tw_base); + ASSERT_VIS_ON(tw_base); + + int ret = -1; + // DISABLE Scrolling Quickpanel + ret = tzsh_quickpanel_scrollable_state_set(tz_qp_client, TZSH_QUICKPANEL_STATE_SCROLLABLE_UNSET); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + tw_base2 = initNormalWin("TCWin_Normal_base2", EINA_FALSE); + + tz_win2 = elm_win_window_id_get(tw_base2->elm_win); + ASSERT_NE(0, tz_win2); + + tz_qp_client2 = tzsh_quickpanel_create_with_type(tzsh, tz_win2, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client2 != NULL); + + showTCWin(tw_base2); + ASSERT_VIS_ON(tw_base2); + + // Set scroll RETAIN mode + ret = tzsh_quickpanel_scrollable_state_set(tz_qp_client2, TZSH_QUICKPANEL_STATE_SCROLLABLE_RETAIN); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + ret = tzsh_quickpanel_show(tz_qp_client2); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + etRunner::get().work(2.0); + + tzsh_quickpanel_state_scrollable_e scrollable_state; + ret = tzsh_quickpanel_scrollable_state_get(tz_qp_client2, &scrollable_state); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + ASSERT_EQ(scrollable_state, TZSH_QUICKPANEL_STATE_SCROLLABLE_RETAIN); + + tzsh_quickpanel_state_visible_e visible = TZSH_QUICKPANEL_STATE_VISIBLE_UNKNOWN; + ret = tzsh_quickpanel_visible_get(tz_qp_client2, &visible); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_HIDDEN); + + ret = tzsh_quickpanel_scrollable_state_set(tz_qp_client2, TZSH_QUICKPANEL_STATE_SCROLLABLE_SET); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + ret = tzsh_quickpanel_show(tz_qp_client2); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + etRunner::get().work(2.0); + + ret = tzsh_quickpanel_scrollable_state_get(tz_qp_client2, &scrollable_state); + ASSERT_EQ(scrollable_state, TZSH_QUICKPANEL_STATE_SCROLLABLE_SET); + + ret = tzsh_quickpanel_visible_get(tz_qp_client2, &visible); + ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_SHOWN); + + tzsh_quickpanel_hide(tz_qp_client2); + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTzshQuickpanel, quickpanel_event_handler) +{ + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + showTCWin(tw_base); + ASSERT_VIS_ON(tw_base); + + event_handler = tzsh_quickpanel_event_handler_add(tz_qp_client, TZSH_QUICKPANEL_EVENT_VISIBLE, _cb_vis_changed, this); + ASSERT_TRUE(event_handler != NULL); + + int ret; + ret = tzsh_quickpanel_show(tz_qp_client); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + etRunner::get().work(2.0); + + tzsh_quickpanel_state_visible_e visible = TZSH_QUICKPANEL_STATE_VISIBLE_UNKNOWN; + ret = tzsh_quickpanel_visible_get(tz_qp_client, &visible); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_SHOWN); + ASSERT_EQ(event_vis_state, TZSH_QUICKPANEL_STATE_VISIBLE_SHOWN); + + ret = tzsh_quickpanel_hide(tz_qp_client); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + etRunner::get().work(2.0); + + ret = tzsh_quickpanel_visible_get(tz_qp_client, &visible); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_HIDDEN); + ASSERT_EQ(event_vis_state, TZSH_QUICKPANEL_STATE_VISIBLE_HIDDEN); + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + -- 2.7.4 From 45bd01c36fdd766ca8c57e7f2bf6754f0797ac30 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Tue, 17 Aug 2021 10:17:22 +0900 Subject: [PATCH 10/16] tzsh_quickpanel: add more tests Change-Id: Ifd1b6b4254d39ef7aa06471734190543abaccc43 --- src/testcase/0015_tzsh_quickpanel.cpp | 159 ++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) diff --git a/src/testcase/0015_tzsh_quickpanel.cpp b/src/testcase/0015_tzsh_quickpanel.cpp index f164a5d..4e03473 100644 --- a/src/testcase/0015_tzsh_quickpanel.cpp +++ b/src/testcase/0015_tzsh_quickpanel.cpp @@ -13,6 +13,7 @@ class etTestTzshQuickpanel : public ::etTCBase tzsh_window tz_win2 = 0x0; tzsh_quickpanel_h tz_qp_client2 = NULL; + tzsh_quickpanel_h tz_qp_client3 = NULL; tzsh_quickpanel_event_handler_h event_handler; tzsh_quickpanel_state_visible_e event_vis_state; @@ -45,6 +46,12 @@ class etTestTzshQuickpanel : public ::etTCBase tz_qp_client2 = NULL; } + if (tz_qp_client3) + { + tzsh_quickpanel_destroy(tz_qp_client3); + tz_qp_client3 = NULL; + } + if (tzsh) { tzsh_destroy(tzsh); @@ -143,6 +150,28 @@ TEST_F(etTestTzshQuickpanel, quickpanel_basic) //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); } +TEST_F(etTestTzshQuickpanel, quickpanel_destroy) +{ + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + etRunner::get().work(0.2); + + int ret = tzsh_quickpanel_destroy(tz_qp_client); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + tz_qp_client = NULL; + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + TEST_F(etTestTzshQuickpanel, quickpanel_show_hide) { checkInitTC(); @@ -349,3 +378,133 @@ TEST_F(etTestTzshQuickpanel, quickpanel_event_handler) //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); } +TEST_F(etTestTzshQuickpanel, quickpanel_default_and_apps_menu) +{ + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + showTCWin(tw_base); + ASSERT_VIS_ON(tw_base); + + tz_qp_client2 = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_APPS_MENU); + ASSERT_TRUE(tz_qp_client2 != NULL); + + int ret; + ret = tzsh_quickpanel_show(tz_qp_client2); + ASSERT_TRUE(ret == TZSH_ERROR_NO_SERVICE); + + etRunner::get().work(2.0); + + ret = tzsh_quickpanel_show(tz_qp_client); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + etRunner::get().work(2.0); + + ret = tzsh_quickpanel_hide(tz_qp_client); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTzshQuickpanel, quickpanel_default_and_apps_menu_tzsh_destroy) +{ + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + showTCWin(tw_base); + ASSERT_VIS_ON(tw_base); + + tz_qp_client2 = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_APPS_MENU); + ASSERT_TRUE(tz_qp_client2 != NULL); + + etRunner::get().work(0.5); + + int ret = tzsh_destroy(tzsh); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + tzsh = NULL; + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTzshQuickpanel, quickpanel_all_panels_tzsh_destroy) +{ + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + tz_qp_client2 = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_APPS_MENU); + ASSERT_TRUE(tz_qp_client2 != NULL); + + tz_qp_client3 = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_CONTEXT_MENU); + ASSERT_TRUE(tz_qp_client3 != NULL); + + showTCWin(tw_base); + ASSERT_VIS_ON(tw_base); + + etRunner::get().work(0.5); + + int ret = tzsh_destroy(tzsh); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + tzsh = NULL; + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTzshQuickpanel, quickpanel_multi_wins_tzsh_destroy) +{ + checkInitTC(); + + tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL); + ASSERT_TRUE(tzsh != NULL); + + tz_win = elm_win_window_id_get(tw_base->elm_win); + ASSERT_NE(0, tz_win); + + tz_qp_client = tzsh_quickpanel_create_with_type(tzsh, tz_win, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client != NULL); + + showTCWin(tw_base); + ASSERT_VIS_ON(tw_base); + + tw_base2 = initNormalWin("TCWin_Normal_base2", EINA_FALSE); + + tz_win2 = elm_win_window_id_get(tw_base2->elm_win); + ASSERT_NE(0, tz_win2); + + tz_qp_client2 = tzsh_quickpanel_create_with_type(tzsh, tz_win2, TZSH_QUICKPANEL_TYPE_SYSTEM_DEFAULT); + ASSERT_TRUE(tz_qp_client2 != NULL); + + showTCWin(tw_base2); + ASSERT_VIS_ON(tw_base2); + + etRunner::get().work(0.5); + + int ret = tzsh_destroy(tzsh); + ASSERT_TRUE(ret == TZSH_ERROR_NONE); + tzsh = NULL; + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} -- 2.7.4 From 955fa2167e539d243395251971ab7c61c925dc90 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Wed, 18 Aug 2021 10:32:32 +0900 Subject: [PATCH 11/16] tzsh_quickpanel: change scrollable_retain test code Change-Id: Ibdc65a3d7193587bacdbe076a7970f5e847034d2 --- src/testcase/0015_tzsh_quickpanel.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/testcase/0015_tzsh_quickpanel.cpp b/src/testcase/0015_tzsh_quickpanel.cpp index 4e03473..6fefd24 100644 --- a/src/testcase/0015_tzsh_quickpanel.cpp +++ b/src/testcase/0015_tzsh_quickpanel.cpp @@ -315,7 +315,7 @@ TEST_F(etTestTzshQuickpanel, quickpanel_scrollable_retain) ASSERT_TRUE(ret == TZSH_ERROR_NONE); ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_HIDDEN); - ret = tzsh_quickpanel_scrollable_state_set(tz_qp_client2, TZSH_QUICKPANEL_STATE_SCROLLABLE_SET); + ret = tzsh_quickpanel_scrollable_state_set(tz_qp_client, TZSH_QUICKPANEL_STATE_SCROLLABLE_SET); ASSERT_TRUE(ret == TZSH_ERROR_NONE); ret = tzsh_quickpanel_show(tz_qp_client2); @@ -324,7 +324,7 @@ TEST_F(etTestTzshQuickpanel, quickpanel_scrollable_retain) etRunner::get().work(2.0); ret = tzsh_quickpanel_scrollable_state_get(tz_qp_client2, &scrollable_state); - ASSERT_EQ(scrollable_state, TZSH_QUICKPANEL_STATE_SCROLLABLE_SET); + ASSERT_EQ(scrollable_state, TZSH_QUICKPANEL_STATE_SCROLLABLE_RETAIN); ret = tzsh_quickpanel_visible_get(tz_qp_client2, &visible); ASSERT_EQ(visible, TZSH_QUICKPANEL_STATE_VISIBLE_SHOWN); -- 2.7.4 From 5883acfb86ecb7d5479eacaf0cdb2a0760068d96 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Wed, 18 Aug 2021 11:38:45 +0900 Subject: [PATCH 12/16] Packaging: update version to 0.6.3 Change-Id: I62304b4ef2739fb61638694cd2435facf3f30fe7 --- packaging/e-tizen-unittests.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-tizen-unittests.spec b/packaging/e-tizen-unittests.spec index 991d3f5..f5dedad 100644 --- a/packaging/e-tizen-unittests.spec +++ b/packaging/e-tizen-unittests.spec @@ -1,7 +1,7 @@ %define USE_GCOV 0 Name: e-tizen-unittests -Version: 0.6.2 +Version: 0.6.3 Release: 1 Summary: The test case runner for enlightenment URL: http://www.enlightenment.org -- 2.7.4 From e243e3c2f07a0f1949ec19042661ba3df0754da6 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Mon, 23 Aug 2021 11:52:09 +0900 Subject: [PATCH 13/16] transient_for_below: add more tests - Unset transient_for_below - Set/Unset transient_for_below and transient_for Change-Id: I7d1226d7370e4b9dfa281391a19b34e4d2e9c1b4 --- src/testcase/0014_transient_for_below.cpp | 441 ++++++++++++++++++++++++++++++ 1 file changed, 441 insertions(+) diff --git a/src/testcase/0014_transient_for_below.cpp b/src/testcase/0014_transient_for_below.cpp index be4c10c..f338949 100644 --- a/src/testcase/0014_transient_for_below.cpp +++ b/src/testcase/0014_transient_for_below.cpp @@ -108,6 +108,184 @@ TEST_F(etTestTransientForBelow, transient_for_below_basic) //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); } +TEST_F(etTestTransientForBelow, transient_for_below_unset) +{ + etWin *tw = NULL; + etWin *tw_child = NULL; + Eina_List *list = NULL, *l = NULL; + int pass_count = 0; + + // init TC window, show=true, geom=true + initTC(EINA_TRUE); + + makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child"); + + // unset tansient_for below - using tizen_policy_set_transient_for_below(child, NULL); + Eina_Bool res = etRunner::get().setWinTransientForBelow(tw_child, tw_parent, EINA_FALSE); + ASSERT_TRUE(res); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> 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); + 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_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + ASSERT_EQ(3, pass_count); + + + // Raise tw_child + etRunner::get().setWinStack(tw_child, NULL, EINA_TRUE); + ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_RAISE); + + // Expected stack res: + // [Top] tw_child -> tw_parent -> 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_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + 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(3, pass_count); + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + +TEST_F(etTestTransientForBelow, transient_for_below_unset2) +{ + etWin *tw = NULL; + etWin *tw_child = NULL; + Eina_List *list = NULL, *l = NULL; + int pass_count = 0; + + // init TC window, show=true, geom=true + initTC(EINA_TRUE); + + makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child"); + + // unset tansient_for below - using tizen_policy_unset_transient_for + Eina_Bool res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_FALSE); + ASSERT_TRUE(res); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> 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); + 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_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + ASSERT_EQ(3, pass_count); + + + // Raise tw_child + etRunner::get().setWinStack(tw_child, NULL, EINA_TRUE); + ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_RAISE); + + // Expected stack res: + // [Top] tw_child -> tw_parent -> 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_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + 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(3, pass_count); + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} + TEST_F(etTestTransientForBelow, transient_for_below_basic2) { etWin *tw = NULL; @@ -1241,3 +1419,266 @@ TEST_F(etTestTransientForBelow, transient_for_below_multi_parent_raise_child_and ASSERT_EQ(8, pass_count); //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); } + +TEST_F(etTestTransientForBelow, transient_for_below_above_set) +{ + etWin *tw = NULL; + etWin *tw_child = NULL; + Eina_List *list = NULL, *l = NULL; + int pass_count = 0; + + // init TC window, show=true, geom=true + initTC(EINA_TRUE); + + /////////////////////////// + // SET transient BELOW + /////////////////////////// + makeTransientBelowChild(&tw_child, tw_parent, 80, 80, 300, 300, E_TC_WIN_COLOR_BLUE, "TCWin_Normal_child"); + + etRunner::get().work(0.5); + + /////////////////////////// + // UNSET transient BELOW - using tizen_policy_set_transient_for_below(child, NULL) + /////////////////////////// + Eina_Bool res = etRunner::get().setWinTransientForBelow(tw_child, tw_parent, EINA_FALSE); + ASSERT_TRUE(res); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> 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); + 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_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + ASSERT_EQ(3, pass_count); + + etRunner::get().work(0.5); + + /////////////////////////// + // SET transient ABOVE + /////////////////////////// + res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE); + ASSERT_TRUE(res); + + // Expected stack res: + // [Top] tw_child -> tw_parent -> 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_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + 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(3, pass_count); + + /////////////////////////// + // UNSET transient ABOVE + /////////////////////////// + res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_FALSE); + ASSERT_TRUE(res); + + // Expected stack res: + // [Top] tw_child -> tw_parent -> 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_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + 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(3, pass_count); + + etRunner::get().work(0.5); + + /////////////////////////// + // SET transient BELOW + /////////////////////////// + res = etRunner::get().setWinTransientForBelow(tw_child, tw_parent, EINA_TRUE); + ASSERT_TRUE(res); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> 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); + 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_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + ASSERT_EQ(3, pass_count); + + etRunner::get().work(0.5); + + + /////////////////////////// + // UNSET transient BELOW - using tizen_policy_unset_transient_for(child, NULL) + /////////////////////////// + res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_FALSE); + ASSERT_TRUE(res); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> 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); + 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_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + ASSERT_EQ(3, pass_count); + + etRunner::get().work(0.5); + + /////////////////////////// + // SET transient ABOVE + /////////////////////////// + res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE); + ASSERT_TRUE(res); + + // Expected stack res: + // [Top] tw_child -> tw_parent -> 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_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + 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(3, pass_count); + + //ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); +} -- 2.7.4 From cf84e683ac0a40fcd8699c09a1606531f5b7f781 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 15 Sep 2021 20:31:46 +0900 Subject: [PATCH 14/16] e-tizen-unittests: disable gesture tests if the profile is tv Change-Id: I60e19cc154fdea670008b6452de7419b6006613e --- packaging/e-tizen-unittests.spec | 3 +++ src/e_test_event.cpp | 10 ++++++++++ src/e_test_event.h | 8 ++++++++ src/testcase/0009_input.cpp | 8 ++++++-- 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/packaging/e-tizen-unittests.spec b/packaging/e-tizen-unittests.spec index f5dedad..cf54832 100644 --- a/packaging/e-tizen-unittests.spec +++ b/packaging/e-tizen-unittests.spec @@ -42,6 +42,9 @@ export LDFLAGS+=" -Wl,--hash-style=both -Wl,--as-needed -Wl,--rpath=/usr/lib" %if "%{USE_GCOV}" == "1" export CXXFLAGS+=" -DTIZEN_TEST_GCOV " %endif +%if "%{tizen_profile_name}" == "tv" +export CXXFLAGS+=" -DDISABLE_GESTURE_TESTS " +%endif %autogen %configure --prefix=/usr diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp index 40f6241..90abc0b 100644 --- a/src/e_test_event.cpp +++ b/src/e_test_event.cpp @@ -134,9 +134,11 @@ static void _cb_evas_smart_cb_launch_done(void *data, Evas_Object * obj, void *e static Eina_Bool _cb_work_timeout(void *data); /* callbacks - gesture */ +#ifndef DISABLE_GESTURE_TESTS static Eina_Bool _cb_gesture_tap(void *data, int type, void *event); static Eina_Bool _cb_gesture_edge_swipe(void *data, int type, void *event); static Eina_Bool _cb_gesture_edge_drag(void *data, int type, void *event); +#endif /********************** listeners @@ -210,8 +212,10 @@ etRunner::init() EINA_SAFETY_ON_NULL_RETURN_VAL(inputGenerator, EINA_FALSE); // init gesture handler + #ifndef DISABLE_GESTURE_TESTS gestureHandler = efl_util_gesture_initialize(); EINA_SAFETY_ON_NULL_RETURN_VAL(gestureHandler, EINA_FALSE); + #endif // add signal handlers res = addSignalHandlers(); @@ -304,7 +308,9 @@ etRunner::shutdown() efl_util_input_deinitialize_generator(inputGenerator); // deinit gesture handler +#ifndef DISABLE_GESTURE_TESTS efl_util_gesture_deinitialize(gestureHandler); +#endif } Eina_Bool @@ -1629,6 +1635,7 @@ etRunner::addSignalHandlers() EINA_SAFETY_ON_NULL_GOTO(eh, err); ev.eh_list = eina_list_append(ev.eh_list, eh); +#ifndef DISABLE_GESTURE_TESTS eh = ecore_event_handler_add(EFL_UTIL_EVENT_GESTURE_TAP, _cb_gesture_tap, this); EINA_SAFETY_ON_NULL_GOTO(eh, err); ev.eh_list = eina_list_append(ev.eh_list, eh); @@ -1640,6 +1647,7 @@ etRunner::addSignalHandlers() eh = ecore_event_handler_add(EFL_UTIL_EVENT_GESTURE_EDGE_DRAG, _cb_gesture_edge_drag, this); EINA_SAFETY_ON_NULL_GOTO(eh, err); ev.eh_list = eina_list_append(ev.eh_list, eh); +#endif ev.key.ecore_state = EINA_FALSE; @@ -2518,6 +2526,7 @@ _cb_evas_smart_cb_launch_done(void *data, Evas_Object * obj, void *event_info) } } +#ifndef DISABLE_GESTURE_TESTS static Eina_Bool _cb_gesture_tap(void *data, int type, void *event) { @@ -2838,6 +2847,7 @@ etRunner::generateEdgeDragGesture() return EINA_TRUE; } +#endif void _verifyTCGetBufferSize(tbm_surface_h buffer, int *buffer_w, int *buffer_h, int *stride) diff --git a/src/e_test_event.h b/src/e_test_event.h index 8ca7884..e2193c0 100644 --- a/src/e_test_event.h +++ b/src/e_test_event.h @@ -223,6 +223,7 @@ public: /* TODO: make it hidden */ unsigned int state_smcb; unsigned int type; } effect; +#ifndef DISABLE_GESTURE_TESTS struct { Ecore_Timer *timer; @@ -241,6 +242,7 @@ public: /* TODO: make it hidden */ Eina_Bool get_event; } edge; } gesture; +#endif } ev; struct { @@ -312,9 +314,11 @@ public: Eina_Bool generateTouchDown(int idx, int x, int y); Eina_Bool generateTouchMove(int idx, int x, int y); Eina_Bool generateTouchUp(int idx, int x, int y); +#ifndef DISABLE_GESTURE_TESTS Eina_Bool generateTapGesture(); Eina_Bool generateEdgeSwipeGesture(); Eina_Bool generateEdgeDragGesture(); +#endif Eina_Bool setSplashLaunch(const char *path, int type); Eina_Bool setSplashOwner(); Eina_Bool setWinEffect(etWin *tw); @@ -337,7 +341,9 @@ public: Eldbus_Proxy *getDbusProxy() { return dbus.ds_proxy; } Eldbus_Object *getDbusObject() { return dbus.ds_obj; } int getLogDomain() { return logDomain; } +#ifndef DISABLE_GESTURE_TESTS efl_util_gesture_h getGestureHandler() { return gestureHandler; } +#endif Eina_Bool verifyTC(std::string basetype, std::string tcname); void parseTargetInfo(int argc, char **argv); @@ -345,7 +351,9 @@ public: protected: Eina_Bool initProtocols(); efl_util_inputgen_h inputGenerator = NULL; +#ifndef DISABLE_GESTURE_TESTS efl_util_gesture_h gestureHandler = NULL; +#endif efl_util_screenshot_h screenshot = NULL; }; diff --git a/src/testcase/0009_input.cpp b/src/testcase/0009_input.cpp index 870dd27..d376fe0 100644 --- a/src/testcase/0009_input.cpp +++ b/src/testcase/0009_input.cpp @@ -19,16 +19,19 @@ public: eina_stringshare_del(etRunner::get().ev.key.name); key_name = NULL; }; - +#ifndef DISABLE_GESTURE_TESTS void test_gesture_edge_swipe(int fingers, efl_util_gesture_edge_e edge); void test_gesture_edge_drag(int fingers, efl_util_gesture_edge_e edge); +#endif protected: etWin *tw_shared = NULL; etWin *tw_topposition = NULL; etWin *tw_orexcl = NULL; etWin *tw_excl = NULL; +#ifndef DISABLE_GESTURE_TESTS etWin *tw_gesture = NULL; +#endif std::string testCaseName; std::string testName; @@ -331,7 +334,7 @@ TEST_F(etTestInput, keygrab_win) ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); } - +#ifndef DISABLE_GESTURE_TESTS TEST_F(etTestInput, gesture_tap22) { int ret = EFL_UTIL_ERROR_NONE; @@ -574,3 +577,4 @@ TEST_F(etTestInput, gesture_edge_drag24) ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); } +#endif \ No newline at end of file -- 2.7.4 From 85229d0c9a50089d09a22aabb5775cb93c23441e Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Wed, 29 Sep 2021 10:32:52 +0900 Subject: [PATCH 15/16] transient_for: add multi transient_for above tests Change-Id: Ia7756aac07c09bc7e95e1c7dfaf70cc7dd60f70d --- src/testcase/0004_transient_for.cpp | 471 +++++++++++++++++++++++++++++++++++- 1 file changed, 470 insertions(+), 1 deletion(-) diff --git a/src/testcase/0004_transient_for.cpp b/src/testcase/0004_transient_for.cpp index 605c3d5..e0fb60c 100644 --- a/src/testcase/0004_transient_for.cpp +++ b/src/testcase/0004_transient_for.cpp @@ -10,6 +10,7 @@ class etTestTransientFor : public ::etTCBase protected: etWin *tw_parent = NULL; etWin *tw_child = NULL; + etWin *tw_child2 = NULL; etWin *tw_base = NULL; std::string testCaseName; std::string testName; @@ -668,4 +669,472 @@ TEST_F(etTestTransientFor, transient_for_always_on_top_basic2) ASSERT_EQ(4, pass_count); ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE); -} \ No newline at end of file +} + +TEST_F(etTestTransientFor, transient_for_multi_child) +{ + 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 + res = etRunner::get().setWinTransientFor(tw_child2, tw_parent, 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_multi_child2) +{ + 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 + res = etRunner::get().setWinTransientFor(tw_child2, tw_parent, 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); + + pass_count = 0; + + // set transient_for again + res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE); + ASSERT_TRUE(res); + ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_ABOVE); + + etRunner::get().work(0.5); + + // Expected stack res: + // [Top] tw_child -> tw_child2 -> 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_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + ASSERT_EQ(tw->native_win, tw_child2->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_multi_child3) +{ + 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); + + // Expected stack res: + // [Top] 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_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + 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(3, pass_count); + + + // 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 + res = etRunner::get().setWinTransientFor(tw_child2, tw_parent, EINA_TRUE); + ASSERT_TRUE(res); + + // set transient_for tw_child + res = etRunner::get().setWinTransientFor(tw_child, tw_parent, EINA_TRUE); + ASSERT_TRUE(res); + + etRunner::get().work(0.5); + + // Expected stack res: + // [Top] tw_child -> tw_child2 -> tw_parent -> 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_child->native_win); + pass_count++; + continue; + } + else if (pass_count == 1) + { + ASSERT_EQ(tw->native_win, tw_child2->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_multi_child_change_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); + + // 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 + res = etRunner::get().setWinTransientFor(tw_child2, tw_parent, 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); + + pass_count = 0; + + // set transient_for_BELOW + res = etRunner::get().setWinTransientForBelow(tw_child, tw_parent, EINA_TRUE); + ASSERT_TRUE(res); + ASSERT_EVENT(tw_child, E_TC_EVENT_TYPE_STACK_BELOW); + + etRunner::get().work(0.5); + + // Expected stack res: + // [Top] tw_child2 -> tw_parent -> tw_child -> 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_parent->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_base->native_win); + pass_count++; + } + + break; + } + etRunner::get().freeWinInfoList(list); + + ASSERT_EQ(4, pass_count); + + pass_count = 0; + + // set transient_for_BELOW + res = etRunner::get().setWinTransientForBelow(tw_child2, tw_parent, EINA_TRUE); + ASSERT_TRUE(res); + + etRunner::get().work(0.5); + + // Expected stack res: + // [Top] tw_parent -> tw_child -> tw_child2 -> 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); + 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_child2->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); +} -- 2.7.4 From a7e9a7f7334aaa1eda3cc0990317d5378380a4c2 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Wed, 29 Sep 2021 10:45:55 +0900 Subject: [PATCH 16/16] Packaging: update version to 0.6.4 Change-Id: I57f3cf5657f11fdba2646dea28e66eea5c70b7ab --- packaging/e-tizen-unittests.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/e-tizen-unittests.spec b/packaging/e-tizen-unittests.spec index cf54832..f550c36 100644 --- a/packaging/e-tizen-unittests.spec +++ b/packaging/e-tizen-unittests.spec @@ -1,7 +1,7 @@ %define USE_GCOV 0 Name: e-tizen-unittests -Version: 0.6.3 +Version: 0.6.4 Release: 1 Summary: The test case runner for enlightenment URL: http://www.enlightenment.org -- 2.7.4