1 /*
2  * Copyright (c) 2022 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 "battery_plugged_wakeup_test.h"
17 
18 #include <csignal>
19 #include <iostream>
20 
21 #include "battery_info.h"
22 #include "battery_service.h"
23 #include "power_mgr_client.h"
24 #include "test_utils.h"
25 
26 using namespace testing::ext;
27 using namespace OHOS::PowerMgr;
28 using namespace OHOS::HDI::Battery;
29 using namespace OHOS;
30 using namespace std;
31 
32 namespace {
33 bool g_isMock = false;
34 static sptr<BatteryService> g_service;
35 const std::string MOCK_BATTERY_PATH = "/data/service/el0/battery/";
36 } // namespace
37 
SetUpTestCase()38 void BatteryPluggedWakeupTest::SetUpTestCase()
39 {
40     g_service = DelayedSpSingleton<BatteryService>::GetInstance();
41     g_service->OnStart();
42     g_isMock = TestUtils::IsMock();
43     GTEST_LOG_(INFO) << " g_isMock: " << g_isMock;
44 }
45 
TearDownTestCase()46 void BatteryPluggedWakeupTest::TearDownTestCase()
47 {
48     g_isMock = false;
49     TestUtils::ResetOnline();
50 }
51 
SetUp()52 void BatteryPluggedWakeupTest::SetUp() {}
53 
TearDown()54 void BatteryPluggedWakeupTest::TearDown() {}
55 
56 namespace {
57 /**
58  * @tc.name: BatteryPluggedWakeupTest001
59  * @tc.desc: Test function of wakeup_device when USB plugged.
60  * @tc.type: FUNC
61  */
62 HWTEST_F(BatteryPluggedWakeupTest, BatteryPluggedWakeupTest001, TestSize.Level0)
63 {
64     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest001 start.");
65     if (g_isMock) {
66         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
67         g_service->Reset();
68         auto& powerMgrClient = OHOS::PowerMgr::PowerMgrClient::GetInstance();
69         powerMgrClient.SuspendDevice();
70         bool isScreenOnNow = powerMgrClient.IsScreenOn();
71         EXPECT_FALSE(isScreenOnNow);
72         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "1");
73         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/type", "USB");
74         g_service->Reset();
75         isScreenOnNow = powerMgrClient.IsScreenOn();
76         EXPECT_TRUE(isScreenOnNow);
77     }
78     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest001 end.");
79 }
80 
81 /**
82  * @tc.name: BatteryPluggedWakeupTest002
83  * @tc.desc: Test function of wakeup_device when USB unplugged.
84  * @tc.type: FUNC
85  */
86 HWTEST_F(BatteryPluggedWakeupTest, BatteryPluggedWakeupTest002, TestSize.Level0)
87 {
88     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest002 start.");
89     if (g_isMock) {
90         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "1");
91         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/type", "USB");
92         g_service->Reset();
93         auto& powerMgrClient = OHOS::PowerMgr::PowerMgrClient::GetInstance();
94         powerMgrClient.SuspendDevice();
95         bool isScreenOnNow = powerMgrClient.IsScreenOn();
96         EXPECT_FALSE(isScreenOnNow);
97         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
98         g_service->Reset();
99         isScreenOnNow = powerMgrClient.IsScreenOn();
100         EXPECT_TRUE(isScreenOnNow);
101     }
102     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest002 end.");
103 }
104 
105 /**
106  * @tc.name: BatteryPluggedWakeupTest003
107  * @tc.desc: Test function of wakeup_device when WIRELESS plugged.
108  * @tc.type: FUNC
109  */
110 HWTEST_F(BatteryPluggedWakeupTest, BatteryPluggedWakeupTest003, TestSize.Level0)
111 {
112     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest003 start.");
113     if (g_isMock) {
114         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
115         g_service->Reset();
116         auto& powerMgrClient = OHOS::PowerMgr::PowerMgrClient::GetInstance();
117         powerMgrClient.SuspendDevice();
118         bool isScreenOnNow = powerMgrClient.IsScreenOn();
119         EXPECT_FALSE(isScreenOnNow);
120         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "1");
121         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/type", "Wireless");
122         g_service->Reset();
123         isScreenOnNow = powerMgrClient.IsScreenOn();
124         EXPECT_TRUE(isScreenOnNow);
125     }
126     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest003 end.");
127 }
128 
129 /**
130  * @tc.name: BatteryPluggedWakeupTest004
131  * @tc.desc: Test function of wakeup_device when WIRELESS unplugged.
132  * @tc.type: FUNC
133  */
134 HWTEST_F(BatteryPluggedWakeupTest, BatteryPluggedWakeupTest004, TestSize.Level0)
135 {
136     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest004 start.");
137     if (g_isMock) {
138         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "1");
139         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/type", "Wireless");
140         g_service->Reset();
141         auto& powerMgrClient = OHOS::PowerMgr::PowerMgrClient::GetInstance();
142         powerMgrClient.SuspendDevice();
143         bool isScreenOnNow = powerMgrClient.IsScreenOn();
144         EXPECT_FALSE(isScreenOnNow);
145         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
146         g_service->Reset();
147         isScreenOnNow = powerMgrClient.IsScreenOn();
148         EXPECT_TRUE(isScreenOnNow);
149     }
150     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest004 end.");
151 }
152 
153 /**
154  * @tc.name: BatteryPluggedWakeupTest005
155  * @tc.desc: Test function of wakeup_device when AC plugged.
156  * @tc.type: FUNC
157  */
158 HWTEST_F(BatteryPluggedWakeupTest, BatteryPluggedWakeupTest005, TestSize.Level0)
159 {
160     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest005 start.");
161     if (g_isMock) {
162         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
163         g_service->Reset();
164         auto& powerMgrClient = OHOS::PowerMgr::PowerMgrClient::GetInstance();
165         powerMgrClient.SuspendDevice();
166         bool isScreenOnNow = powerMgrClient.IsScreenOn();
167         EXPECT_FALSE(isScreenOnNow);
168         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "1");
169         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/type", "Mains");
170         g_service->Reset();
171         isScreenOnNow = powerMgrClient.IsScreenOn();
172         EXPECT_TRUE(isScreenOnNow);
173     }
174     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest005 end.");
175 }
176 
177 /**
178  * @tc.name: BatteryPluggedWakeupTest006
179  * @tc.desc: Test function of wakeup_device when AC unplugged.
180  * @tc.type: FUNC
181  */
182 HWTEST_F(BatteryPluggedWakeupTest, BatteryPluggedWakeupTest006, TestSize.Level0)
183 {
184     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest006 start.");
185     if (g_isMock) {
186         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "1");
187         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/type", "Mains");
188         g_service->Reset();
189         auto& powerMgrClient = OHOS::PowerMgr::PowerMgrClient::GetInstance();
190         powerMgrClient.SuspendDevice();
191         bool isScreenOnNow = powerMgrClient.IsScreenOn();
192         EXPECT_FALSE(isScreenOnNow);
193         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
194         g_service->Reset();
195         isScreenOnNow = powerMgrClient.IsScreenOn();
196         EXPECT_TRUE(isScreenOnNow);
197     }
198     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest006 end.");
199 }
200 
201 /**
202  * @tc.name: BatteryPluggedWakeupTest007
203  * @tc.desc: Test function of wakeup_device when Unknown plugged.
204  * @tc.type: FUNC
205  */
206 HWTEST_F(BatteryPluggedWakeupTest, BatteryPluggedWakeupTest007, TestSize.Level0)
207 {
208     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest007 start.");
209     if (g_isMock) {
210         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
211         g_service->Reset();
212         auto& powerMgrClient = OHOS::PowerMgr::PowerMgrClient::GetInstance();
213         powerMgrClient.SuspendDevice();
214         bool isScreenOnNow = powerMgrClient.IsScreenOn();
215         EXPECT_FALSE(isScreenOnNow);
216         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "1");
217         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/type", "Unknown");
218         g_service->Reset();
219         isScreenOnNow = powerMgrClient.IsScreenOn();
220         EXPECT_FALSE(isScreenOnNow);
221     }
222     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest007 end.");
223 }
224 
225 /**
226  * @tc.name: BatteryPluggedWakeupTest008
227  * @tc.desc: Test function of wakeup_device when Unknown unplugged.
228  * @tc.type: FUNC
229  */
230 HWTEST_F(BatteryPluggedWakeupTest, BatteryPluggedWakeupTest008, TestSize.Level0)
231 {
232     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest008 start.");
233     if (g_isMock) {
234         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "1");
235         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/type", "Unknown");
236         g_service->Reset();
237         auto& powerMgrClient = OHOS::PowerMgr::PowerMgrClient::GetInstance();
238         powerMgrClient.SuspendDevice();
239         bool isScreenOnNow = powerMgrClient.IsScreenOn();
240         EXPECT_FALSE(isScreenOnNow);
241         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
242         g_service->Reset();
243         isScreenOnNow = powerMgrClient.IsScreenOn();
244         EXPECT_FALSE(isScreenOnNow);
245     }
246     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest008 end.");
247 }
248 
249 /**
250  * @tc.name: BatteryPluggedWakeupTest009
251  * @tc.desc: the situation of PLUGGED_TYPE_NONE to PLUGGED_TYPE_NONE.
252  * @tc.type: FUNC
253  */
254 HWTEST_F(BatteryPluggedWakeupTest, BatteryPluggedWakeupTest009, TestSize.Level0)
255 {
256     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest009 start.");
257     if (g_isMock) {
258         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
259         g_service->Reset();
260         auto& powerMgrClient = OHOS::PowerMgr::PowerMgrClient::GetInstance();
261         powerMgrClient.SuspendDevice();
262         bool isScreenOnNow = powerMgrClient.IsScreenOn();
263         EXPECT_FALSE(isScreenOnNow);
264         TestUtils::WriteMock(MOCK_BATTERY_PATH + "/ohos_charger/online", "0");
265         g_service->Reset();
266         isScreenOnNow = powerMgrClient.IsScreenOn();
267         EXPECT_FALSE(isScreenOnNow);
268     }
269     BATTERY_HILOGD(LABEL_TEST, "BatteryPluggedWakeupTest009 end.");
270 }
271 }
272