1094332d3Sopenharmony_ci/*
2094332d3Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License.
5094332d3Sopenharmony_ci * You may obtain a copy of the License at
6094332d3Sopenharmony_ci *
7094332d3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8094332d3Sopenharmony_ci *
9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and
13094332d3Sopenharmony_ci * limitations under the License.
14094332d3Sopenharmony_ci */
15094332d3Sopenharmony_ci
16094332d3Sopenharmony_ci#include <cmath>
17094332d3Sopenharmony_ci#include <cstdio>
18094332d3Sopenharmony_ci#include <gtest/gtest.h>
19094332d3Sopenharmony_ci#include <securec.h>
20094332d3Sopenharmony_ci#include "hdf_base.h"
21094332d3Sopenharmony_ci#include "hdf_log.h"
22094332d3Sopenharmony_ci#include "osal_time.h"
23094332d3Sopenharmony_ci#include "v1_0/ilight_interface.h"
24094332d3Sopenharmony_ci#include "light_type.h"
25094332d3Sopenharmony_ci
26094332d3Sopenharmony_ci#define HDF_LOG_TAG "hdi_unittest_light"
27094332d3Sopenharmony_ci#define TEST_FUNC_IN HDF_LOGI("%{public}s in", testing::UnitTest::GetInstance()->current_test_info()->name())
28094332d3Sopenharmony_ci
29094332d3Sopenharmony_ciusing namespace OHOS::HDI::Light::V1_0;
30094332d3Sopenharmony_ciusing namespace testing::ext;
31094332d3Sopenharmony_ci
32094332d3Sopenharmony_cinamespace {
33094332d3Sopenharmony_ci    constexpr uint32_t g_sleepTime = 3;
34094332d3Sopenharmony_ci    constexpr int32_t ON_TIME = 500;
35094332d3Sopenharmony_ci    constexpr int32_t OFF_TIME = 100;
36094332d3Sopenharmony_ci    std::vector<HdfLightInfo> g_info;
37094332d3Sopenharmony_ci    sptr<ILightInterface> g_lightInterface = nullptr;
38094332d3Sopenharmony_ci}
39094332d3Sopenharmony_ci
40094332d3Sopenharmony_ciclass HdiUnitTestLight : public testing::Test {
41094332d3Sopenharmony_cipublic:
42094332d3Sopenharmony_ci    static void SetUpTestSuite();
43094332d3Sopenharmony_ci    static void TearDownTestSuite();
44094332d3Sopenharmony_ci    void SetUp();
45094332d3Sopenharmony_ci    void TearDown();
46094332d3Sopenharmony_ci};
47094332d3Sopenharmony_ci
48094332d3Sopenharmony_civoid HdiUnitTestLight::SetUpTestSuite()
49094332d3Sopenharmony_ci{
50094332d3Sopenharmony_ci    g_lightInterface = ILightInterface::Get();
51094332d3Sopenharmony_ci}
52094332d3Sopenharmony_ci
53094332d3Sopenharmony_civoid HdiUnitTestLight::TearDownTestSuite()
54094332d3Sopenharmony_ci{
55094332d3Sopenharmony_ci}
56094332d3Sopenharmony_ci
57094332d3Sopenharmony_civoid HdiUnitTestLight::SetUp()
58094332d3Sopenharmony_ci{
59094332d3Sopenharmony_ci}
60094332d3Sopenharmony_ci
61094332d3Sopenharmony_civoid HdiUnitTestLight::TearDown()
62094332d3Sopenharmony_ci{
63094332d3Sopenharmony_ci}
64094332d3Sopenharmony_ci
65094332d3Sopenharmony_cistatic int32_t IsSupportedLightId(int32_t lightId)
66094332d3Sopenharmony_ci{
67094332d3Sopenharmony_ci    TEST_FUNC_IN;
68094332d3Sopenharmony_ci    EXPECT_GT(g_info.size(), 0);
69094332d3Sopenharmony_ci
70094332d3Sopenharmony_ci    bool result = std::any_of(g_info.begin(), g_info.end(),
71094332d3Sopenharmony_ci        [lightId](const HdfLightInfo &info) {return info.lightId == lightId;});
72094332d3Sopenharmony_ci    if (result) {
73094332d3Sopenharmony_ci        return HDF_SUCCESS;
74094332d3Sopenharmony_ci    }
75094332d3Sopenharmony_ci
76094332d3Sopenharmony_ci    return HDF_ERR_NOT_SUPPORT;
77094332d3Sopenharmony_ci}
78094332d3Sopenharmony_ci
79094332d3Sopenharmony_cistatic void LightTest(int32_t lightId, int32_t lightFlashMode, HdfLightEffect &effect)
80094332d3Sopenharmony_ci{
81094332d3Sopenharmony_ci    TEST_FUNC_IN;
82094332d3Sopenharmony_ci    if (lightFlashMode != HDF_LIGHT_FLASH_NONE) {
83094332d3Sopenharmony_ci        effect.flashEffect.onTime = ON_TIME;
84094332d3Sopenharmony_ci        effect.flashEffect.offTime = OFF_TIME;
85094332d3Sopenharmony_ci    }
86094332d3Sopenharmony_ci    effect.flashEffect.flashMode = lightFlashMode;
87094332d3Sopenharmony_ci
88094332d3Sopenharmony_ci    int32_t ans = IsSupportedLightId(lightId);
89094332d3Sopenharmony_ci    int32_t ret = g_lightInterface->TurnOnLight(lightId, effect);
90094332d3Sopenharmony_ci    EXPECT_EQ(ans, ret);
91094332d3Sopenharmony_ci
92094332d3Sopenharmony_ci    OsalSleep(g_sleepTime);
93094332d3Sopenharmony_ci
94094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOffLight(lightId);
95094332d3Sopenharmony_ci    EXPECT_EQ(ans, ret);
96094332d3Sopenharmony_ci}
97094332d3Sopenharmony_ci
98094332d3Sopenharmony_ci/**
99094332d3Sopenharmony_ci  * @tc.name: CheckLightInstanceIsEmpty
100094332d3Sopenharmony_ci  * @tc.desc: Create a light instance. The instance is not empty.
101094332d3Sopenharmony_ci  * @tc.type: FUNC
102094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
103094332d3Sopenharmony_ci  */
104094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, CheckLightInstanceIsEmpty001, TestSize.Level1)
105094332d3Sopenharmony_ci{
106094332d3Sopenharmony_ci    TEST_FUNC_IN;
107094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
108094332d3Sopenharmony_ci}
109094332d3Sopenharmony_ci
110094332d3Sopenharmony_ci/**
111094332d3Sopenharmony_ci  * @tc.name: GetLightInfo001
112094332d3Sopenharmony_ci  * @tc.desc: Get light info.
113094332d3Sopenharmony_ci  * @tc.type: FUNC
114094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
115094332d3Sopenharmony_ci  */
116094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, GetLightInfo001, TestSize.Level1)
117094332d3Sopenharmony_ci{
118094332d3Sopenharmony_ci    TEST_FUNC_IN;
119094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
120094332d3Sopenharmony_ci
121094332d3Sopenharmony_ci    int32_t ret = g_lightInterface->GetLightInfo(g_info);
122094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
123094332d3Sopenharmony_ci    EXPECT_GT(g_info.size(), 0);
124094332d3Sopenharmony_ci
125094332d3Sopenharmony_ci    printf("get light list num[%zu]\n\r", g_info.size());
126094332d3Sopenharmony_ci    for (auto iter : g_info) {
127094332d3Sopenharmony_ci        printf("lightId[%d], name[%s], number[%d], type[%d]\n\r", iter.lightId, iter.lightName.c_str(),
128094332d3Sopenharmony_ci            iter.lightNumber, iter.lightType);
129094332d3Sopenharmony_ci    }
130094332d3Sopenharmony_ci}
131094332d3Sopenharmony_ci
132094332d3Sopenharmony_ci/**
133094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryAlwaysOnRed001
134094332d3Sopenharmony_ci  * @tc.desc: The power indicator is steady red.
135094332d3Sopenharmony_ci  * @tc.type: FUNC
136094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
137094332d3Sopenharmony_ci  */
138094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryAlwaysOnRed001, TestSize.Level1)
139094332d3Sopenharmony_ci{
140094332d3Sopenharmony_ci    TEST_FUNC_IN;
141094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
142094332d3Sopenharmony_ci
143094332d3Sopenharmony_ci    HdfLightEffect effect = {
144094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
145094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
146094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
147094332d3Sopenharmony_ci    };
148094332d3Sopenharmony_ci
149094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_NONE, effect);
150094332d3Sopenharmony_ci}
151094332d3Sopenharmony_ci
152094332d3Sopenharmony_ci/**
153094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryAlwaysOnGreen001
154094332d3Sopenharmony_ci  * @tc.desc: The power indicator is steady green.
155094332d3Sopenharmony_ci  * @tc.type: FUNC
156094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
157094332d3Sopenharmony_ci  */
158094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryAlwaysOnGreen001, TestSize.Level1)
159094332d3Sopenharmony_ci{
160094332d3Sopenharmony_ci    TEST_FUNC_IN;
161094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
162094332d3Sopenharmony_ci
163094332d3Sopenharmony_ci    HdfLightEffect effect = {
164094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
165094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
166094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
167094332d3Sopenharmony_ci    };
168094332d3Sopenharmony_ci
169094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_NONE, effect);
170094332d3Sopenharmony_ci}
171094332d3Sopenharmony_ci
172094332d3Sopenharmony_ci/**
173094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryAlwaysOnBlue001
174094332d3Sopenharmony_ci  * @tc.desc: The power indicator is steady blue.
175094332d3Sopenharmony_ci  * @tc.type: FUNC
176094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
177094332d3Sopenharmony_ci  */
178094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryAlwaysOnBlue001, TestSize.Level1)
179094332d3Sopenharmony_ci{
180094332d3Sopenharmony_ci    TEST_FUNC_IN;
181094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
182094332d3Sopenharmony_ci
183094332d3Sopenharmony_ci    HdfLightEffect effect = {
184094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
185094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
186094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
187094332d3Sopenharmony_ci    };
188094332d3Sopenharmony_ci
189094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_NONE, effect);
190094332d3Sopenharmony_ci}
191094332d3Sopenharmony_ci
192094332d3Sopenharmony_ci/**
193094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryAlwaysOnWhite001
194094332d3Sopenharmony_ci  * @tc.desc: The power indicator is steady white.
195094332d3Sopenharmony_ci  * @tc.type: FUNC
196094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
197094332d3Sopenharmony_ci  */
198094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryAlwaysOnWhite001, TestSize.Level1)
199094332d3Sopenharmony_ci{
200094332d3Sopenharmony_ci    TEST_FUNC_IN;
201094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
202094332d3Sopenharmony_ci
203094332d3Sopenharmony_ci    HdfLightEffect effect = {
204094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
205094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
206094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
207094332d3Sopenharmony_ci    };
208094332d3Sopenharmony_ci
209094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_NONE, effect);
210094332d3Sopenharmony_ci}
211094332d3Sopenharmony_ci
212094332d3Sopenharmony_ci/**
213094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryBlinkRed001
214094332d3Sopenharmony_ci  * @tc.desc: The power indicator is blinking red.
215094332d3Sopenharmony_ci  * @tc.type: FUNC
216094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
217094332d3Sopenharmony_ci  */
218094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryBlinkRed001, TestSize.Level1)
219094332d3Sopenharmony_ci{
220094332d3Sopenharmony_ci    TEST_FUNC_IN;
221094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
222094332d3Sopenharmony_ci
223094332d3Sopenharmony_ci    HdfLightEffect effect = {
224094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
225094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
226094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
227094332d3Sopenharmony_ci    };
228094332d3Sopenharmony_ci
229094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_BLINK, effect);
230094332d3Sopenharmony_ci}
231094332d3Sopenharmony_ci
232094332d3Sopenharmony_ci/**
233094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryBlinkGreen001
234094332d3Sopenharmony_ci  * @tc.desc: The power indicator is blinking green.
235094332d3Sopenharmony_ci  * @tc.type: FUNC
236094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
237094332d3Sopenharmony_ci  */
238094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryBlinkGreen001, TestSize.Level1)
239094332d3Sopenharmony_ci{
240094332d3Sopenharmony_ci    TEST_FUNC_IN;
241094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
242094332d3Sopenharmony_ci
243094332d3Sopenharmony_ci    HdfLightEffect effect = {
244094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
245094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
246094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
247094332d3Sopenharmony_ci    };
248094332d3Sopenharmony_ci
249094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_BLINK, effect);
250094332d3Sopenharmony_ci}
251094332d3Sopenharmony_ci
252094332d3Sopenharmony_ci/**
253094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryBlinkBlue001
254094332d3Sopenharmony_ci  * @tc.desc: The power indicator is blinking blue.
255094332d3Sopenharmony_ci  * @tc.type: FUNC
256094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
257094332d3Sopenharmony_ci  */
258094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryBlinkBlue001, TestSize.Level1)
259094332d3Sopenharmony_ci{
260094332d3Sopenharmony_ci    HDF_LOGI("%{public}s in", testing::UnitTest::GetInstance()->current_test_info()->name());
261094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
262094332d3Sopenharmony_ci
263094332d3Sopenharmony_ci    HdfLightEffect effect = {
264094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
265094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
266094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
267094332d3Sopenharmony_ci    };
268094332d3Sopenharmony_ci
269094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_BLINK, effect);
270094332d3Sopenharmony_ci}
271094332d3Sopenharmony_ci
272094332d3Sopenharmony_ci/**
273094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryBlinkWhite001
274094332d3Sopenharmony_ci  * @tc.desc: The power indicator is blinking white.
275094332d3Sopenharmony_ci  * @tc.type: FUNC
276094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
277094332d3Sopenharmony_ci  */
278094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryBlinkWhite001, TestSize.Level1)
279094332d3Sopenharmony_ci{
280094332d3Sopenharmony_ci    TEST_FUNC_IN;
281094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
282094332d3Sopenharmony_ci
283094332d3Sopenharmony_ci    HdfLightEffect effect = {
284094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
285094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
286094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
287094332d3Sopenharmony_ci    };
288094332d3Sopenharmony_ci
289094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_BLINK, effect);
290094332d3Sopenharmony_ci}
291094332d3Sopenharmony_ci
292094332d3Sopenharmony_ci/**
293094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryGradientRed001
294094332d3Sopenharmony_ci  * @tc.desc: The power indicator red light gradients.
295094332d3Sopenharmony_ci  * @tc.type: FUNC
296094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
297094332d3Sopenharmony_ci  */
298094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryGradientRed001, TestSize.Level1)
299094332d3Sopenharmony_ci{
300094332d3Sopenharmony_ci    TEST_FUNC_IN;
301094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
302094332d3Sopenharmony_ci
303094332d3Sopenharmony_ci    HdfLightEffect effect = {
304094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
305094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
306094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
307094332d3Sopenharmony_ci    };
308094332d3Sopenharmony_ci
309094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_GRADIENT, effect);
310094332d3Sopenharmony_ci}
311094332d3Sopenharmony_ci
312094332d3Sopenharmony_ci/**
313094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryGradientGreen001
314094332d3Sopenharmony_ci  * @tc.desc: The power indicator green light gradients.
315094332d3Sopenharmony_ci  * @tc.type: FUNC
316094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
317094332d3Sopenharmony_ci  */
318094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryGradientGreen001, TestSize.Level1)
319094332d3Sopenharmony_ci{
320094332d3Sopenharmony_ci    TEST_FUNC_IN;
321094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
322094332d3Sopenharmony_ci
323094332d3Sopenharmony_ci    HdfLightEffect effect = {
324094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
325094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
326094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
327094332d3Sopenharmony_ci    };
328094332d3Sopenharmony_ci
329094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_GRADIENT, effect);
330094332d3Sopenharmony_ci}
331094332d3Sopenharmony_ci
332094332d3Sopenharmony_ci/**
333094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryGradientBlue001
334094332d3Sopenharmony_ci  * @tc.desc: The power indicator blue light gradients.
335094332d3Sopenharmony_ci  * @tc.type: FUNC
336094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
337094332d3Sopenharmony_ci  */
338094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryGradientBlue001, TestSize.Level1)
339094332d3Sopenharmony_ci{
340094332d3Sopenharmony_ci    TEST_FUNC_IN;
341094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
342094332d3Sopenharmony_ci
343094332d3Sopenharmony_ci    HdfLightEffect effect = {
344094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
345094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
346094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
347094332d3Sopenharmony_ci    };
348094332d3Sopenharmony_ci
349094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_GRADIENT, effect);
350094332d3Sopenharmony_ci}
351094332d3Sopenharmony_ci
352094332d3Sopenharmony_ci/**
353094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBatteryGradientWhite001
354094332d3Sopenharmony_ci  * @tc.desc: The power indicator white light gradients.
355094332d3Sopenharmony_ci  * @tc.type: FUNC
356094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
357094332d3Sopenharmony_ci  */
358094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBatteryGradientWhite001, TestSize.Level1)
359094332d3Sopenharmony_ci{
360094332d3Sopenharmony_ci    TEST_FUNC_IN;
361094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
362094332d3Sopenharmony_ci
363094332d3Sopenharmony_ci    HdfLightEffect effect = {
364094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
365094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
366094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
367094332d3Sopenharmony_ci    };
368094332d3Sopenharmony_ci
369094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_BATTERY, HDF_LIGHT_FLASH_GRADIENT, effect);
370094332d3Sopenharmony_ci}
371094332d3Sopenharmony_ci
372094332d3Sopenharmony_ci/**
373094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsAlwaysOnRed001
374094332d3Sopenharmony_ci  * @tc.desc: The notification light is steady red.
375094332d3Sopenharmony_ci  * @tc.type: FUNC
376094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
377094332d3Sopenharmony_ci  */
378094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsAlwaysOnRed001, TestSize.Level1)
379094332d3Sopenharmony_ci{
380094332d3Sopenharmony_ci    TEST_FUNC_IN;
381094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
382094332d3Sopenharmony_ci
383094332d3Sopenharmony_ci    HdfLightEffect effect = {
384094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
385094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
386094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
387094332d3Sopenharmony_ci    };
388094332d3Sopenharmony_ci
389094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_NONE, effect);
390094332d3Sopenharmony_ci}
391094332d3Sopenharmony_ci
392094332d3Sopenharmony_ci/**
393094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsAlwaysOnGreen001
394094332d3Sopenharmony_ci  * @tc.desc: The notification light is steady green.
395094332d3Sopenharmony_ci  * @tc.type: FUNC
396094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
397094332d3Sopenharmony_ci  */
398094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsAlwaysOnGreen001, TestSize.Level1)
399094332d3Sopenharmony_ci{
400094332d3Sopenharmony_ci    TEST_FUNC_IN;
401094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
402094332d3Sopenharmony_ci
403094332d3Sopenharmony_ci    HdfLightEffect effect = {
404094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
405094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
406094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
407094332d3Sopenharmony_ci    };
408094332d3Sopenharmony_ci
409094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_NONE, effect);
410094332d3Sopenharmony_ci}
411094332d3Sopenharmony_ci
412094332d3Sopenharmony_ci/**
413094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsAlwaysOnBlue001
414094332d3Sopenharmony_ci  * @tc.desc: The notification light is steady blue.
415094332d3Sopenharmony_ci  * @tc.type: FUNC
416094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
417094332d3Sopenharmony_ci  */
418094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsAlwaysOnBlue001, TestSize.Level1)
419094332d3Sopenharmony_ci{
420094332d3Sopenharmony_ci    TEST_FUNC_IN;
421094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
422094332d3Sopenharmony_ci
423094332d3Sopenharmony_ci    HdfLightEffect effect = {
424094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
425094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
426094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
427094332d3Sopenharmony_ci    };
428094332d3Sopenharmony_ci
429094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_NONE, effect);
430094332d3Sopenharmony_ci}
431094332d3Sopenharmony_ci
432094332d3Sopenharmony_ci/**
433094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsAlwaysOnWhite001
434094332d3Sopenharmony_ci  * @tc.desc: The notification light is steady white.
435094332d3Sopenharmony_ci  * @tc.type: FUNC
436094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
437094332d3Sopenharmony_ci  */
438094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsAlwaysOnWhite001, TestSize.Level1)
439094332d3Sopenharmony_ci{
440094332d3Sopenharmony_ci    TEST_FUNC_IN;
441094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
442094332d3Sopenharmony_ci
443094332d3Sopenharmony_ci    HdfLightEffect effect = {
444094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
445094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
446094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
447094332d3Sopenharmony_ci    };
448094332d3Sopenharmony_ci
449094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_NONE, effect);
450094332d3Sopenharmony_ci}
451094332d3Sopenharmony_ci
452094332d3Sopenharmony_ci/**
453094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsBlinkRed001
454094332d3Sopenharmony_ci  * @tc.desc: Notification light blinking red.
455094332d3Sopenharmony_ci  * @tc.type: FUNC
456094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
457094332d3Sopenharmony_ci  */
458094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsBlinkRed001, TestSize.Level1)
459094332d3Sopenharmony_ci{
460094332d3Sopenharmony_ci    TEST_FUNC_IN;
461094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
462094332d3Sopenharmony_ci
463094332d3Sopenharmony_ci    HdfLightEffect effect = {
464094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
465094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
466094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
467094332d3Sopenharmony_ci    };
468094332d3Sopenharmony_ci
469094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_BLINK, effect);
470094332d3Sopenharmony_ci}
471094332d3Sopenharmony_ci
472094332d3Sopenharmony_ci/**
473094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsBlinkGreen001
474094332d3Sopenharmony_ci  * @tc.desc: Notification light blinking green.
475094332d3Sopenharmony_ci  * @tc.type: FUNC
476094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
477094332d3Sopenharmony_ci  */
478094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsBlinkGreen001, TestSize.Level1)
479094332d3Sopenharmony_ci{
480094332d3Sopenharmony_ci    TEST_FUNC_IN;
481094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
482094332d3Sopenharmony_ci
483094332d3Sopenharmony_ci    HdfLightEffect effect = {
484094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
485094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
486094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
487094332d3Sopenharmony_ci    };
488094332d3Sopenharmony_ci
489094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_BLINK, effect);
490094332d3Sopenharmony_ci}
491094332d3Sopenharmony_ci
492094332d3Sopenharmony_ci/**
493094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsBlinkBlue001
494094332d3Sopenharmony_ci  * @tc.desc: Notification light blinking blue.
495094332d3Sopenharmony_ci  * @tc.type: FUNC
496094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
497094332d3Sopenharmony_ci  */
498094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsBlinkBlue001, TestSize.Level1)
499094332d3Sopenharmony_ci{
500094332d3Sopenharmony_ci    TEST_FUNC_IN;
501094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
502094332d3Sopenharmony_ci
503094332d3Sopenharmony_ci    HdfLightEffect effect = {
504094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
505094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
506094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
507094332d3Sopenharmony_ci    };
508094332d3Sopenharmony_ci
509094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_BLINK, effect);
510094332d3Sopenharmony_ci}
511094332d3Sopenharmony_ci
512094332d3Sopenharmony_ci/**
513094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsBlinkWhite001
514094332d3Sopenharmony_ci  * @tc.desc: Notification light blinking white.
515094332d3Sopenharmony_ci  * @tc.type: FUNC
516094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
517094332d3Sopenharmony_ci  */
518094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsBlinkWhite001, TestSize.Level1)
519094332d3Sopenharmony_ci{
520094332d3Sopenharmony_ci    TEST_FUNC_IN;
521094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
522094332d3Sopenharmony_ci
523094332d3Sopenharmony_ci    HdfLightEffect effect = {
524094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
525094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
526094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
527094332d3Sopenharmony_ci    };
528094332d3Sopenharmony_ci
529094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_BLINK, effect);
530094332d3Sopenharmony_ci}
531094332d3Sopenharmony_ci
532094332d3Sopenharmony_ci/**
533094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsGradientRed001
534094332d3Sopenharmony_ci  * @tc.desc: Notification light gradient red.
535094332d3Sopenharmony_ci  * @tc.type: FUNC
536094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
537094332d3Sopenharmony_ci  */
538094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsGradientRed001, TestSize.Level1)
539094332d3Sopenharmony_ci{
540094332d3Sopenharmony_ci    TEST_FUNC_IN;
541094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
542094332d3Sopenharmony_ci
543094332d3Sopenharmony_ci    HdfLightEffect effect = {
544094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
545094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
546094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
547094332d3Sopenharmony_ci    };
548094332d3Sopenharmony_ci
549094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_GRADIENT, effect);
550094332d3Sopenharmony_ci}
551094332d3Sopenharmony_ci
552094332d3Sopenharmony_ci/**
553094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsGradientGreen001
554094332d3Sopenharmony_ci  * @tc.desc: Notification light gradient green.
555094332d3Sopenharmony_ci  * @tc.type: FUNC
556094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
557094332d3Sopenharmony_ci  */
558094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsGradientGreen001, TestSize.Level1)
559094332d3Sopenharmony_ci{
560094332d3Sopenharmony_ci    TEST_FUNC_IN;
561094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
562094332d3Sopenharmony_ci
563094332d3Sopenharmony_ci    HdfLightEffect effect = {
564094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
565094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
566094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
567094332d3Sopenharmony_ci    };
568094332d3Sopenharmony_ci
569094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_GRADIENT, effect);
570094332d3Sopenharmony_ci}
571094332d3Sopenharmony_ci
572094332d3Sopenharmony_ci/**
573094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsGradientBlue001
574094332d3Sopenharmony_ci  * @tc.desc: Notification light gradient blue.
575094332d3Sopenharmony_ci  * @tc.type: FUNC
576094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
577094332d3Sopenharmony_ci  */
578094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsGradientBlue001, TestSize.Level1)
579094332d3Sopenharmony_ci{
580094332d3Sopenharmony_ci    TEST_FUNC_IN;
581094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
582094332d3Sopenharmony_ci
583094332d3Sopenharmony_ci    HdfLightEffect effect = {
584094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 0,
585094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
586094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
587094332d3Sopenharmony_ci    };
588094332d3Sopenharmony_ci
589094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_GRADIENT, effect);
590094332d3Sopenharmony_ci}
591094332d3Sopenharmony_ci
592094332d3Sopenharmony_ci/**
593094332d3Sopenharmony_ci  * @tc.name: TurnOnLightNotificationsGradientWhite001
594094332d3Sopenharmony_ci  * @tc.desc: Notification light gradient white.
595094332d3Sopenharmony_ci  * @tc.type: FUNC
596094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
597094332d3Sopenharmony_ci  */
598094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightNotificationsGradientWhite001, TestSize.Level1)
599094332d3Sopenharmony_ci{
600094332d3Sopenharmony_ci    TEST_FUNC_IN;
601094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
602094332d3Sopenharmony_ci
603094332d3Sopenharmony_ci    HdfLightEffect effect = {
604094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
605094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
606094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
607094332d3Sopenharmony_ci    };
608094332d3Sopenharmony_ci
609094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_NOTIFICATIONS, HDF_LIGHT_FLASH_GRADIENT, effect);
610094332d3Sopenharmony_ci}
611094332d3Sopenharmony_ci
612094332d3Sopenharmony_ci/**
613094332d3Sopenharmony_ci  * @tc.name: TurnOnLightAttention001
614094332d3Sopenharmony_ci  * @tc.desc: The reserved indicator is not supported currently.
615094332d3Sopenharmony_ci  * @tc.type: FUNC
616094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
617094332d3Sopenharmony_ci  */
618094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightAttention001, TestSize.Level1)
619094332d3Sopenharmony_ci{
620094332d3Sopenharmony_ci    TEST_FUNC_IN;
621094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
622094332d3Sopenharmony_ci
623094332d3Sopenharmony_ci    HdfLightEffect effect = {
624094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
625094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 0,
626094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 0,
627094332d3Sopenharmony_ci    };
628094332d3Sopenharmony_ci
629094332d3Sopenharmony_ci    LightTest(HDF_LIGHT_ID_ATTENTION, HDF_LIGHT_FLASH_NONE, effect);
630094332d3Sopenharmony_ci}
631094332d3Sopenharmony_ci
632094332d3Sopenharmony_ci/**
633094332d3Sopenharmony_ci  * @tc.name: TurnOnMultiLights001
634094332d3Sopenharmony_ci  * @tc.desc: Turn on multiple lights.
635094332d3Sopenharmony_ci  * @tc.type: FUNC
636094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
637094332d3Sopenharmony_ci  */
638094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnMultiLights001, TestSize.Level1)
639094332d3Sopenharmony_ci{
640094332d3Sopenharmony_ci    TEST_FUNC_IN;
641094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
642094332d3Sopenharmony_ci
643094332d3Sopenharmony_ci    int32_t lightId = HDF_LIGHT_ID_NOTIFICATIONS;
644094332d3Sopenharmony_ci    struct HdfLightColor color = {
645094332d3Sopenharmony_ci        .colorValue.rgbColor.r = 255,
646094332d3Sopenharmony_ci        .colorValue.rgbColor.g = 255,
647094332d3Sopenharmony_ci        .colorValue.rgbColor.b = 255,
648094332d3Sopenharmony_ci    };
649094332d3Sopenharmony_ci    std::vector<HdfLightColor> lightColor;
650094332d3Sopenharmony_ci    lightColor.push_back(color);
651094332d3Sopenharmony_ci
652094332d3Sopenharmony_ci    int32_t ret = IsSupportedLightId(lightId);
653094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
654094332d3Sopenharmony_ci
655094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOnMultiLights(lightId, lightColor);
656094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
657094332d3Sopenharmony_ci
658094332d3Sopenharmony_ci    OsalSleep(g_sleepTime);
659094332d3Sopenharmony_ci
660094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOffLight(lightId);
661094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
662094332d3Sopenharmony_ci}
663094332d3Sopenharmony_ci
664094332d3Sopenharmony_ci/**
665094332d3Sopenharmony_ci  * @tc.name: TurnOnMultiLights002
666094332d3Sopenharmony_ci  * @tc.desc: Turn on multiple lights.
667094332d3Sopenharmony_ci  * @tc.type: FUNC
668094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
669094332d3Sopenharmony_ci  */
670094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnMultiLights002, TestSize.Level1)
671094332d3Sopenharmony_ci{
672094332d3Sopenharmony_ci    TEST_FUNC_IN;
673094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
674094332d3Sopenharmony_ci
675094332d3Sopenharmony_ci    int32_t lightId = HDF_LIGHT_ID_BATTERY;
676094332d3Sopenharmony_ci    struct HdfLightColor color1 = {
677094332d3Sopenharmony_ci        .colorValue.rgbColor.r = 255,
678094332d3Sopenharmony_ci        .colorValue.rgbColor.g = 255,
679094332d3Sopenharmony_ci        .colorValue.rgbColor.b = 255,
680094332d3Sopenharmony_ci    };
681094332d3Sopenharmony_ci    struct HdfLightColor color2 = {
682094332d3Sopenharmony_ci        .colorValue.rgbColor.r = 255,
683094332d3Sopenharmony_ci        .colorValue.rgbColor.g = 255,
684094332d3Sopenharmony_ci        .colorValue.rgbColor.b = 0,
685094332d3Sopenharmony_ci    };
686094332d3Sopenharmony_ci    std::vector<HdfLightColor> lightColor;
687094332d3Sopenharmony_ci    lightColor.push_back(color1);
688094332d3Sopenharmony_ci    lightColor.push_back(color2);
689094332d3Sopenharmony_ci
690094332d3Sopenharmony_ci    int32_t ret = IsSupportedLightId(lightId);
691094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
692094332d3Sopenharmony_ci
693094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOnMultiLights(lightId, lightColor);
694094332d3Sopenharmony_ci    EXPECT_EQ(HDF_ERR_INVALID_PARAM, ret);
695094332d3Sopenharmony_ci
696094332d3Sopenharmony_ci    OsalSleep(g_sleepTime);
697094332d3Sopenharmony_ci
698094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOffLight(lightId);
699094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
700094332d3Sopenharmony_ci}
701094332d3Sopenharmony_ci
702094332d3Sopenharmony_ci/**
703094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBlinkException001
704094332d3Sopenharmony_ci  * @tc.desc: The ontime setting is abnormal in blinking mode.
705094332d3Sopenharmony_ci  * @tc.type: FUNC
706094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
707094332d3Sopenharmony_ci  */
708094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBlinkException001, TestSize.Level1)
709094332d3Sopenharmony_ci{
710094332d3Sopenharmony_ci    TEST_FUNC_IN;
711094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
712094332d3Sopenharmony_ci
713094332d3Sopenharmony_ci    int32_t lightId = HDF_LIGHT_ID_NOTIFICATIONS;
714094332d3Sopenharmony_ci    HdfLightEffect effect = {
715094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
716094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
717094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
718094332d3Sopenharmony_ci        .flashEffect.onTime = -1,
719094332d3Sopenharmony_ci        .flashEffect.offTime = OFF_TIME,
720094332d3Sopenharmony_ci        .flashEffect.flashMode = HDF_LIGHT_FLASH_BLINK,
721094332d3Sopenharmony_ci    };
722094332d3Sopenharmony_ci
723094332d3Sopenharmony_ci    int32_t ret = IsSupportedLightId(lightId);
724094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
725094332d3Sopenharmony_ci
726094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOnLight(lightId, effect);
727094332d3Sopenharmony_ci    EXPECT_EQ(HDF_ERR_INVALID_PARAM, ret);
728094332d3Sopenharmony_ci
729094332d3Sopenharmony_ci    OsalSleep(g_sleepTime);
730094332d3Sopenharmony_ci
731094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOffLight(lightId);
732094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
733094332d3Sopenharmony_ci}
734094332d3Sopenharmony_ci
735094332d3Sopenharmony_ci/**
736094332d3Sopenharmony_ci  * @tc.name: TurnOnLightBlinkException002
737094332d3Sopenharmony_ci  * @tc.desc: The offtime setting is abnormal in blinking mode.
738094332d3Sopenharmony_ci  * @tc.type: FUNC
739094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
740094332d3Sopenharmony_ci  */
741094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightBlinkException002, TestSize.Level1)
742094332d3Sopenharmony_ci{
743094332d3Sopenharmony_ci    TEST_FUNC_IN;
744094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
745094332d3Sopenharmony_ci
746094332d3Sopenharmony_ci    int32_t lightId = HDF_LIGHT_ID_NOTIFICATIONS;
747094332d3Sopenharmony_ci    HdfLightEffect effect = {
748094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
749094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
750094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
751094332d3Sopenharmony_ci        .flashEffect.onTime = ON_TIME,
752094332d3Sopenharmony_ci        .flashEffect.offTime = -1,
753094332d3Sopenharmony_ci        .flashEffect.flashMode = HDF_LIGHT_FLASH_BLINK,
754094332d3Sopenharmony_ci    };
755094332d3Sopenharmony_ci
756094332d3Sopenharmony_ci    int32_t ret = IsSupportedLightId(lightId);
757094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
758094332d3Sopenharmony_ci
759094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOnLight(lightId, effect);
760094332d3Sopenharmony_ci    EXPECT_EQ(HDF_ERR_INVALID_PARAM, ret);
761094332d3Sopenharmony_ci
762094332d3Sopenharmony_ci    OsalSleep(g_sleepTime);
763094332d3Sopenharmony_ci
764094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOffLight(lightId);
765094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
766094332d3Sopenharmony_ci}
767094332d3Sopenharmony_ci
768094332d3Sopenharmony_ci/**
769094332d3Sopenharmony_ci  * @tc.name: TurnOnLightGradientException001
770094332d3Sopenharmony_ci  * @tc.desc: The ontime setting is abnormal in gradient mode.
771094332d3Sopenharmony_ci  * @tc.type: FUNC
772094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
773094332d3Sopenharmony_ci  */
774094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightGradientException001, TestSize.Level1)
775094332d3Sopenharmony_ci{
776094332d3Sopenharmony_ci    TEST_FUNC_IN;
777094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
778094332d3Sopenharmony_ci
779094332d3Sopenharmony_ci    int32_t lightId = HDF_LIGHT_ID_NOTIFICATIONS;
780094332d3Sopenharmony_ci    HdfLightEffect effect = {
781094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
782094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
783094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
784094332d3Sopenharmony_ci        .flashEffect.onTime = -1,
785094332d3Sopenharmony_ci        .flashEffect.offTime = OFF_TIME,
786094332d3Sopenharmony_ci        .flashEffect.flashMode = HDF_LIGHT_FLASH_GRADIENT,
787094332d3Sopenharmony_ci    };
788094332d3Sopenharmony_ci
789094332d3Sopenharmony_ci    int32_t ret = IsSupportedLightId(lightId);
790094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
791094332d3Sopenharmony_ci
792094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOnLight(lightId, effect);
793094332d3Sopenharmony_ci    EXPECT_EQ(HDF_ERR_INVALID_PARAM, ret);
794094332d3Sopenharmony_ci
795094332d3Sopenharmony_ci    OsalSleep(g_sleepTime);
796094332d3Sopenharmony_ci
797094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOffLight(lightId);
798094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
799094332d3Sopenharmony_ci}
800094332d3Sopenharmony_ci
801094332d3Sopenharmony_ci/**
802094332d3Sopenharmony_ci  * @tc.name: TurnOnLightGradientException002
803094332d3Sopenharmony_ci  * @tc.desc: The offtime setting is abnormal in gradient mode.
804094332d3Sopenharmony_ci  * @tc.type: FUNC
805094332d3Sopenharmony_ci  * @tc.require: #IAU5KS
806094332d3Sopenharmony_ci  */
807094332d3Sopenharmony_ciHWTEST_F(HdiUnitTestLight, TurnOnLightGradientException002, TestSize.Level1)
808094332d3Sopenharmony_ci{
809094332d3Sopenharmony_ci    TEST_FUNC_IN;
810094332d3Sopenharmony_ci    ASSERT_NE(nullptr, g_lightInterface);
811094332d3Sopenharmony_ci
812094332d3Sopenharmony_ci    int32_t lightId = HDF_LIGHT_ID_NOTIFICATIONS;
813094332d3Sopenharmony_ci    HdfLightEffect effect = {
814094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.r = 255,
815094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.g = 255,
816094332d3Sopenharmony_ci        .lightColor.colorValue.rgbColor.b = 255,
817094332d3Sopenharmony_ci        .flashEffect.onTime = ON_TIME,
818094332d3Sopenharmony_ci        .flashEffect.offTime = -1,
819094332d3Sopenharmony_ci        .flashEffect.flashMode = HDF_LIGHT_FLASH_GRADIENT,
820094332d3Sopenharmony_ci    };
821094332d3Sopenharmony_ci
822094332d3Sopenharmony_ci    int32_t ret = IsSupportedLightId(lightId);
823094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
824094332d3Sopenharmony_ci
825094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOnLight(lightId, effect);
826094332d3Sopenharmony_ci    EXPECT_EQ(HDF_ERR_INVALID_PARAM, ret);
827094332d3Sopenharmony_ci
828094332d3Sopenharmony_ci    OsalSleep(g_sleepTime);
829094332d3Sopenharmony_ci
830094332d3Sopenharmony_ci    ret = g_lightInterface->TurnOffLight(lightId);
831094332d3Sopenharmony_ci    EXPECT_EQ(HDF_SUCCESS, ret);
832094332d3Sopenharmony_ci}
833