From e03be13b62638a67d2dc122b3cff18b1223d50c1 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Tue, 14 Apr 2020 12:20:53 +0900 Subject: [PATCH 01/16] 0008_focus: add some tests for focus_skip set Change-Id: Ibd4a21a5d04f412df0b6e5cd6c8932e0b06af1da --- src/testcase/0008_focus.cpp | 100 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/src/testcase/0008_focus.cpp b/src/testcase/0008_focus.cpp index 9eac699..dfd3ed5 100644 --- a/src/testcase/0008_focus.cpp +++ b/src/testcase/0008_focus.cpp @@ -1489,3 +1489,103 @@ TEST_F(etTestFocus, focus_fullsize_skip_unset) } etRunner::get().freeWinInfoList(list); } + +TEST_F(etTestFocus, focus_fullsize_below_skip_above_remove) +{ + etWin *tw = NULL; + Eina_List *list = NULL, *l = NULL; + + // init TC window, show=true, geom=false + initTC(EINA_TRUE, EINA_FALSE); + + // set focus_skip on tw_green + etRunner::get().setFocusSkip(tw_green, EINA_TRUE); + etRunner::get().work(0.1); // waiting for adjust focus skip set + + // remove tw_blue + removeTCWin(tw_blue); + etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON); + + // Expected focus res: + // [Top] Blue -> Green -> Red [Bottom] + list = etRunner::get().getWinInfoList(); + ASSERT_TRUE(list != NULL); + + EINA_LIST_CAST_FOREACH(list, l, tw, etWin*) + { + ASSERT_FALSE(tw->Focus.obj); + } + etRunner::get().freeWinInfoList(list); +} + +TEST_F(etTestFocus, focus_fullsize_show_after_skip_set) +{ + etWin *tw = NULL; + Eina_List *list = NULL, *l = NULL; + + // init TC window, show=false, geom=false + initTC(EINA_FALSE, EINA_FALSE); + + showTCWin(tw_red); + showTCWin(tw_green); + + // set focus_skip on tw_blue + etRunner::get().setFocusSkipEcoreWl2(tw_blue, EINA_TRUE); + etRunner::get().work(0.1); // waiting for adjust focus skip set + + // remove tw_blue + showTCWin(tw_blue); + etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON); + + // Expected focus res: + // [Top] Blue -> Green -> Red [Bottom] + list = etRunner::get().getWinInfoList(); + ASSERT_TRUE(list != NULL); + + EINA_LIST_CAST_FOREACH(list, l, tw, etWin*) + { + ASSERT_FALSE(tw->Focus.obj); + } + etRunner::get().freeWinInfoList(list); +} + +TEST_F(etTestFocus, focus_fullsize_show_after_skip_set_and_transient_for) +{ + etWin *tw = NULL; + Eina_List *list = NULL, *l = NULL; + + // init TC window, show=false, geom=false + initTC(EINA_FALSE, EINA_FALSE); + + showTCWin(tw_red); + etRunner::get().waitEvent(tw_red, E_TC_EVENT_TYPE_VIS_ON); + showTCWin(tw_green); + etRunner::get().waitEvent(tw_green, E_TC_EVENT_TYPE_VIS_ON); + + // set transient_for + etRunner::get().setWinTransientFor(tw_green, tw_red, EINA_TRUE); + etRunner::get().setWinTransientFor(tw_blue, tw_green, EINA_TRUE); + etRunner::get().work(0.1); + + // set focus_skip on tw_blue + etRunner::get().setFocusSkipEcoreWl2(tw_blue, EINA_TRUE); + etRunner::get().work(0.1); // waiting for adjust focus skip set + + // remove tw_blue + showTCWin(tw_blue); + etRunner::get().waitEvent(tw_blue, E_TC_EVENT_TYPE_VIS_ON); + + // Expected focus res: + // [Top] Blue -> Green[focused] -> Red [Bottom] + list = etRunner::get().getWinInfoList(); + ASSERT_TRUE(list != NULL); + + EINA_LIST_CAST_FOREACH(list, l, tw, etWin*) + { + if (tw->native_win == tw_green->native_win) + ASSERT_TRUE(tw->Focus.obj); + else + ASSERT_FALSE(tw->Focus.obj); + } + etRunner::get().freeWinInfoList(list); +} -- 2.7.4 From 7ddef0084fe1597edffcb8ffeac0be454de388c9 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 22 Apr 2020 15:11:21 +0900 Subject: [PATCH 02/16] 0003_base_operation_multi_wins: fix build warning and error of lower_activate case Change-Id: I49f4b9bc392b27ccfd38a57c6bc749a19930cb85 --- src/testcase/0003_base_operation_multi_wins.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/testcase/0003_base_operation_multi_wins.cpp b/src/testcase/0003_base_operation_multi_wins.cpp index aa13468..0abba70 100644 --- a/src/testcase/0003_base_operation_multi_wins.cpp +++ b/src/testcase/0003_base_operation_multi_wins.cpp @@ -1230,7 +1230,7 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_lower2) TEST_F(etTestBaseMulti, multi_all_full_wins_lower_activate) { - etWin *tw = NULL, *tw_above = NULL; + etWin *tw = NULL; Eina_List *list = NULL, *l = NULL; int pass_count = 0; @@ -1269,7 +1269,6 @@ TEST_F(etTestBaseMulti, multi_all_full_wins_lower_activate) { ASSERT_EQ(tw->native_win, tw_red->native_win); pass_count++; - continue; } break; -- 2.7.4 From 7e3d03091b82425e9399cf09bcc0655a3b05a730 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Tue, 28 Apr 2020 18:13:09 +0900 Subject: [PATCH 03/16] e_test_event: add method for transient_for_below Change-Id: Ie7cc00546b3d2188f4afcbeeeda8d738b46826d3 --- src/e_test_event.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/e_test_event.h | 1 + 2 files changed, 53 insertions(+) diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp index c738dcc..fefe171 100644 --- a/src/e_test_event.cpp +++ b/src/e_test_event.cpp @@ -73,6 +73,7 @@ static void _cb_method_window_register(void *data, const Eldbus_Message *msg, El static void _cb_method_zone_rotation_change(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); static void _cb_method_window_effect(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); static void _cb_method_set_tc_start_end(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); +static void _cb_method_transient_for_below(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); /* callbacks - signal */ static void _cb_signal_vis_changed(void *data, const Eldbus_Message *msg); @@ -397,6 +398,30 @@ etRunner::setWinTransientFor(etWin *tw_child, } Eina_Bool +etRunner::setWinTransientForBelow(etWin *tw_child, + etWin *tw_parent, + Eina_Bool set) +{ + Eina_Bool accepted = EINA_FALSE; + Eldbus_Pending *p = NULL; + + p = eldbus_proxy_call(dbus.ds_proxy, + "SetWindowTransientForBelow", + _cb_method_transient_for_below, + &accepted, + -1, + "uub", + tw_child->native_win, + tw_parent->native_win, + set); + EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE); + + work(); + + return accepted; +} + +Eina_Bool etRunner::setWinNotiLevel(etWin *tw, efl_util_notification_level_e lv) { @@ -1751,6 +1776,33 @@ finish: etRunner::get().finishWork(); } +static void +_cb_method_transient_for_below(void *data, + const Eldbus_Message *msg, + Eldbus_Pending *p) +{ + const char *name = NULL, *text = NULL; + Eina_Bool res = EINA_FALSE; + Eina_Bool *accept = (Eina_Bool *)data; + + *accept = EINA_FALSE; + + res = eldbus_message_error_get(msg, &name, &text); + EINA_SAFETY_ON_TRUE_GOTO(res, finish); + + res = eldbus_message_arguments_get(msg, "b", accept); + EINA_SAFETY_ON_FALSE_GOTO(res, finish); + EINA_SAFETY_ON_FALSE_GOTO(*accept, finish); + +finish: + if ((name) || (text)) + { + ERR("errname: %s errmsg: %s\n", name, text); + } + + etRunner::get().finishWork(); +} + /* callbacks - signal */ static void _cb_signal_vis_changed(void *data, diff --git a/src/e_test_event.h b/src/e_test_event.h index 198ee36..a237982 100644 --- a/src/e_test_event.h +++ b/src/e_test_event.h @@ -134,6 +134,7 @@ public: Eina_Bool setWinRaise(etWin *tw); Eina_Bool setWinLower(etWin *tw); Eina_Bool setWinTransientFor(etWin *tw_child, etWin *tw_parent, Eina_Bool set); + Eina_Bool setWinTransientForBelow(etWin *tw_child, etWin *tw_parent, Eina_Bool set); Eina_Bool setWinNotiLevel(etWin *tw, efl_util_notification_level_e lv); efl_util_notification_level_e getWinNotiLevel(etWin *tw); Eina_Bool setFocusSkip(etWin *tw, Eina_Bool set); -- 2.7.4 From 5eca33f59307fd4f3972fce3327218019cc4d4c4 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Wed, 29 Apr 2020 10:34:53 +0900 Subject: [PATCH 04/16] Packaging: update version to 0.5.5 Change-Id: I2bb7a27d5bdc3dcb1202e8b7aa8f87273e70ce07 --- 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 44dcde9..7d6a121 100644 --- a/packaging/e-tizen-unittests.spec +++ b/packaging/e-tizen-unittests.spec @@ -1,5 +1,5 @@ Name: e-tizen-unittests -Version: 0.5.4 +Version: 0.5.5 Release: 1 Summary: The test case runner for enlightenment URL: http://www.enlightenment.org -- 2.7.4 From 734db1c748738e97b10440b45a35aa4f301c4d78 Mon Sep 17 00:00:00 2001 From: Junkyeong Kim Date: Fri, 11 Sep 2020 18:30:55 +0900 Subject: [PATCH 05/16] execute enlightenment_info -gcov to check enlightenment line coverage change USE_GCOV to '1' in spec file. Change-Id: I7df7358610e80e6b23fc1be68d97a10838045536 Signed-off-by: Junkyeong Kim --- packaging/e-tizen-unittests.spec | 5 +++++ src/e_test_main.cpp | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/packaging/e-tizen-unittests.spec b/packaging/e-tizen-unittests.spec index 7d6a121..7ef09ff 100644 --- a/packaging/e-tizen-unittests.spec +++ b/packaging/e-tizen-unittests.spec @@ -1,3 +1,5 @@ +%define USE_GCOV 0 + Name: e-tizen-unittests Version: 0.5.5 Release: 1 @@ -31,6 +33,9 @@ cp %{SOURCE1001} . export GC_SECTIONS_FLAGS="-fdata-sections -ffunction-sections -Wl,--gc-sections" export CXXFLAGS+=" -Wall -g -fPIC -rdynamic ${GC_SECTIONS_FLAGS} -DEFL_BETA_API_SUPPORT " export LDFLAGS+=" -Wl,--hash-style=both -Wl,--as-needed -Wl,--rpath=/usr/lib" +%if "%{USE_GCOV}" == "1" +export CXXFLAGS+=" -DTIZEN_TEST_GCOV " +%endif %autogen %configure --prefix=/usr diff --git a/src/e_test_main.cpp b/src/e_test_main.cpp index 5427136..ced5690 100644 --- a/src/e_test_main.cpp +++ b/src/e_test_main.cpp @@ -26,6 +26,11 @@ elm_main(int argc, char **argv) ::testing::InitGoogleTest(&argc, argv); ret = RUN_ALL_TESTS(); +#ifdef TIZEN_TEST_GCOV + if (std::system("enlightenment_info -gcov 1") == 0) + printf("failed to enlightenment gcov execution\n"); +#endif + // display unlock etRunner::get().setDevctlDisplayLock(EINA_FALSE); -- 2.7.4 From 5d2fb73890910535eb5830fcd559495f649225a4 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Thu, 29 Oct 2020 11:55:08 +0900 Subject: [PATCH 06/16] Packaging: update version to 0.5.6 Change-Id: Idfcea717720e840a866008f602e85a0f272e2e59 Signed-off-by: Junseok, Kim --- 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 7ef09ff..e8a8971 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.5.5 +Version: 0.5.6 Release: 1 Summary: The test case runner for enlightenment URL: http://www.enlightenment.org -- 2.7.4 From 3534819366c8978f56f7a876f3f05be2c3f2ed33 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Thu, 1 Apr 2021 17:06:37 +0900 Subject: [PATCH 07/16] 0002_base_operation: remove duplicated show request show request is duplicated in init and each test. remove show request of initTC and added log to each show request. Change-Id: Ie1edfc7035f55f74f0482965c6d1a60dca28f7d2 --- src/testcase/0002_base_operation.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/testcase/0002_base_operation.cpp b/src/testcase/0002_base_operation.cpp index fc06232..c1dad73 100644 --- a/src/testcase/0002_base_operation.cpp +++ b/src/testcase/0002_base_operation.cpp @@ -21,15 +21,13 @@ etTestBaseOperation::initTC(Eina_Bool alpha_set) if (alpha_set) elm_win_alpha_set(tw->elm_win, alpha_set); - - ASSERT_TRUE(showTCWin(tw)) << "failed to show window"; } TEST_F(etTestBaseOperation, win_show) { initTC(EINA_FALSE); - showTCWin(tw); + ASSERT_TRUE(showTCWin(tw)) << "failed to show window"; etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON); } @@ -41,7 +39,7 @@ TEST_F(etTestBaseOperation, win_stack) initTC(EINA_FALSE); - showTCWin(tw); + ASSERT_TRUE(showTCWin(tw)) << "failed to show window"; etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON); list = etRunner::get().getWinInfoList(); @@ -66,7 +64,7 @@ TEST_F(etTestBaseOperation, alpha_win_show) { initTC(EINA_TRUE); - showTCWin(tw); + ASSERT_TRUE(showTCWin(tw)) << "failed to show window"; etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON); } @@ -78,7 +76,7 @@ TEST_F(etTestBaseOperation, alpha_win_stack) initTC(EINA_TRUE); - showTCWin(tw); + ASSERT_TRUE(showTCWin(tw)) << "failed to show window"; etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON); list = etRunner::get().getWinInfoList(); -- 2.7.4 From cbcd8cccc7c7b20b6cd97dfe588f0910ff585ed1 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Thu, 1 Apr 2021 17:08:46 +0900 Subject: [PATCH 08/16] e_test_event: added aux_hint changed signal Added aux_hint changed signal and signal handler. Change-Id: Ifdace7b1b19cb923af84f69adcf82bb4342abb14 --- src/e_test_event.cpp | 34 ++++++++++++++++++++++++++++++++++ src/e_test_util.h | 1 + 2 files changed, 35 insertions(+) diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp index fefe171..2cd2fce 100644 --- a/src/e_test_event.cpp +++ b/src/e_test_event.cpp @@ -81,6 +81,7 @@ static void _cb_signal_stack_changed(void *data, const Eldbus_Message *msg); static void _cb_signal_win_rot_changed(void *data, const Eldbus_Message *msg); static void _cb_signal_focus_changed(void *data, const Eldbus_Message *msg); static void _cb_signal_render_while_effect_run(void *data, const Eldbus_Message *msg); +static void _cb_signal_aux_hint_changed(void *data, const Eldbus_Message *msg); /* callbacks - ecore */ static Eina_Bool _cb_ecore_key_down(void *data, int type, void *event); @@ -1328,6 +1329,13 @@ etRunner::addSignalHandlers() EINA_SAFETY_ON_NULL_GOTO(sh, err); ev.sh_list = eina_list_append(ev.sh_list, sh); + sh = eldbus_proxy_signal_handler_add(dbus.ds_proxy, + "AuxHintChanged", + _cb_signal_aux_hint_changed, + this); + EINA_SAFETY_ON_NULL_GOTO(sh, err); + ev.sh_list = eina_list_append(ev.sh_list, sh); + eh = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _cb_ecore_key_down, this); EINA_SAFETY_ON_NULL_GOTO(eh, err); ev.eh_list = eina_list_append(ev.eh_list, eh); @@ -1927,6 +1935,32 @@ finish: } } +static void +_cb_signal_aux_hint_changed(void *data, + const Eldbus_Message *msg) +{ + etRunner *runner = (etRunner *)data; + const char *name = NULL, *text = NULL; + Eina_Bool res = EINA_FALSE; + Ecore_Window win = 0; + uint32_t hint_id; + const char *hint_key, *hint_val; + + res = eldbus_message_error_get(msg, &name, &text); + EINA_SAFETY_ON_TRUE_GOTO(res, finish); + + res = eldbus_message_arguments_get(msg, "uuss", &win, &hint_id, &hint_key, &hint_val); + EINA_SAFETY_ON_FALSE_GOTO(res, finish); + + runner->insertEventQueue(win, E_TC_EVENT_TYPE_AUX_HINT_CHANGED); + +finish: + if ((name) || (text)) + { + ERR("errname:%s errmsg:%s\n", name, text); + } +} + /* callbacks - timer */ static Eina_Bool _cb_work_timeout(void *data) diff --git a/src/e_test_util.h b/src/e_test_util.h index 9de90ca..39fff7b 100644 --- a/src/e_test_util.h +++ b/src/e_test_util.h @@ -83,6 +83,7 @@ typedef enum _E_TC_Event_Type E_TC_EVENT_TYPE_GESTURE_TAP, E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE, E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG, + E_TC_EVENT_TYPE_AUX_HINT_CHANGED, E_TC_EVENT_TYPE_MAX } E_TC_Event_Type; -- 2.7.4 From 72170fcc7c34a447bf6d579aa11ad0a3c079ea01 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 14 Apr 2021 08:45:05 +0900 Subject: [PATCH 09/16] e_test_event: added method for add/del supported_aux_hint Change-Id: I6bca814a02714ba1dbf12d963e1ef4251cbe731d --- src/e_test_event.cpp | 30 ++++++++++++++++++++++++++++++ src/e_test_event.h | 2 ++ 2 files changed, 32 insertions(+) diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp index 2cd2fce..aedde41 100644 --- a/src/e_test_event.cpp +++ b/src/e_test_event.cpp @@ -1166,6 +1166,36 @@ etRunner::thawEvent() } Eina_Bool +etRunner::addSupportedAuxHint(const char *hint) +{ + Eldbus_Pending *p = NULL; + p = eldbus_proxy_call(dbus.ds_proxy, + "AddSupportedAuxHint", + NULL, + NULL, + -1, + "s", + hint); + EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE); + return EINA_TRUE; +} + +Eina_Bool +etRunner::delSupportedAuxHint(const char *hint) +{ + Eldbus_Pending *p = NULL; + p = eldbus_proxy_call(dbus.ds_proxy, + "DelSupportedAuxHint", + NULL, + NULL, + -1, + "s", + hint); + EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE); + return EINA_TRUE; +} + +Eina_Bool etRunner::waitEvent(etWin *win, E_TC_Event_Type ev_type) { E_TC_Event_Item *recv_item = NULL; diff --git a/src/e_test_event.h b/src/e_test_event.h index a237982..76aa18c 100644 --- a/src/e_test_event.h +++ b/src/e_test_event.h @@ -176,6 +176,8 @@ public: Eina_Bool freezeEvent(); Eina_Bool thawEvent(); Eina_Bool waitEvent(etWin *win, E_TC_Event_Type ev_type); + Eina_Bool addSupportedAuxHint(const char *hint); + Eina_Bool delSupportedAuxHint(const char *hint); Eina_Bool requestKillWinByName(const char *name); void flushEventQueue(); -- 2.7.4 From 8d7456513aea540d6b0bf81e56d409a767feeec9 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 14 Apr 2021 08:48:34 +0900 Subject: [PATCH 10/16] e_test_event: added aux hint add/change/del methods Added Aux hint add / change / del methods using ecore_wl2 API Change-Id: I9f77486d632ceefe62ff9082ed10d88b2269c0b8 --- src/e_test_event.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/e_test_event.h | 3 +++ 2 files changed, 48 insertions(+) diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp index aedde41..9c965d8 100644 --- a/src/e_test_event.cpp +++ b/src/e_test_event.cpp @@ -501,6 +501,51 @@ etRunner::setZoneRotation(int angle) } Eina_Bool +etRunner::addAuxHint(etWin *tw, int hint_id, const char *hint_key, const char *hint_val) +{ + Ecore_Wl2_Window *wlwin = NULL; + + EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE); + + wlwin = (Ecore_Wl2_Window *)elm_win_wl_window_get(tw->elm_win); + EINA_SAFETY_ON_NULL_RETURN_VAL(wlwin, EINA_FALSE); + + ecore_wl2_window_aux_hint_add(wlwin, hint_id, hint_key, hint_val); + + return EINA_TRUE; +} + +Eina_Bool +etRunner::changeAuxHint(etWin *tw, int hint_id, const char *hint_val) +{ + Ecore_Wl2_Window *wlwin = NULL; + + EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE); + + wlwin = (Ecore_Wl2_Window *)elm_win_wl_window_get(tw->elm_win); + EINA_SAFETY_ON_NULL_RETURN_VAL(wlwin, EINA_FALSE); + + ecore_wl2_window_aux_hint_change(wlwin, hint_id, hint_val); + + return EINA_TRUE; +} + +Eina_Bool +etRunner::delAuxHint(etWin *tw, int hint_id) +{ + Ecore_Wl2_Window *wlwin = NULL; + + EINA_SAFETY_ON_NULL_RETURN_VAL(tw, EINA_FALSE); + + wlwin = (Ecore_Wl2_Window *)elm_win_wl_window_get(tw->elm_win); + EINA_SAFETY_ON_NULL_RETURN_VAL(wlwin, EINA_FALSE); + + ecore_wl2_window_aux_hint_del(wlwin, hint_id); + + return EINA_TRUE; +} + +Eina_Bool etRunner::setTCStart() { Eldbus_Pending *p = NULL; diff --git a/src/e_test_event.h b/src/e_test_event.h index 76aa18c..be23b1d 100644 --- a/src/e_test_event.h +++ b/src/e_test_event.h @@ -140,6 +140,9 @@ public: Eina_Bool setFocusSkip(etWin *tw, Eina_Bool set); Eina_Bool setFocusSkipEcoreWl2(etWin *tw, Eina_Bool set); Eina_Bool setZoneRotation(int angle); + Eina_Bool addAuxHint(etWin *tw, int hint_id, const char *hint_key, const char *hint_val); + Eina_Bool changeAuxHint(etWin *tw, int hint_id, const char *hint_val); + Eina_Bool delAuxHint(etWin *tw, int hint_id); Eina_Bool setTCStart(); Eina_Bool setTCEnd(); Eina_Bool getWinInfo(etWin *tw); -- 2.7.4 From 4fc38f87b834838cd01d632b6e2d8891b7baee6f Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 14 Apr 2021 09:17:13 +0900 Subject: [PATCH 11/16] e_tizen_testcase: Added eventItem class for containing result of event. Added "eventItem" class is result of waitEvent method and it's for store result of event. TC developer can inherit eventItem to make custom result. Changes - Added eventItem class. - waitEvent returns shared pointer of eventItem instead of Eina_Bool. - legacy insertEventQueue creates eventItem and enqueue them to event queue. - new overloaded insertEventQueue(eventItem). - existing testcases are changed using eventItem. Change-Id: Ic9b65d2a3e958a0619136bf8e85a175cbfacbe01 --- src/e_test_event.cpp | 88 ++++++++++++++++++++++++++++-------------- src/e_test_event.h | 35 ++++++++++++++--- src/e_test_util.h | 19 +++++---- src/testcase/0007_rotation.cpp | 5 ++- src/testcase/0009_input.cpp | 74 +++++++++++++++++++++-------------- src/testcase/0010_splash.cpp | 6 +-- src/testcase/0011_effect.cpp | 25 +++++++----- 7 files changed, 162 insertions(+), 90 deletions(-) diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp index 9c965d8..84b2929 100644 --- a/src/e_test_event.cpp +++ b/src/e_test_event.cpp @@ -1240,12 +1240,11 @@ etRunner::delSupportedAuxHint(const char *hint) return EINA_TRUE; } -Eina_Bool +std::shared_ptr etRunner::waitEvent(etWin *win, E_TC_Event_Type ev_type) { - E_TC_Event_Item *recv_item = NULL; - Eina_Bool res = EINA_FALSE; - Eina_List *l = NULL; + std::shared_ptr recv_item = NULL; + std::list>::iterator itr; // swap event switch (ev_type) @@ -1290,47 +1289,74 @@ etRunner::waitEvent(etWin *win, E_TC_Event_Type ev_type) // pre-waiting events work(0.5); - if (ev.wait_event_index == ev.last_event) + if (*ev.wait_event_index == ev.last_event) { work(0.5); // waiting additional time - if (ev.wait_event_index == ev.last_event) - return EINA_FALSE; + if (*ev.wait_event_index == ev.last_event) + { + std::shared_ptr res = std::make_shared(0, E_TC_EVENT_TYPE_NONE); + res->result = EINA_FALSE; + res->isTimeout = EINA_TRUE; + return res; + } } - EINA_LIST_CAST_FOREACH(ev.recv_queue, l, recv_item, E_TC_Event_Item*) + // search from latest waitEvent called point + itr = ev.wait_event_index; + if (itr == ev.recv_queue.end()) itr = ev.recv_queue.begin(); + else itr++; + + for (; itr != ev.recv_queue.end() ; itr++) { - if ((recv_item->win == (win?win->native_win:0)) && - (recv_item->type == ev_type)) + recv_item = *itr; + if ((recv_item->isSameWin(win?win->native_win:0)) && + (recv_item->isSameType(ev_type))) { - ev.wait_event_index = recv_item; - res = EINA_TRUE; - break; + ev.wait_event_index = itr; + recv_item->result = EINA_TRUE; + return recv_item; } } - return res; + if (recv_item == NULL) + { + recv_item = std::make_shared(0, E_TC_EVENT_TYPE_NONE); + recv_item->result = EINA_FALSE; + } + return recv_item; } void etRunner::flushEventQueue() { - if (ev.recv_queue) - { - ev.recv_queue = eina_list_free(ev.recv_queue); - ev.recv_queue = NULL; - } + std::list>::iterator itr; + std::shared_ptr ei = NULL; + if (!ev.recv_queue.empty()) + ev.recv_queue.erase(ev.recv_queue.begin(), ev.recv_queue.end()); + ev.wait_event_index = ev.recv_queue.end(); + ev.last_event = NULL; + ev.last_checkpoint = NULL; +} + +Eina_Bool +etRunner::insertEventQueue(std::shared_ptr ei) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(ei, EINA_FALSE); + + ev.recv_queue.push_back(ei); + ev.last_event = ei; + + return EINA_TRUE; } Eina_Bool etRunner::insertEventQueue(Ecore_Window id, E_TC_Event_Type ev_type) { - E_TC_Event_Item *item = E_NEW(E_TC_Event_Item, 1); - EINA_SAFETY_ON_NULL_RETURN_VAL(item, EINA_FALSE); + std::shared_ptr ei = std::make_shared(id, ev_type); + EINA_SAFETY_ON_NULL_RETURN_VAL(ei, EINA_FALSE); - item->win = id; - item->type = ev_type; - ev.recv_queue = eina_list_append(ev.recv_queue, item); - ev.last_event = item; + ev.recv_queue.push_back(ei); + ev.last_event = ei; return EINA_TRUE; } @@ -1338,16 +1364,18 @@ etRunner::insertEventQueue(Ecore_Window id, E_TC_Event_Type ev_type) Eina_Bool etRunner::isEventOccuredAfterCheckpoint(etWin *tw, E_TC_Event_Type ev_type) { - Eina_List *l = NULL; - E_TC_Event_Item *item = NULL; + std::list>::iterator itr; + std::shared_ptr ei = NULL; Ecore_Window id = tw->native_win; - EINA_LIST_CAST_FOREACH(ev.recv_queue, l, item, E_TC_Event_Item*) + for(itr = ev.recv_queue.begin() ; itr != ev.recv_queue.end() ; itr++) { - if (ev.last_checkpoint && ev.last_checkpoint != item) + ei = *itr; + + if (ev.last_checkpoint && ev.last_checkpoint != ei) continue; - if ((item->win == id) && (item->type == ev_type)) + if (ei->isSameWin(id) && ei->isSameType(ev_type)) return EINA_TRUE; } diff --git a/src/e_test_event.h b/src/e_test_event.h index be23b1d..908957f 100644 --- a/src/e_test_event.h +++ b/src/e_test_event.h @@ -7,6 +7,30 @@ #include "e_test_util.h" #include "e_test_win.h" +class eventItem +{ +public: + eventItem() = delete; + eventItem(Ecore_Window win, E_TC_Event_Type type) : + result(EINA_FALSE), + isTimeout(EINA_FALSE), + win(win), + type(type){} + + ~eventItem() {} + +public: + Eina_Bool isSameWin(Ecore_Window win) { return win == this->win; } + Eina_Bool isSameType(E_TC_Event_Type type) {return type == this->type; } + + Eina_Bool result; + Eina_Bool isTimeout; + +protected: + Ecore_Window win; + E_TC_Event_Type type; +}; + class etRunner { private: @@ -70,11 +94,11 @@ public: /* TODO: make it hidden */ Eina_List *sh_list; Eina_List *eh_list; - Eina_List *recv_queue; + std::list> recv_queue; - E_TC_Event_Item *wait_event_index; - E_TC_Event_Item *last_event; - E_TC_Event_Item *last_checkpoint; + std::list>::iterator wait_event_index; + std::shared_ptr last_event; + std::shared_ptr last_checkpoint; struct { @@ -178,12 +202,13 @@ public: Eina_Bool setWinEffect(etWin *tw); Eina_Bool freezeEvent(); Eina_Bool thawEvent(); - Eina_Bool waitEvent(etWin *win, E_TC_Event_Type ev_type); Eina_Bool addSupportedAuxHint(const char *hint); Eina_Bool delSupportedAuxHint(const char *hint); + std::shared_ptr waitEvent(etWin *win, E_TC_Event_Type ev_type); Eina_Bool requestKillWinByName(const char *name); void flushEventQueue(); + Eina_Bool insertEventQueue(std::shared_ptr item); Eina_Bool insertEventQueue(Ecore_Window id, E_TC_Event_Type ev_type); Eina_Bool isEventOccuredAfterCheckpoint(etWin *tw, E_TC_Event_Type ev_type); void setEventCheckpoint(); diff --git a/src/e_test_util.h b/src/e_test_util.h index 39fff7b..280a8cd 100644 --- a/src/e_test_util.h +++ b/src/e_test_util.h @@ -1,10 +1,13 @@ +#ifndef E_TC_MAIN_H +#define E_TC_MAIN_H + +#include +#include + #ifdef __cplusplus extern "C" { #endif -#ifndef E_TC_MAIN_H -#define E_TC_MAIN_H - #include "config.h" #include "eina_list_ext.h" #include @@ -172,12 +175,6 @@ typedef struct _Window_Info_List Eina_Bool retry; } Window_Info_List; -typedef struct _E_TC_Event_Item -{ - Ecore_Window win; - E_TC_Event_Type type; -} E_TC_Event_Item; - #define EFL_UTIL_RETURN_TO_STRING(type) \ ((type == EFL_UTIL_ERROR_NONE)?"None": \ (type == EFL_UTIL_ERROR_INVALID_PARAMETER)?"Invalid parameter": \ @@ -191,8 +188,10 @@ typedef struct _E_TC_Event_Item (type == EFL_UTIL_ERROR_SCREENSHOT_EXECUTION_FAIL)?"Screenshot execution fail": \ (type == EFL_UTIL_ERROR_NO_RESOURCE_AVAILABLE)?"No resource available": \ "Unknown") -#endif // end of E_TC_MAIN_H + #ifdef __cplusplus } #endif + +#endif // end of E_TC_MAIN_H diff --git a/src/testcase/0007_rotation.cpp b/src/testcase/0007_rotation.cpp index 0c02a6b..282812e 100644 --- a/src/testcase/0007_rotation.cpp +++ b/src/testcase/0007_rotation.cpp @@ -33,6 +33,7 @@ Eina_Bool etTestRotation::testWinRotation(etWin *tw, int rot) { Eina_Bool res = EINA_FALSE; + std::shared_ptr ei = NULL; res = etRunner::get().setZoneRotation(rot); if (!res) @@ -41,9 +42,9 @@ etTestRotation::testWinRotation(etWin *tw, int rot) return EINA_FALSE; } - res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE); + ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_WINDOW_ROTATION_CHANGE); - if (!res) + if (!ei) { ERR("Failed waiting rotation change event"); return EINA_FALSE; diff --git a/src/testcase/0009_input.cpp b/src/testcase/0009_input.cpp index ce802ca..5421694 100644 --- a/src/testcase/0009_input.cpp +++ b/src/testcase/0009_input.cpp @@ -29,13 +29,14 @@ protected: TEST_F(etTestInput, keygrab_nowin_shared) { + std::shared_ptr ei = NULL; Eina_Bool ret = EINA_FALSE; ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_SHARED); ASSERT_TRUE(ret); etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY); + ASSERT_TRUE(ei != NULL); ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0); ASSERT_TRUE(ret); @@ -43,13 +44,15 @@ TEST_F(etTestInput, keygrab_nowin_shared) TEST_F(etTestInput, keygrab_nowin_orexcl) { + std::shared_ptr ei = NULL; Eina_Bool ret = EINA_FALSE; + ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_OVERRIDE_EXCLUSIVE); ASSERT_TRUE(ret); etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY); + ASSERT_TRUE(ei != NULL); ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0); ASSERT_TRUE(ret); @@ -57,13 +60,15 @@ TEST_F(etTestInput, keygrab_nowin_orexcl) TEST_F(etTestInput, keygrab_nowin_excl) { + std::shared_ptr ei = NULL; Eina_Bool ret = EINA_FALSE; + ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_EXCLUSIVE); ASSERT_TRUE(ret); etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY); + ASSERT_TRUE(ei != NULL); ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0); ASSERT_TRUE(ret); @@ -71,6 +76,7 @@ TEST_F(etTestInput, keygrab_nowin_excl) TEST_F(etTestInput, keygrab_win_shared) { + std::shared_ptr ei = NULL; Eina_Bool ret = EINA_FALSE; tw_shared = initNormalWin("TCWin_SharedGrab", EINA_FALSE); @@ -91,8 +97,8 @@ TEST_F(etTestInput, keygrab_win_shared) ASSERT_TRUE(ret); etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); + ASSERT_TRUE(ei != NULL); etRunner::get().ev.elm_win = NULL; etRunner::get().ev.native_win = 0; @@ -104,6 +110,7 @@ TEST_F(etTestInput, keygrab_win_shared) TEST_F(etTestInput, keygrab_win_orexcl) { + std::shared_ptr ei = NULL; Eina_Bool ret = EINA_FALSE; tw_orexcl = initNormalWin("TCWin_OrexclGrab", EINA_FALSE); @@ -124,8 +131,8 @@ TEST_F(etTestInput, keygrab_win_orexcl) ASSERT_TRUE(ret); etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); + ASSERT_TRUE(ei); etRunner::get().ev.elm_win = NULL; etRunner::get().ev.native_win = 0; @@ -137,6 +144,7 @@ TEST_F(etTestInput, keygrab_win_orexcl) TEST_F(etTestInput, keygrab_win_excl) { + std::shared_ptr ei = NULL; Eina_Bool ret = EINA_FALSE; tw_excl = initNormalWin("TCWin_ExclGrab", EINA_FALSE); @@ -157,8 +165,8 @@ TEST_F(etTestInput, keygrab_win_excl) ASSERT_TRUE(ret); etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); + ASSERT_TRUE(ei); etRunner::get().ev.elm_win = NULL; etRunner::get().ev.native_win = 0; @@ -170,6 +178,7 @@ TEST_F(etTestInput, keygrab_win_excl) TEST_F(etTestInput, keygrab_win_topposition) { + std::shared_ptr ei = NULL; Eina_Bool ret = EINA_FALSE; tw_topposition = initNormalWin("TCWin_ToppositionGrab", EINA_TRUE); @@ -189,8 +198,8 @@ TEST_F(etTestInput, keygrab_win_topposition) etRunner::get().ev.native_win = tw_topposition->native_win; etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); + ASSERT_TRUE(ei); etRunner::get().ev.elm_win = NULL; etRunner::get().ev.native_win = 0; @@ -202,6 +211,7 @@ TEST_F(etTestInput, keygrab_win_topposition) TEST_F(etTestInput, keygrab_win) { + std::shared_ptr ei = NULL; Eina_Bool ret = EINA_FALSE; tw_shared = initNormalWin("TCWin_SharedGrab", EINA_FALSE); @@ -267,8 +277,8 @@ TEST_F(etTestInput, keygrab_win) etRunner::get().ev.native_win = tw_excl->native_win; etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); + ASSERT_TRUE(ei != NULL); evas_object_key_ungrab(tw_excl->elm_win, "XF86Menu", 0, 0); ret = elm_win_keygrab_unset(tw_excl->elm_win, "XF86Menu", 0, 0); @@ -279,8 +289,8 @@ TEST_F(etTestInput, keygrab_win) etRunner::get().ev.native_win = tw_orexcl->native_win; etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); + ASSERT_TRUE(ei != NULL); evas_object_key_ungrab(tw_orexcl->elm_win, "XF86Menu", 0, 0); ret = elm_win_keygrab_unset(tw_orexcl->elm_win, "XF86Menu", 0, 0); @@ -291,8 +301,8 @@ TEST_F(etTestInput, keygrab_win) etRunner::get().ev.native_win = tw_topposition->native_win; etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); + ASSERT_TRUE(ei != NULL); evas_object_key_ungrab(tw_topposition->elm_win, "XF86Menu", 0, 0); ret = elm_win_keygrab_unset(tw_topposition->elm_win, "XF86Menu", 0, 0); @@ -303,8 +313,8 @@ TEST_F(etTestInput, keygrab_win) etRunner::get().ev.native_win = tw_shared->native_win; etRunner::get().generateKeyEvent(key_name, 0.3); - ret = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY); + ASSERT_TRUE(ei != NULL); evas_object_key_ungrab(tw_shared->elm_win, "XF86Menu", 0, 0); ret = elm_win_keygrab_unset(tw_shared->elm_win, "XF86Menu", 0, 0); @@ -316,6 +326,7 @@ TEST_F(etTestInput, keygrab_win) TEST_F(etTestInput, gesture_tap22) { + std::shared_ptr ei = NULL; int ret = EFL_UTIL_ERROR_NONE; efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler(); efl_util_gesture_data tap_d; @@ -331,8 +342,8 @@ TEST_F(etTestInput, gesture_tap22) etRunner::get().ev.gesture.tap.repeats = 2; etRunner::get().generateTapGesture(); - ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP); + ASSERT_TRUE(ei != NULL); etRunner::get().ev.gesture.tap.fingers = 0; etRunner::get().ev.gesture.tap.repeats = 0; @@ -344,6 +355,7 @@ TEST_F(etTestInput, gesture_tap22) TEST_F(etTestInput, gesture_tap23) { + std::shared_ptr ei = NULL; int ret = EFL_UTIL_ERROR_NONE; efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler(); efl_util_gesture_data tap_d; @@ -359,8 +371,8 @@ TEST_F(etTestInput, gesture_tap23) etRunner::get().ev.gesture.tap.repeats = 3; etRunner::get().generateTapGesture(); - ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP); + ASSERT_TRUE(ei != NULL); etRunner::get().ev.gesture.tap.fingers = 0; etRunner::get().ev.gesture.tap.repeats = 0; @@ -376,6 +388,7 @@ TEST_F(etTestInput, gesture_tap23) static void _test_gesture_edge_swipe(int fingers, efl_util_gesture_edge_e edge) { + std::shared_ptr ei = NULL; int ret = EFL_UTIL_ERROR_NONE; efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler(); efl_util_gesture_data edge_swipe_d; @@ -391,8 +404,8 @@ _test_gesture_edge_swipe(int fingers, efl_util_gesture_edge_e edge) etRunner::get().ev.gesture.edge.edge = edge; etRunner::get().generateEdgeSwipeGesture(); - ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE); + ASSERT_TRUE(ei != NULL); etRunner::get().ev.gesture.edge.fingers = 0; etRunner::get().ev.gesture.edge.edge = EFL_UTIL_GESTURE_EDGE_NONE;; @@ -449,6 +462,7 @@ TEST_F(etTestInput, gesture_edge_swipe24) static void _test_gesture_edge_drag(int fingers, efl_util_gesture_edge_e edge) { + std::shared_ptr ei = NULL; int ret = EFL_UTIL_ERROR_NONE; efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler(); efl_util_gesture_data edge_drag_d; @@ -464,8 +478,8 @@ _test_gesture_edge_drag(int fingers, efl_util_gesture_edge_e edge) etRunner::get().ev.gesture.edge.edge = edge; etRunner::get().generateEdgeDragGesture(); - ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG); + ASSERT_TRUE(ei != NULL); etRunner::get().ev.gesture.edge.fingers = 0; etRunner::get().ev.gesture.edge.edge = EFL_UTIL_GESTURE_EDGE_NONE;; diff --git a/src/testcase/0010_splash.cpp b/src/testcase/0010_splash.cpp index df8a07f..440c933 100644 --- a/src/testcase/0010_splash.cpp +++ b/src/testcase/0010_splash.cpp @@ -113,14 +113,14 @@ TEST_F(etTestSplash, splash_evas_callback_after_real) { etWin *tw2 = NULL; Eina_List *list = NULL, *l = NULL; - Eina_Bool ret = EINA_FALSE; + std::shared_ptr ei = NULL; initTC((char*)path_img, SPLASH_TYPE_IMG); etRunner::get().setSplashOwner(); showTCWin(tw); - ret = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT_EVAS_CB); - ASSERT_TRUE(ret); + ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT_EVAS_CB); + ASSERT_TRUE(ei != NULL); // Expected focus res: list = etRunner::get().getWinInfoList(); diff --git a/src/testcase/0011_effect.cpp b/src/testcase/0011_effect.cpp index fd7b62e..9745664 100644 --- a/src/testcase/0011_effect.cpp +++ b/src/testcase/0011_effect.cpp @@ -26,6 +26,7 @@ etTestEffect::initTC() TEST_F(etTestEffect, effect_show) { + std::shared_ptr ei = NULL; Eina_Bool res = EINA_FALSE; initTC(); @@ -35,14 +36,15 @@ TEST_F(etTestEffect, effect_show) showTCWin(tw); - res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT); - ASSERT_TRUE(res); + ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT); + ASSERT_TRUE(ei != NULL); return; } TEST_F(etTestEffect, effect_show_evas_callback) { + std::shared_ptr ei = NULL; Eina_Bool res = EINA_FALSE; initTC(); @@ -52,14 +54,15 @@ TEST_F(etTestEffect, effect_show_evas_callback) showTCWin(tw); - res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT_EVAS_CB); - ASSERT_TRUE(res); + ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT_EVAS_CB); + ASSERT_TRUE(ei != NULL); return; } TEST_F(etTestEffect, effect_hide_bylower) { + std::shared_ptr ei = NULL; Eina_Bool res = EINA_FALSE; initTC(); @@ -70,14 +73,15 @@ TEST_F(etTestEffect, effect_hide_bylower) res = etRunner::get().setWinEffect(tw); ASSERT_TRUE(res); elm_win_lower(tw->elm_win); - res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT); - ASSERT_TRUE(res); + ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT); + ASSERT_TRUE(ei != NULL); return; } TEST_F(etTestEffect, effect_hide_byunmap) { + std::shared_ptr ei = NULL; Eina_Bool res = EINA_FALSE; initTC(); @@ -88,14 +92,15 @@ TEST_F(etTestEffect, effect_hide_byunmap) res = etRunner::get().setWinEffect(tw); ASSERT_TRUE(res); tw->hide(); - res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT); - ASSERT_TRUE(res); + ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT); + ASSERT_TRUE(ei != NULL); return; } TEST_F(etTestEffect, effect_bg) { + std::shared_ptr ei = NULL; Eina_Bool res = EINA_FALSE; initTC(); @@ -107,8 +112,8 @@ TEST_F(etTestEffect, effect_bg) ASSERT_TRUE(res); //show upper window showTCWin(tw_green); - res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT); - ASSERT_TRUE(res); + ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT); + ASSERT_TRUE(ei != NULL); return; } -- 2.7.4 From 66dd4883eaf4952b41785a8000bdad1413610b98 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 14 Apr 2021 10:49:27 +0900 Subject: [PATCH 12/16] e_test_event: Added auxHintEventItem class. Added auxHintEventItem class inherits eventItem. It will be used by Aux hint test cases. Change-Id: I07906ae3cbd0eb09a3cf1fa22fc8e6680cdc9194 --- src/e_test_event.cpp | 6 +++++- src/e_test_event.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp index 84b2929..94d4dd5 100644 --- a/src/e_test_event.cpp +++ b/src/e_test_event.cpp @@ -2047,6 +2047,7 @@ _cb_signal_aux_hint_changed(void *data, Eina_Bool res = EINA_FALSE; Ecore_Window win = 0; uint32_t hint_id; + std::shared_ptr hint = NULL; const char *hint_key, *hint_val; res = eldbus_message_error_get(msg, &name, &text); @@ -2055,7 +2056,10 @@ _cb_signal_aux_hint_changed(void *data, res = eldbus_message_arguments_get(msg, "uuss", &win, &hint_id, &hint_key, &hint_val); EINA_SAFETY_ON_FALSE_GOTO(res, finish); - runner->insertEventQueue(win, E_TC_EVENT_TYPE_AUX_HINT_CHANGED); + hint = std::make_shared(win, E_TC_EVENT_TYPE_AUX_HINT_CHANGED, hint_id, hint_key, hint_val); + EINA_SAFETY_ON_NULL_GOTO(hint, finish); + + runner->insertEventQueue(hint); finish: if ((name) || (text)) diff --git a/src/e_test_event.h b/src/e_test_event.h index 908957f..c8c7fd5 100644 --- a/src/e_test_event.h +++ b/src/e_test_event.h @@ -31,6 +31,34 @@ protected: E_TC_Event_Type type; }; +class auxHintEventItem : public eventItem +{ +public: + auxHintEventItem() = delete; + auxHintEventItem (Ecore_Window win, E_TC_Event_Type type, int id, const char *hint, const char *val) : + eventItem(win, type), + id(id), + hint(std::string(hint)), + val(std::string(val)) + { + } + ~auxHintEventItem() + { + } + + Eina_Bool isSameID(int id) { return id == this->id; } + Eina_Bool isSameHint(std::string hint) { return !strncmp(hint.c_str(), this->hint.c_str(), hint.size()); } + Eina_Bool isSameVal(std::string val) { return val == this->val; } + int getID() { return this->id; } + std::string getHint() { return this->hint; } + std::string getVal() { return this->val; } + +private: + int id; + std::string hint; + std::string val; +}; + class etRunner { private: -- 2.7.4 From ed682682138adf9dc8970acd7801b7964e7c3034 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 14 Apr 2021 11:09:22 +0900 Subject: [PATCH 13/16] 0012_aux_hint: added aux hint testcases Added aux hint testcases It tests below APIs - ecore_wl2_window_aux_hint_add - ecore_wl2_window_aux_hint_change - ecore_wl2_window_aux_hint_del Change-Id: Ied1494e5db37e4cc867414e084daf2ae8880bd6c --- src/Makefile.am | 3 +- src/testcase/0012_aux_hint.cpp | 90 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 src/testcase/0012_aux_hint.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 22619e7..1548419 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -20,7 +20,8 @@ testcase/0007_rotation.cpp \ testcase/0008_focus.cpp \ testcase/0009_input.cpp \ testcase/0010_splash.cpp \ -testcase/0011_effect.cpp +testcase/0011_effect.cpp \ +testcase/0012_aux_hint.cpp e_tizen_unittests_SOURCES = \ e_test_main.cpp \ diff --git a/src/testcase/0012_aux_hint.cpp b/src/testcase/0012_aux_hint.cpp new file mode 100644 index 0000000..0160710 --- /dev/null +++ b/src/testcase/0012_aux_hint.cpp @@ -0,0 +1,90 @@ +#include "e_test_event.h" +#include "e_test_base.h" + +static int test_hint_id = 486; + +class etTestAuxHint : public ::etTCBase +{ + public: + etTestAuxHint() + { + etRunner::get().addSupportedAuxHint("win.test.auxhint"); + }; + ~etTestAuxHint() + { + etRunner::get().delSupportedAuxHint("win.test.auxhint"); + }; + + protected: + etWin *tw = NULL; + + void initTC(); +}; + +void +etTestAuxHint::initTC() +{ + tw = initNormalWin("TCWin_Normal", EINA_TRUE); + ASSERT_TRUE(tw != NULL) << "failed to initiation window"; + ASSERT_TRUE(showTCWin(tw)) << "failed to show window"; +} + +TEST_F(etTestAuxHint, add_hint) +{ + std::shared_ptr data = NULL; + Eina_Bool ret = EINA_FALSE; + + initTC(); + etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON); + + ret = etRunner::get().addAuxHint(tw, test_hint_id, "win.test.auxhint", "test"); + ASSERT_TRUE(ret); + data = std::static_pointer_cast(etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_AUX_HINT_CHANGED)); + ASSERT_TRUE(data != NULL); + ASSERT_TRUE(data->isSameHint(std::string("win.test.auxhint"))) << "Err: " << data->getHint(); + ASSERT_TRUE(data->isSameVal(std::string("test"))) << "Err: " << data->getVal(); +} + +TEST_F(etTestAuxHint, change_hint) +{ + std::shared_ptr data = NULL; + Eina_Bool ret = EINA_FALSE; + + initTC(); + etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON); + + ret = etRunner::get().addAuxHint(tw, test_hint_id, "win.test.auxhint", "test"); + ASSERT_TRUE(ret); + data = std::static_pointer_cast(etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_AUX_HINT_CHANGED)); + ASSERT_TRUE(data != NULL); + ASSERT_TRUE(data->isSameHint(std::string("win.test.auxhint"))) << "Err: " << data->getHint(); + ASSERT_TRUE(data->isSameVal(std::string("test"))) << "Err: " << data->getVal(); + + ret = etRunner::get().changeAuxHint(tw, test_hint_id, "test2"); + ASSERT_TRUE(ret); + data = std::static_pointer_cast(etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_AUX_HINT_CHANGED)); + ASSERT_TRUE(data != NULL); + ASSERT_TRUE(data->isSameHint(std::string("win.test.auxhint"))) << "Err: " << data->getHint(); + ASSERT_TRUE(data->isSameVal(std::string("test2"))) << "Err: " << data->getVal(); +} + +TEST_F(etTestAuxHint, del_hint) +{ + std::shared_ptr data = NULL; + Eina_Bool ret = EINA_FALSE; + + initTC(); + etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_VIS_ON); + + ret = etRunner::get().addAuxHint(tw, test_hint_id, "win.test.auxhint", "test"); + ASSERT_TRUE(ret); + data = std::static_pointer_cast(etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_AUX_HINT_CHANGED)); + ASSERT_TRUE(data != NULL); + ASSERT_TRUE(data->isSameHint(std::string("win.test.auxhint"))) << "Err: " << data->getHint(); + ASSERT_TRUE(data->isSameVal(std::string("test"))) << "Err: " << data->getVal(); + + ret = etRunner::get().delAuxHint(tw, test_hint_id); + ASSERT_TRUE(ret); + etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_AUX_HINT_CHANGED); +} + -- 2.7.4 From f2b1e89309bad765a79ebfb1da5f9347cea9f875 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 14 Apr 2021 12:40:26 +0900 Subject: [PATCH 14/16] e_test_event: Added timeout set method Added timeout set method. It could set/unset timer of Testcase, and can set time of timer. The patch needs enlightenment's "e_test_helper: Added timeout set method" patch. Change-Id: I2651f3e6d561c90f6569baf07cf755eb2a843309 --- src/e_test_event.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/e_test_event.h | 1 + 2 files changed, 58 insertions(+) diff --git a/src/e_test_event.cpp b/src/e_test_event.cpp index 94d4dd5..63af5ac 100644 --- a/src/e_test_event.cpp +++ b/src/e_test_event.cpp @@ -73,6 +73,7 @@ static void _cb_method_window_register(void *data, const Eldbus_Message *msg, El static void _cb_method_zone_rotation_change(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); static void _cb_method_window_effect(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); static void _cb_method_set_tc_start_end(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); +static void _cb_method_set_tc_timeout(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); static void _cb_method_transient_for_below(void *data, const Eldbus_Message *msg, Eldbus_Pending *p); /* callbacks - signal */ @@ -592,6 +593,35 @@ etRunner::setTCEnd() } Eina_Bool +etRunner::setTCTimeout(Eina_Bool set, int timeout) +{ + Eldbus_Pending *p = NULL; + Eina_Bool res = EINA_FALSE; + + if (timeout <= 0) return EINA_FALSE; + + p = eldbus_proxy_call(dbus.ds_proxy, + "SetTestTimeout", + _cb_method_set_tc_timeout, + &res, + -1, + "bu", + set, + timeout); + EINA_SAFETY_ON_NULL_GOTO(p, err); + + work(); + + EINA_SAFETY_ON_FALSE_GOTO(res, err); + + return EINA_TRUE; + +err: + setTCEnd(); + return EINA_FALSE; +} + +Eina_Bool etRunner::getWinInfo(etWin *tw) { Eldbus_Pending *p = NULL; @@ -1888,6 +1918,33 @@ finish: } static void +_cb_method_set_tc_timeout(void *data, + const Eldbus_Message *msg, + Eldbus_Pending *p) +{ + const char *name = NULL, *text = NULL; + Eina_Bool res = EINA_FALSE; + Eina_Bool *accept = (Eina_Bool *)data; + + *accept = EINA_FALSE; + + res = eldbus_message_error_get(msg, &name, &text); + EINA_SAFETY_ON_TRUE_GOTO(res, finish); + + res = eldbus_message_arguments_get(msg, "b", accept); + EINA_SAFETY_ON_FALSE_GOTO(res, finish); + EINA_SAFETY_ON_FALSE_GOTO(*accept, finish); + +finish: + if ((name) || (text)) + { + ERR("errname: %s errmsg: %s\n", name, text); + } + + etRunner::get().finishWork(); +} + +static void _cb_method_transient_for_below(void *data, const Eldbus_Message *msg, Eldbus_Pending *p) diff --git a/src/e_test_event.h b/src/e_test_event.h index c8c7fd5..811e55a 100644 --- a/src/e_test_event.h +++ b/src/e_test_event.h @@ -197,6 +197,7 @@ public: Eina_Bool delAuxHint(etWin *tw, int hint_id); Eina_Bool setTCStart(); Eina_Bool setTCEnd(); + Eina_Bool setTCTimeout(Eina_Bool set, int timeout); Eina_Bool getWinInfo(etWin *tw); Eina_List *getWinInfoList(); void freeWinInfoList(Eina_List *list); -- 2.7.4 From 492e7df87bc5b22eac697417fc9971a402e0d318 Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Wed, 21 Apr 2021 17:01:18 +0900 Subject: [PATCH 15/16] Packaging: update version to 0.5.7 Change-Id: If0cb93fd25c516b692c0f5c95a78bf080dd31935 Signed-off-by: Junseok, Kim --- 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 e8a8971..5362f23 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.5.6 +Version: 0.5.7 Release: 1 Summary: The test case runner for enlightenment URL: http://www.enlightenment.org -- 2.7.4 From a02e3b49006632b528f615ca593ed8faa144dc1a Mon Sep 17 00:00:00 2001 From: "Junseok, Kim" Date: Fri, 23 Apr 2021 10:07:36 +0900 Subject: [PATCH 16/16] e_test_main: Added background window. Normally, the homescreen shows when the test running. To hide this homescreen, we added a background window. Change-Id: Ieb55a321997aece6bdfab25c8f38d619f8e08642 Signed-off-by: Junseok, Kim --- src/e_test_main.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/e_test_main.cpp b/src/e_test_main.cpp index ced5690..3545ad4 100644 --- a/src/e_test_main.cpp +++ b/src/e_test_main.cpp @@ -23,6 +23,11 @@ elm_main(int argc, char **argv) // kill Lockscreen etRunner::get().requestKillWinByName("LOCKSCREEN"); + etWin *bg_win = new etWin(); + bg_win->init(NULL, ELM_WIN_BASIC, EINA_FALSE, "TCWin_background", + 0, 0, 0, 0, EINA_FALSE, E_TC_WIN_COLOR_WHITE); + bg_win->show(); + ::testing::InitGoogleTest(&argc, argv); ret = RUN_ALL_TESTS(); @@ -31,6 +36,9 @@ elm_main(int argc, char **argv) printf("failed to enlightenment gcov execution\n"); #endif + bg_win->hide(); + delete bg_win; + // display unlock etRunner::get().setDevctlDisplayLock(EINA_FALSE); -- 2.7.4