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