• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 <cmath>
17 #include <cstdio>
18 #include <gtest/gtest.h>
19 #include <securec.h>
20 #include "hdf_base.h"
21 #include "osal_time.h"
22 #include "osal_mem.h"
23 #include "light_if.h"
24 #include "light_type.h"
25 
26 using namespace testing::ext;
27 
28 namespace {
29     const struct LightInterface *g_lightDev = nullptr;
30     static struct LightInfo *g_lightInfo = nullptr;
31     static uint32_t g_count = 0;
32     const int32_t g_onTime = 500;
33     const int32_t g_offTime = 500;
34     const int32_t LIGHT_WAIT_TIME = 3;
35     const int32_t g_minLightId = LIGHT_ID_NONE;
36     const int32_t g_maxLightId = LIGHT_ID_BUTT;
37 }
38 
39 class HdfLightTest : public testing::Test {
40 public:
41     static void SetUpTestCase();
42     static void TearDownTestCase();
43     void SetUp();
44     void TearDown();
45 };
46 
SetUpTestCase()47 void HdfLightTest::SetUpTestCase()
48 {
49     g_lightDev = NewLightInterfaceInstance();
50     if (g_lightDev == nullptr) {
51         printf("test light get Module instance failed\n\r");
52     }
53     int32_t ret = g_lightDev->GetLightInfo(&g_lightInfo, &g_count);
54     if (ret == HDF_FAILURE) {
55         printf("get light information failed\n\r");
56     }
57 }
58 
TearDownTestCase()59 void HdfLightTest::TearDownTestCase()
60 {
61     if (g_lightDev != nullptr) {
62         FreeLightInterfaceInstance();
63         g_lightDev = nullptr;
64     }
65 }
66 
SetUp()67 void HdfLightTest::SetUp()
68 {
69 }
70 
TearDown()71 void HdfLightTest::TearDown()
72 {
73 }
74 
75 /**
76   * @tc.name: CheckLightInstanceIsEmpty
77   * @tc.desc: Creat a light instance. The instance is not empty.
78   * @tc.type: FUNC
79   */
80 HWTEST_F(HdfLightTest, SUB_DriverSystem_LightHdi_0010, Function | MediumTest | Level1)
81 {
82     ASSERT_NE(nullptr, g_lightDev);
83 }
84 
85 /**
86   * @tc.name: GetLightList001
87   * @tc.desc: Obtains information about all lights in the system. Validity check of input parameters.
88   * @tc.type: FUNC
89   */
90 HWTEST_F(HdfLightTest, SUB_DriverSystem_LightHdi_0100, Function | MediumTest | Level1)
91 {
92     struct LightInfo *info = nullptr;
93 
94     if (g_lightInfo == nullptr) {
95         EXPECT_NE(nullptr, g_lightInfo);
96         return;
97     }
98 
99     printf("get light list num[%d]\n\r", g_count);
100     info = g_lightInfo;
101 
102     for (int i = 0; i < g_count; ++i) {
103         printf("get lightId[%d]\n\r", info->lightId);
104         EXPECT_GE(info->lightId, g_minLightId);
105         EXPECT_LE(info->lightId, g_maxLightId);
106         info++;
107     }
108 }
109 
110 /**
111   * @tc.name: GetLightList002
112   * @tc.desc: Obtains information about all lights in the system. Validity check of input parameters.
113   * @tc.type: FUNC
114   */
115 HWTEST_F(HdfLightTest, SUB_DriverSystem_LightHdi_0110 , Function | MediumTest | Level1)
116 {
117     int32_t ret = g_lightDev->GetLightInfo(nullptr, &g_count);
118     EXPECT_EQ(HDF_FAILURE, ret);
119     ret = g_lightDev->GetLightInfo(&g_lightInfo, nullptr);
120     EXPECT_EQ(HDF_FAILURE, ret);
121     ret = g_lightDev->GetLightInfo(nullptr, nullptr);
122     EXPECT_EQ(HDF_FAILURE, ret);
123 }
124 
125 /**
126   * @tc.name: EnableLight001
127   * @tc.desc: Enables the light available in the light list based on the specified light id.
128   * @tc.type: FUNC
129   */
130 HWTEST_F(HdfLightTest, SUB_DriverSystem_LightHdi_0120, Function | MediumTest | Level1)
131 {
132     int32_t i;
133     int32_t ret;
134     struct LightEffect effect;
135     effect.lightColor.colorValue.rgbColor.r = 255;
136     effect.lightColor.colorValue.rgbColor.g = 0;
137     effect.lightColor.colorValue.rgbColor.b = 0;
138     effect.flashEffect.flashMode = LIGHT_FLASH_NONE;
139     effect.flashEffect.onTime = 0;
140     effect.flashEffect.offTime = 0;
141 
142     for (i = 0; i < g_count; ++i) {
143         ret = g_lightDev->TurnOnLight(g_lightInfo[i].lightId, &effect);
144         EXPECT_EQ(0, ret);
145 
146         OsalSleep(LIGHT_WAIT_TIME);
147 
148         ret = g_lightDev->TurnOffLight(g_lightInfo[i].lightId);
149         EXPECT_EQ(0, ret);
150     }
151 }
152 
153 /**
154   * @tc.name: EnableLight002
155   * @tc.desc: Enables the light available in the light list based on the specified light id.
156   * @tc.type: FUNC
157   */
158 HWTEST_F(HdfLightTest, SUB_DriverSystem_LightHdi_0130, Function | MediumTest | Level1)
159 {
160     int32_t i;
161     int32_t ret;
162     struct LightEffect effect;
163     effect.lightColor.colorValue.rgbColor.r = 255;
164     effect.lightColor.colorValue.rgbColor.g = 0;
165     effect.lightColor.colorValue.rgbColor.b = 0;
166     effect.flashEffect.flashMode = LIGHT_FLASH_BLINK;
167     effect.flashEffect.onTime = g_onTime;
168     effect.flashEffect.offTime = g_offTime;
169 
170     for (i = 0; i < g_count; ++i) {
171         ret = g_lightDev->TurnOnLight(g_lightInfo[i].lightId, &effect);
172         EXPECT_EQ(0, ret);
173 
174         OsalSleep(LIGHT_WAIT_TIME);
175 
176         ret = g_lightDev->TurnOffLight(g_lightInfo[i].lightId);
177         EXPECT_EQ(0, ret);
178     }
179 }
180 
181 /**
182   * @tc.name: EnableLight003
183   * @tc.desc: Enables the light available in the light list based on the specified light id.
184   * @tc.type: FUNC
185   */
186 HWTEST_F(HdfLightTest, SUB_DriverSystem_LightHdi_0140, Function | MediumTest | Level1)
187 {
188     int32_t i;
189     int32_t ret;
190     uint32_t lightId = LIGHT_ID_BUTT;
191     struct LightEffect effect;
192 
193     ret = g_lightDev->TurnOnLight(lightId, &effect);
194     EXPECT_EQ(LIGHT_NOT_SUPPORT, ret);
195 
196     for (i = 0; i < g_count; ++i) {
197         effect.lightColor.colorValue.rgbColor.r = 255;
198         effect.lightColor.colorValue.rgbColor.g = 0;
199         effect.lightColor.colorValue.rgbColor.b = 0;
200         effect.flashEffect.flashMode = LIGHT_FLASH_BUTT;
201         effect.flashEffect.onTime = g_onTime;
202         effect.flashEffect.offTime = g_offTime;
203 
204         ret = g_lightDev->TurnOnLight(g_lightInfo[i].lightId, &effect);
205         EXPECT_EQ(LIGHT_NOT_FLASH, ret);
206 
207         effect.flashEffect.flashMode = LIGHT_FLASH_BLINK;
208         effect.flashEffect.onTime = 0;
209         ret = g_lightDev->TurnOnLight(g_lightInfo[i].lightId, &effect);
210         EXPECT_EQ(LIGHT_NOT_FLASH, ret);
211 
212         effect.flashEffect.onTime = g_onTime;
213         effect.flashEffect.offTime = 0;
214         ret = g_lightDev->TurnOnLight(g_lightInfo[i].lightId, &effect);
215         EXPECT_EQ(LIGHT_NOT_FLASH, ret);
216     }
217 }
218 
219 /**
220   * @tc.name: DisableLight001
221   * @tc.desc: Disable the light available in the light list based on the specified light id.
222   * @tc.type: FUNC
223   */
224 HWTEST_F(HdfLightTest, SUB_DriverSystem_LightHdi_0150, Function | MediumTest | Level1)
225 {
226     uint32_t lightId = LIGHT_ID_BUTT;
227 
228     int32_t ret = g_lightDev->TurnOffLight(lightId);
229     EXPECT_EQ(HDF_FAILURE, ret);
230 }
231