1 /*
2 * Copyright (c) 2024 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 <functional>
17 #include <gtest/gtest.h>
18
19 #include "common_event_manager.h"
20 #include "common_event_support.h"
21 #include "conditions/screen_listener.h"
22 #include "work_queue_manager.h"
23 #include "work_scheduler_service.h"
24
25
26 using namespace testing::ext;
27
28 namespace OHOS {
29 namespace WorkScheduler {
30 class ScreenListenerTest : public testing::Test {
31 public:
32 static void SetUpTestCase();
TearDownTestCase()33 static void TearDownTestCase() {};
SetUp()34 void SetUp() {};
TearDown()35 void TearDown() {};
36 static std::shared_ptr<WorkQueueManager> workQueueManager_;
37 static std::shared_ptr<ScreenListener> screenListener_;
38 };
39
40 std::shared_ptr<ScreenListener> ScreenListenerTest::screenListener_ = nullptr;
41 std::shared_ptr<WorkQueueManager> ScreenListenerTest::workQueueManager_ = nullptr;
42
SetUpTestCase()43 void ScreenListenerTest::SetUpTestCase()
44 {
45 std::shared_ptr<WorkSchedulerService> workSchedulerService_ = std::make_shared<WorkSchedulerService>();
46 workSchedulerService_->Start();
47 workSchedulerService_->OnStart();
48 workQueueManager_ = std::make_shared<WorkQueueManager>(workSchedulerService_);
49 screenListener_ = std::make_shared<ScreenListener>(workQueueManager_, workSchedulerService_);
50 }
51
52 /**
53 * @tc.name: OnConditionChanged_001
54 * @tc.desc: Test ScreenListener OnConditionChanged.
55 * @tc.type: FUNC
56 * @tc.require: I974IQ
57 */
58 HWTEST_F(ScreenListenerTest, OnConditionChanged_001, TestSize.Level1)
59 {
60 screenListener_->Start();
61 EventFwk::CommonEventData data;
62 screenListener_->commonEventSubscriber->OnReceiveEvent(data);
63 bool ret = screenListener_->Stop();
64 EXPECT_TRUE(ret);
65 }
66
67 /**
68 * @tc.name: OnConditionChanged_002
69 * @tc.desc: Test ScreenListener OnConditionChanged.
70 * @tc.type: FUNC
71 * @tc.require: I974IQ
72 */
73 HWTEST_F(ScreenListenerTest, OnConditionChanged_002, TestSize.Level1)
74 {
75 screenListener_->Start();
76 EventFwk::CommonEventData data;
77 EventFwk::Want want;
78 want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_UNLOCKED);
79 data.SetWant(want);
80 screenListener_->commonEventSubscriber->OnReceiveEvent(data);
81 bool ret = screenListener_->Stop();
82 EXPECT_TRUE(ret);
83 }
84
85 /**
86 * @tc.name: OnConditionChanged_003
87 * @tc.desc: Test ScreenListener OnConditionChanged.
88 * @tc.type: FUNC
89 * @tc.require: I974IQ
90 */
91 HWTEST_F(ScreenListenerTest, OnConditionChanged_003, TestSize.Level1)
92 {
93 screenListener_->Start();
94 EventFwk::CommonEventData data;
95 EventFwk::Want want;
96 want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_SCREEN_OFF);
97 data.SetWant(want);
98 screenListener_->commonEventSubscriber->OnReceiveEvent(data);
99 bool ret = screenListener_->Stop();
100 EXPECT_TRUE(ret);
101 }
102
103 /**
104 * @tc.name: OnConditionChanged_004
105 * @tc.desc: Test ScreenListener OnConditionChanged.
106 * @tc.type: FUNC
107 * @tc.require: I974IQ
108 */
109 HWTEST_F(ScreenListenerTest, OnConditionChanged_004, TestSize.Level1)
110 {
111 screenListener_->Start();
112 EventFwk::CommonEventData data;
113 EventFwk::Want want;
114 want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_BATTERY_CHANGED);
115 data.SetWant(want);
116 screenListener_->commonEventSubscriber->OnReceiveEvent(data);
117 bool ret = screenListener_->Stop();
118 EXPECT_TRUE(ret);
119 }
120 }
121 }
122