1 /*
2 * Copyright (c) 2022-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 "battery_light_test.h"
17 #include "battery_config.h"
18 #include "battery_config_test.h"
19 #include "battery_light.h"
20 #include "power_common.h"
21 #include "battery_log.h"
22 #include <memory>
23
24 namespace OHOS {
25 namespace PowerMgr {
26 using namespace testing::ext;
27 using namespace Security::AccessToken;
28 using Security::AccessToken::AccessTokenID;
29
30 namespace {
31 BatteryLight g_light;
32 uint64_t g_token;
33 PermissionDef g_infoManagerTestPermDef = {
34 .permissionName = "ohos.permission.SYSTEM_LIGHT_CONTROL",
35 .bundleName = "accesstoken_test",
36 .grantMode = 1,
37 .label = "label",
38 .labelId = 1,
39 .description = "test battery light",
40 .descriptionId = 1,
41 .availableLevel = APL_NORMAL
42 };
43
44 PermissionStateFull g_infoManagerTestState = {
45 .grantFlags = {1},
46 .grantStatus = {PermissionState::PERMISSION_GRANTED},
47 .isGeneral = true,
48 .permissionName = "ohos.permission.SYSTEM_LIGHT_CONTROL",
49 .resDeviceID = {"local"}
50 };
51
52 HapPolicyParams g_infoManagerTestPolicyPrams = {
53 .apl = APL_NORMAL,
54 .domain = "test.domain",
55 .permList = {g_infoManagerTestPermDef},
56 .permStateList = {g_infoManagerTestState}
57 };
58
59 HapInfoParams g_infoManagerTestInfoParms = {
60 .bundleName = "batterylight_test",
61 .userID = 1,
62 .instIndex = 0,
63 .appIDDesc = "BatteryLightTest"
64 };
65 } // namespace
66
67 AccessTokenID BatteryLightTest::tokenID_ = 0;
68
SetUpTestCase()69 void BatteryLightTest::SetUpTestCase()
70 {
71 AccessTokenIDEx tokenIdEx = {0};
72 tokenIdEx = AccessTokenKit::AllocHapToken(g_infoManagerTestInfoParms, g_infoManagerTestPolicyPrams);
73 tokenID_ = tokenIdEx.tokenIdExStruct.tokenID;
74 ASSERT_NE(0, tokenID_);
75 g_token = GetSelfTokenID();
76 ASSERT_EQ(0, SetSelfTokenID(tokenID_));
77 BatteryConfig::GetInstance().ParseConfig();
78 g_light.InitLight();
79 g_light.TurnOff();
80 GTEST_LOG_(INFO) << "The current device supports Light: " << g_light.isAvailable();
81 }
82
TearDownTestCase()83 void BatteryLightTest::TearDownTestCase()
84 {
85 AccessTokenKit::DeleteToken(tokenID_);
86 SetSelfTokenID(g_token);
87 }
88
TearDown()89 void BatteryLightTest::TearDown()
90 {
91 g_light.TurnOff();
92 }
93
94 /**
95 * @tc.name: BatteryLight001
96 * @tc.desc: Turn off light
97 * @tc.type: FUNC
98 * @tc.require: issueI5YZR1
99 */
100 HWTEST_F(BatteryLightTest, BatteryLight001, TestSize.Level1)
101 {
102 BATTERY_HILOGI(LABEL_TEST, "BatteryLight001 function start!");
103 RETURN_IF(!g_light.isAvailable());
104 g_light.TurnOff();
105 EXPECT_TRUE(g_light.GetLightColor() == 0U);
106 BATTERY_HILOGI(LABEL_TEST, "BatteryLight001 function end!");
107 }
108
109 /**
110 * @tc.name: BatteryLight002
111 * @tc.desc: Turn on light
112 * @tc.type: FUNC
113 * @tc.require: issueI5YZR1
114 */
115 HWTEST_F(BatteryLightTest, BatteryLight002, TestSize.Level1)
116 {
117 BATTERY_HILOGI(LABEL_TEST, "BatteryLight002 function start!");
118 RETURN_IF(!g_light.isAvailable());
119 uint32_t color = 0U;
120 g_light.TurnOn(color);
121 EXPECT_TRUE(g_light.GetLightColor() == color);
122 BATTERY_HILOGI(LABEL_TEST, "BatteryLight002 function end!");
123 }
124
125 /**
126 * @tc.name: BatteryLight003
127 * @tc.desc: Update light color according to the capacity value 1
128 * @tc.type: FUNC
129 * @tc.require: issueI5YZR1
130 */
131 HWTEST_F(BatteryLightTest, BatteryLight003, TestSize.Level1)
132 {
133 BATTERY_HILOGI(LABEL_TEST, "BatteryLight003 function start!");
134 RETURN_IF(!g_light.isAvailable());
135 int32_t capacity = 1;
136 g_light.UpdateColor(BatteryChargeState::CHARGE_STATE_ENABLE, capacity);
137 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::RED_LIGHT);
138 EXPECT_TRUE(g_light.UpdateColor(BatteryChargeState::CHARGE_STATE_ENABLE, capacity));
139 BATTERY_HILOGI(LABEL_TEST, "BatteryLight003 function end!");
140 }
141
142 /**
143 * @tc.name: BatteryLight004
144 * @tc.desc: Turn on light set light color
145 * @tc.type: FUNC
146 * @tc.require: issueI5YZR1
147 */
148 HWTEST_F(BatteryLightTest, BatteryLight004, TestSize.Level1)
149 {
150 BATTERY_HILOGI(LABEL_TEST, "BatteryLight004 function start!");
151 RETURN_IF(!g_light.isAvailable());
152 uint32_t color = 0x7fffffff;
153 g_light.TurnOn(color);
154 EXPECT_TRUE(g_light.GetLightColor() == color);
155 BATTERY_HILOGI(LABEL_TEST, "BatteryLight004 function end!");
156 }
157
158 /**
159 * @tc.name: BatteryLight005
160 * @tc.desc: ChargingStatus is Discharging, Not bright lights
161 * @tc.type: FUNC
162 */
163 HWTEST_F(BatteryLightTest, BatteryLight005, TestSize.Level1)
164 {
165 BATTERY_HILOGI(LABEL_TEST, "BatteryLight005 function start!");
166 RETURN_IF(!g_light.isAvailable());
167 GTEST_LOG_(INFO) << "initial:" << g_light.GetLightColor();
168 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::LIGHT_OFF);
169 // First turn on the light
170 EXPECT_TRUE(g_light.UpdateColor(BatteryChargeState::CHARGE_STATE_ENABLE, 11));
171 GTEST_LOG_(INFO) << "actual:" << g_light.GetLightColor() << "=expect:" << BatteryConfigTest::YELLOW_LIGHT;
172 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::YELLOW_LIGHT);
173
174 EXPECT_FALSE(g_light.UpdateColor(BatteryChargeState::CHARGE_STATE_NONE, 0));
175 GTEST_LOG_(INFO) << "actual:" << g_light.GetLightColor() << "=expect:" << BatteryConfigTest::LIGHT_OFF;
176 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::LIGHT_OFF);
177 BATTERY_HILOGI(LABEL_TEST, "BatteryLight005 function end!");
178 }
179
180 /**
181 * @tc.name: BatteryLight006
182 * @tc.desc: ChargingStatus is Charging, capacity is 9, the red light on
183 * @tc.type: FUNC
184 */
185 HWTEST_F(BatteryLightTest, BatteryLight006, TestSize.Level1)
186 {
187 BATTERY_HILOGI(LABEL_TEST, "BatteryLight006 function start!");
188 RETURN_IF(!g_light.isAvailable());
189 GTEST_LOG_(INFO) << "initial:" << g_light.GetLightColor();
190 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::LIGHT_OFF);
191 EXPECT_TRUE(g_light.UpdateColor(BatteryChargeState::CHARGE_STATE_ENABLE, 9));
192 GTEST_LOG_(INFO) << "actual:" << g_light.GetLightColor() << "=expect:" << BatteryConfigTest::RED_LIGHT;
193 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::RED_LIGHT);
194 BATTERY_HILOGI(LABEL_TEST, "BatteryLight006 function end!");
195 }
196
197 /**
198 * @tc.name: BatteryLight007
199 * @tc.desc: ChargingStatus is Charging, capacity is 89, the yellow light on
200 * @tc.type: FUNC
201 */
202 HWTEST_F(BatteryLightTest, BatteryLight007, TestSize.Level1)
203 {
204 BATTERY_HILOGI(LABEL_TEST, "BatteryLight007 function start!");
205 RETURN_IF(!g_light.isAvailable());
206 GTEST_LOG_(INFO) << "initial:" << g_light.GetLightColor();
207 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::LIGHT_OFF);
208 EXPECT_TRUE(g_light.UpdateColor(BatteryChargeState::CHARGE_STATE_ENABLE, 89));
209 GTEST_LOG_(INFO) << "actual:" << g_light.GetLightColor() << "=expect:" << BatteryConfigTest::YELLOW_LIGHT;
210 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::YELLOW_LIGHT);
211 BATTERY_HILOGI(LABEL_TEST, "BatteryLight007 function end!");
212 }
213
214 /**
215 * @tc.name: BatteryLight008
216 * @tc.desc: ChargingStatus is Charging, capacity is 100, the green light on
217 * @tc.type: FUNC
218 */
219 HWTEST_F(BatteryLightTest, BatteryLight008, TestSize.Level1)
220 {
221 BATTERY_HILOGI(LABEL_TEST, "BatteryLight008 function start!");
222 RETURN_IF(!g_light.isAvailable());
223 GTEST_LOG_(INFO) << "initial:" << g_light.GetLightColor();
224 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::LIGHT_OFF);
225 EXPECT_TRUE(g_light.UpdateColor(BatteryChargeState::CHARGE_STATE_ENABLE, 100));
226 GTEST_LOG_(INFO) << "actual:" << g_light.GetLightColor() << "=expect:" << BatteryConfigTest::GREEN_LIGHT;
227 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::GREEN_LIGHT);
228 BATTERY_HILOGI(LABEL_TEST, "BatteryLight008 function end!");
229 }
230
231 /**
232 * @tc.name: BatteryLight009
233 * @tc.desc: ChargingStatus is Charging, capacity is -1, Light does not change
234 * @tc.type: FUNC
235 */
236 HWTEST_F(BatteryLightTest, BatteryLight009, TestSize.Level1)
237 {
238 BATTERY_HILOGI(LABEL_TEST, "BatteryLight009 function start!");
239 RETURN_IF(!g_light.isAvailable());
240 GTEST_LOG_(INFO) << "initial:" << g_light.GetLightColor();
241 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::LIGHT_OFF);
242 // First turn on the light
243 EXPECT_TRUE(g_light.UpdateColor(BatteryChargeState::CHARGE_STATE_ENABLE, 91));
244 GTEST_LOG_(INFO) << "actual:" << g_light.GetLightColor() << "=expect:" << BatteryConfigTest::GREEN_LIGHT;
245 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::GREEN_LIGHT);
246
247 // Capacity invalid value, Not bright lights
248 EXPECT_FALSE(g_light.UpdateColor(BatteryChargeState::CHARGE_STATE_ENABLE, -1));
249 GTEST_LOG_(INFO) << "actual:" << g_light.GetLightColor() << "=expect:" << BatteryConfigTest::GREEN_LIGHT;
250 EXPECT_EQ(g_light.GetLightColor(), BatteryConfigTest::GREEN_LIGHT);
251 BATTERY_HILOGI(LABEL_TEST, "BatteryLight009 function end!");
252 }
253
254 /**
255 * @tc.name: BatteryLight010
256 * @tc.desc: The call interface was not initialized
257 * @tc.type: FUNC
258 */
259 HWTEST_F(BatteryLightTest, BatteryLight010, TestSize.Level1)
260 {
261 BATTERY_HILOGI(LABEL_TEST, "BatteryLight010 function start!");
262 BatteryLight light;
263 GTEST_LOG_(INFO) << "initial:" << light.GetLightColor();
264 light.TurnOn(123);
265 EXPECT_EQ(light.GetLightColor(), BatteryConfigTest::LIGHT_OFF);
266 light.TurnOff();
267 EXPECT_EQ(light.GetLightColor(), BatteryConfigTest::LIGHT_OFF);
268 BATTERY_HILOGI(LABEL_TEST, "BatteryLight010 function end!");
269 }
270 } // namespace PowerMgr
271 } // namespace OHOS
272