1 #include "e_test_event.h"
2 #include "e_test_base.h"
4 #include <tzsh_screensaver_manager_service.h>
5 #include <tzsh_screensaver_service.h>
7 #define E_TEST_WORK_TIME 3.0
9 class etTestTzshScreenSaver : public ::etTCBase
12 Eina_Bool chk_timeout_val_ = EINA_FALSE;
13 Eina_Bool chk_ev_state_idle_timeout_ = EINA_FALSE;
14 Eina_Bool chk_ev_state_not_idle_ = EINA_FALSE;
15 int chk_cb_called_ = 0;
18 tzsh_window tz_win = 0x0;
19 tzsh_screensaver_service_h tz_scrsaver = NULL;
20 tzsh_screensaver_manager_service_h tz_scrsaver_mng = NULL;
22 etTestTzshScreenSaver()
24 chk_timeout_val_ = EINA_FALSE;
25 chk_ev_state_idle_timeout_ = EINA_FALSE;
26 chk_ev_state_not_idle_ = EINA_FALSE;
30 ~etTestTzshScreenSaver()
32 if (tz_scrsaver_mng) tzsh_screensaver_manager_service_destroy(tz_scrsaver_mng);
33 if (tz_scrsaver) tzsh_screensaver_service_destroy(tz_scrsaver);
34 if (tzsh) tzsh_destroy(tzsh);
38 etWin *tw_base = NULL;
39 std::string testCaseName;
46 etTestTzshScreenSaver::initTC()
48 const ::testing::TestInfo *const test_info = ::testing::UnitTest::GetInstance()->current_test_info();
50 tw_base = initNormalWin("TCWin_Normal_base", EINA_FALSE);
51 ASSERT_TRUE(tw_base != NULL) << "failed to initiation window";
53 testCaseName = test_info->test_case_name();
54 testName = test_info->name();
61 _cb_state_change(void *data,
62 tzsh_screensaver_manager_service_h service,
65 etTestTzshScreenSaver *tc_data = (etTestTzshScreenSaver *)data;
68 tc_data->chk_cb_called_++;
70 if (states & TZSH_SCREENSAVER_MANAGER_SERVICE_STATE_IDLE_TIMEOUT_EXPIRED)
72 EINA_SAFETY_ON_FALSE_RETURN(tc_data->chk_cb_called_ == 1);
74 etRunner::get().addTimer();
76 tc_data->chk_ev_state_idle_timeout_ = EINA_TRUE;
78 etRunner::get().thawEvent();
79 etRunner::get().feedMouseDown(1, 1);
80 etRunner::get().feedMouseUp(1, 1);
81 etRunner::get().freezeEvent();
83 else if (states & TZSH_SCREENSAVER_MANAGER_SERVICE_STATE_NOT_IDLE)
85 EINA_SAFETY_ON_FALSE_RETURN(tc_data->chk_cb_called_ == 2);
87 etRunner::get().delTimer();
89 tc_data->chk_ev_state_not_idle_ = EINA_TRUE;
91 tzsh_screensaver_manager_service_idle_timeout_get(service, &time);
92 EINA_SAFETY_ON_FALSE_RETURN(time == 1000);
94 tc_data->chk_timeout_val_ = EINA_TRUE;
96 etRunner::get().finishWork();
100 EINA_SAFETY_ON_FALSE_RETURN(EINA_FALSE);
105 * etTestTzshScreenSaver.scrsaver_basic
107 * Check screensaver type window that is shown on the notification layer.
109 * 01. Create an elm basic window
110 * 02. Set elm window to be screensaver type using tzsh
112 * 04. Check window stack
114 * A window is shown on the notification layer.
116 TEST_F(etTestTzshScreenSaver, scrsaver_basic)
118 Eina_List *list = NULL, *l = NULL;
123 tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL);
124 ASSERT_TRUE(tzsh != NULL);
126 tz_win = elm_win_window_id_get(tw_base->elm_win);
127 ASSERT_NE(0, tz_win);
129 tz_scrsaver = tzsh_screensaver_service_create(tzsh, tz_win);
130 ASSERT_TRUE(tz_scrsaver != NULL);
133 ASSERT_VIS_ON(tw_base);
135 list = etRunner::get().getWinInfoList();
136 ASSERT_TRUE(list != NULL);
138 EINA_LIST_CAST_FOREACH(list, l, tw, etWin*)
140 if (tw->native_win != tw_base->native_win)
144 ASSERT_EQ(E_LAYER_CLIENT_ALERT, tw->layer);
147 ASSERT_TRUE(tw->Vis.win);
148 ASSERT_TRUE(tw->Vis.obj);
149 ASSERT_EQ(E_VISIBILITY_UNOBSCURED, tw->Vis.type);
152 ASSERT_TRUE(tw->Focus.obj);
153 ASSERT_TRUE(tw->Focus.win);
158 etRunner::get().freeWinInfoList(list);
160 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);
164 * etTestTzshScreenSaver.Screensaver_manager_basic
166 * Check screensaver manager APIs and 'state changed' callback
168 * 01. Create an elm basic window that won't be shown
169 * 02. Set elm window to be screensaver manager using tzsh
170 * 03. Set idle timeout to 1.0 seconds
171 * 04. Set screensaver feature enabled
172 * 05. Check TZSH_SCREENSAVER_MANAGER_SERVICE_STATE_IDLE_TIMEOUT_EXPIRED event
173 * 06. Request to feed fake key event
174 * 07. Check TZSH_SCREENSAVER_MANAGER_SERVICE_STATE_NOT_IDLE event
176 * TZSH_SCREENSAVER_MANAGER_SERVICE_STATE_IDLE_TIMEOUT_EXPIRED event occurs.
177 * TZSH_SCREENSAVER_MANAGER_SERVICE_STATE_NOT_IDLE event occurs.
179 TEST_F(etTestTzshScreenSaver, scrsaver_mng_basic)
181 Eina_Bool res = EINA_FALSE;
185 tzsh = tzsh_create(TZSH_TOOLKIT_TYPE_EFL);
186 ASSERT_TRUE(tzsh != NULL);
188 tz_win = elm_win_window_id_get(tw_base->elm_win);
189 ASSERT_NE(0, tz_win);
191 tz_scrsaver_mng = tzsh_screensaver_manager_service_create(tzsh, tz_win);
192 ASSERT_TRUE(tz_scrsaver_mng != NULL);
194 res = tzsh_screensaver_manager_service_idle_timeout_set(tz_scrsaver_mng, 1000);
195 ASSERT_EQ(TZSH_ERROR_NONE, res);
197 res = tzsh_screensaver_manager_service_enable(tz_scrsaver_mng);
198 ASSERT_EQ(TZSH_ERROR_NONE, res);
200 res = tzsh_screensaver_manager_service_state_change_cb_set(tz_scrsaver_mng,
203 ASSERT_EQ(TZSH_ERROR_NONE, res);
205 etRunner::get().freezeEvent();
206 etRunner::get().work(1.1);
207 etRunner::get().thawEvent();
209 ASSERT_TRUE(chk_ev_state_idle_timeout_);
210 ASSERT_TRUE(chk_ev_state_not_idle_);
211 ASSERT_TRUE(chk_timeout_val_);
212 ASSERT_EQ(2, chk_cb_called_);
214 ASSERT_EQ(etRunner::get().verifyTC(testCaseName, testName), EINA_TRUE);