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