1 /*
2 * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "display_power_mgr_service_test.h"
17
18 #include <iservice_registry.h>
19 #include <system_ability_definition.h>
20 #include <vector>
21
22 #include "display_power_mgr_client.h"
23 #include "display_log.h"
24
25 using namespace testing::ext;
26 using namespace OHOS;
27 using namespace OHOS::DisplayPowerMgr;
28
SetUp()29 void DisplayPowerMgrServiceTest::SetUp()
30 {
31 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON);
32 }
33
TearDown()34 void DisplayPowerMgrServiceTest::TearDown()
35 {
36 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
37 }
38
39 namespace {
40 /**
41 * @tc.name: DisplayPowerMgrService001
42 * @tc.desc: Test DisplayPowerMgrService service ready.
43 * @tc.type: FUNC
44 */
45 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService001, TestSize.Level0)
46 {
47 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService01 is start");
48 sptr<ISystemAbilityManager> sam = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
49 EXPECT_TRUE(sam != nullptr) << "DisplayPowerMgrService01 fail to get GetSystemAbilityManager";
50 sptr<IRemoteObject> remoteObject_ = sam->CheckSystemAbility(DISPLAY_MANAGER_SERVICE_ID);
51 EXPECT_TRUE(remoteObject_ != nullptr) << "GetSystemAbility failed.";
52 }
53
54 /**
55 * @tc.name: DisplayPowerMgrService002
56 * @tc.desc: Test set screen state off
57 * @tc.type: FUNC
58 */
59 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService002, TestSize.Level0)
60 {
61 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService002 is start");
62 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
63 EXPECT_TRUE(ret);
64 }
65
66 /**
67 * @tc.name: DisplayPowerMgrService003
68 * @tc.desc: Test set screen state on
69 * @tc.type: FUNC
70 */
71 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService003, TestSize.Level0)
72 {
73 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService003 is start");
74 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON);
75 EXPECT_TRUE(ret);
76 }
77
78 /**
79 * @tc.name: DisplayPowerMgrService004
80 * @tc.desc: Test set screen state dim
81 * @tc.type: FUNC
82 */
83 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService004, TestSize.Level0)
84 {
85 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService004 is start");
86 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_DIM);
87 EXPECT_TRUE(ret);
88 }
89
90 /**
91 * @tc.name: DisplayPowerMgrService005
92 * @tc.desc: Test set screen state suspend
93 * @tc.type: FUNC
94 */
95 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService005, TestSize.Level0)
96 {
97 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService005 is start");
98 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_SUSPEND);
99 EXPECT_TRUE(ret);
100 }
101
102 /**
103 * @tc.name: DisplayPowerMgrService006
104 * @tc.desc: Test set screen state unknown
105 * @tc.type: FUNC
106 */
107 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService006, TestSize.Level0)
108 {
109 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService006 is start");
110 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_UNKNOWN);
111 EXPECT_TRUE(ret);
112 }
113
114 /**
115 * @tc.name: DisplayPowerMgrService007
116 * @tc.desc: Test set screen state on
117 * @tc.type: FUNC
118 */
119 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService007, TestSize.Level0)
120 {
121 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService007 is start");
122 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
123 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON);
124 EXPECT_TRUE(ret);
125 DisplayState state = DisplayPowerMgrClient::GetInstance().GetDisplayState();
126 EXPECT_TRUE(state == DisplayState::DISPLAY_ON);
127 }
128
129 /**
130 * @tc.name: DisplayPowerMgrService008
131 * @tc.desc: Test set screen state dim
132 * @tc.type: FUNC
133 */
134 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService008, TestSize.Level0)
135 {
136 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService008 is start");
137 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_DIM);
138 EXPECT_TRUE(ret);
139 DisplayState state = DisplayPowerMgrClient::GetInstance().GetDisplayState();
140 EXPECT_TRUE(state == DisplayState::DISPLAY_DIM);
141 }
142
143 /**
144 * @tc.name: DisplayPowerMgrService009
145 * @tc.desc: Test set screen state off
146 * @tc.type: FUNC
147 */
148 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService009, TestSize.Level0)
149 {
150 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService009 is start");
151 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
152 EXPECT_TRUE(ret);
153 DisplayState state = DisplayPowerMgrClient::GetInstance().GetDisplayState();
154 EXPECT_TRUE(state == DisplayState::DISPLAY_OFF);
155 }
156
157 /**
158 * @tc.name: DisplayPowerMgrService010
159 * @tc.desc: Test set screen state suspend
160 * @tc.type: FUNC
161 */
162 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService010, TestSize.Level0)
163 {
164 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService010 is start");
165 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_SUSPEND);
166 EXPECT_TRUE(ret);
167 DisplayState state = DisplayPowerMgrClient::GetInstance().GetDisplayState();
168 EXPECT_TRUE(state == DisplayState::DISPLAY_SUSPEND);
169 }
170
171 /**
172 * @tc.name: DisplayPowerMgrService011
173 * @tc.desc: Test set screen state unknown
174 * @tc.type: FUNC
175 */
176 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService011, TestSize.Level0)
177 {
178 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService011 is start");
179 auto ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_UNKNOWN);
180 EXPECT_TRUE(ret);
181 DisplayState state = DisplayPowerMgrClient::GetInstance().GetDisplayState();
182 EXPECT_TRUE(state == DisplayState::DISPLAY_UNKNOWN);
183 }
184
185 /**
186 * @tc.name: DisplayPowerMgrService012
187 * @tc.desc: Test GetDisplayIds
188 * @tc.type: FUNC
189 */
190 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService012, TestSize.Level0)
191 {
192 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService012 is start");
193 std::vector<uint32_t> ret = DisplayPowerMgrClient::GetInstance().GetDisplayIds();
194 EXPECT_TRUE(ret.size() != 0);
195 }
196
197 /**
198 * @tc.name: DisplayPowerMgrService013
199 * @tc.desc: Test GetMainDisplayId
200 * @tc.type: FUNC
201 */
202 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService013, TestSize.Level0)
203 {
204 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService013 is start");
205 int32_t ret = DisplayPowerMgrClient::GetInstance().GetMainDisplayId();
206 EXPECT_TRUE(ret == 0);
207 }
208
209 /**
210 * @tc.name: DisplayPowerMgrService014
211 * @tc.desc: Test AutoAdjustBrightness
212 * @tc.type: FUNC
213 */
214 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService014, TestSize.Level0)
215 {
216 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService014 is start");
217 bool ret = DisplayPowerMgrClient::GetInstance().AutoAdjustBrightness(true);
218 if (ret) {
219 DISPLAY_HILOGI(LABEL_TEST, "AutoAdjustBrightness: is supported");
220 ret = DisplayPowerMgrClient::GetInstance().AutoAdjustBrightness(false);
221 EXPECT_TRUE(ret);
222 } else {
223 DISPLAY_HILOGI(LABEL_TEST, "AutoAdjustBrightness: is not supported");
224 EXPECT_FALSE(ret);
225 }
226 }
227
228 /**
229 * @tc.name: DisplayPowerMgrService015
230 * @tc.desc: Test GetError
231 * @tc.type: FUNC
232 */
233 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService015, TestSize.Level0)
234 {
235 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService015 is start");
236 DisplayErrors error = DisplayPowerMgrClient::GetInstance().GetError();
237 DISPLAY_HILOGI(LABEL_TEST, "get error %{public}d", static_cast<int32_t>(error));
238 EXPECT_TRUE(error == DisplayErrors::ERR_OK);
239 }
240
241 /**
242 * @tc.name: DisplayPowerMgrService016
243 * @tc.desc: Test RegisterCallback(Input callback is nullptr, function return false)
244 * @tc.type: FUNC
245 * @tc.require: issueI63PTF
246 */
247 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService016, TestSize.Level0)
248 {
249 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService016 is start");
250 bool result = DisplayPowerMgrClient::GetInstance().RegisterCallback(nullptr);
251 EXPECT_EQ(result, false);
252 }
253
254 /**
255 * @tc.name: DisplayPowerMgrService017
256 * @tc.desc: Test OverrideDisplayOffDelay para
257 * @tc.type: FUNC
258 */
259 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService017, TestSize.Level0)
260 {
261 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService017 is start");
262 bool ret = DisplayPowerMgrClient::GetInstance().OverrideDisplayOffDelay(0);
263 EXPECT_FALSE(ret);
264 }
265
266 /**
267 * @tc.name: DisplayPowerMgrService018
268 * @tc.desc: Test prohibitting writing delay screen off time in screen off state
269 * @tc.type: FUNC
270 */
271 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService018, TestSize.Level0)
272 {
273 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService018 is start");
274 DisplayState State = DisplayPowerMgrClient::GetInstance().GetDisplayState();
275 if (State != DisplayState::DISPLAY_OFF) {
276 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
277 }
278 uint32_t delayTime = 10; //delay time is 10ms
279 bool ret = DisplayPowerMgrClient::GetInstance().OverrideDisplayOffDelay(delayTime);
280 EXPECT_FALSE(ret);
281 }
282
283 /**
284 * @tc.name: DisplayPowerMgrService019
285 * @tc.desc: Test srceen delay off
286 * @tc.type: FUNC
287 */
288 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService019, TestSize.Level0)
289 {
290 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService019 is start");
291 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON);
292 uint32_t delayTime = 10; //delay time is 10ms
293 DisplayPowerMgrClient::GetInstance().OverrideDisplayOffDelay(delayTime);
294 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
295 DisplayState delayState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
296 EXPECT_TRUE(delayState == DisplayState::DISPLAY_DELAY_OFF);
297 //Callback for waiting window
298 int sleepTime = 3; // sleep time is 3s
299 sleep(sleepTime);
300 DisplayState offState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
301 EXPECT_TRUE(offState == DisplayState::DISPLAY_OFF);
302 }
303
304 /**
305 * @tc.name: DisplayPowerMgrService020
306 * @tc.desc: Test srceen delay off interrupt
307 * @tc.type: FUNC
308 */
309 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService020, TestSize.Level0)
310 {
311 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService020 is start");
312 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON);
313 uint32_t delayTime = 200; //delay time is 200ms
314 DisplayPowerMgrClient::GetInstance().OverrideDisplayOffDelay(delayTime);
315 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
316 int sleepTime = 100000; // sleep time is 100ms
317 usleep(sleepTime);
318 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON);
319 sleepTime = 300000; // sleep time is 300ms
320 usleep(sleepTime);
321 DisplayState onState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
322 EXPECT_TRUE(onState == DisplayState::DISPLAY_ON);
323 }
324
325 /**
326 * @tc.name: DisplayPowerMgrService021
327 * @tc.desc: Test set coordinated and set display state
328 * @tc.type: FUNC
329 * @tc.require: issueI8JBT4
330 */
331 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService021, TestSize.Level0)
332 {
333 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService021 is start");
334 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
335 int sleepTime = 2;
336 //Callback for waiting window 2s
337 sleep(sleepTime);
338 bool coordinated = true;
339 auto ret = DisplayPowerMgrClient::GetInstance().SetCoordinated(coordinated);
340 EXPECT_TRUE(ret);
341 // Prepare test environment.
342 // If the state of display is DISPLAY_ON, change it to DISPLAY_OFF.
343 DisplayPowerMgrClient::GetInstance().SetDisplayState(
344 DisplayState::DISPLAY_OFF, PowerMgr::StateChangeReason::STATE_CHANGE_REASON_APPLICATION);
345 sleep(sleepTime);
346 ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(
347 DisplayState::DISPLAY_ON, PowerMgr::StateChangeReason::STATE_CHANGE_REASON_APPLICATION);
348 EXPECT_TRUE(ret);
349 ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(
350 DisplayState::DISPLAY_OFF, PowerMgr::StateChangeReason::STATE_CHANGE_REASON_APPLICATION);
351 EXPECT_TRUE(ret);
352 }
353
354 /**
355 * @tc.name: DisplayPowerMgrService022
356 * @tc.desc: Test set display state in Pre-light the screen
357 * @tc.type: FUNCs
358 * @tc.require: issue#I9AJ1S
359 */
360 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService022, TestSize.Level0)
361 {
362 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService022 is start");
363 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON);
364 DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
365 int sleepTime = 2;
366 //Callback for waiting window 2s
367 sleep(sleepTime);
368 DisplayState currentState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
369 EXPECT_TRUE(currentState == DisplayState::DISPLAY_OFF);
370
371 bool ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON,
372 PowerMgr::StateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT);
373 EXPECT_FALSE(ret);
374 currentState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
375 EXPECT_TRUE(currentState == DisplayState::DISPLAY_OFF);
376 }
377
378 /**
379 * @tc.name: DisplayPowerMgrService023
380 * @tc.desc: Test set display state in Pre-light the screen and auth success
381 * @tc.type: FUNC
382 * @tc.require: issue#I9AJ1S
383 */
384 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService023, TestSize.Level0)
385 {
386 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService023 is start");
387 bool ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
388 int sleepTime = 2;
389 //Callback for waiting window 2s
390 sleep(sleepTime);
391 DisplayState currentState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
392 EXPECT_TRUE(currentState == DisplayState::DISPLAY_OFF);
393
394 ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON,
395 PowerMgr::StateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_SUCCESS);
396 EXPECT_TRUE(ret);
397 currentState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
398 EXPECT_TRUE(currentState == DisplayState::DISPLAY_ON);
399 }
400
401 /**
402 * @tc.name: DisplayPowerMgrService024
403 * @tc.desc: Test set display state in Pre-light the screen and auth failed but screen on
404 * @tc.type: FUNC
405 * @tc.require: issue#I9AJ1S
406 */
407 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService024, TestSize.Level0)
408 {
409 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService024 is start");
410 bool ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
411 int sleepTime = 2;
412 //Callback for waiting window 2s
413 sleep(sleepTime);
414 DisplayState currentState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
415 EXPECT_TRUE(currentState == DisplayState::DISPLAY_OFF);
416
417 ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_ON,
418 PowerMgr::StateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_ON);
419 EXPECT_TRUE(ret);
420 currentState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
421 EXPECT_TRUE(currentState == DisplayState::DISPLAY_ON);
422 }
423
424 /**
425 * @tc.name: DisplayPowerMgrService025
426 * @tc.desc: Test set display state in Pre-light the screen and auth failed but screen on
427 * @tc.type: FUNC
428 * @tc.require: issue#I9AJ1S
429 */
430 HWTEST_F(DisplayPowerMgrServiceTest, DisplayPowerMgrService025, TestSize.Level0)
431 {
432 DISPLAY_HILOGI(LABEL_TEST, "DisplayPowerMgrService025 is start");
433 bool ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF);
434 int sleepTime = 2;
435 //Callback for waiting window 2s
436 sleep(sleepTime);
437 DisplayState currentState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
438 EXPECT_TRUE(currentState == DisplayState::DISPLAY_OFF);
439
440 ret = DisplayPowerMgrClient::GetInstance().SetDisplayState(DisplayState::DISPLAY_OFF,
441 PowerMgr::StateChangeReason::STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_OFF);
442 sleep(sleepTime);
443 EXPECT_FALSE(ret);
444 currentState = DisplayPowerMgrClient::GetInstance().GetDisplayState();
445 EXPECT_TRUE(currentState == DisplayState::DISPLAY_OFF);
446 }
447
448 } // namespace
449