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