• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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