• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file expected 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 #include "hdi_host_uttest.h"
16 
17 using namespace OHOS;
18 using namespace std;
19 using namespace testing::ext;
20 using namespace OHOS::Camera;
21 
SetUpTestCase(void)22 void HdiHostUtTest::SetUpTestCase(void) {}
TearDownTestCase(void)23 void HdiHostUtTest::TearDownTestCase(void) {}
SetUp(void)24 void HdiHostUtTest::SetUp(void)
25 {
26     cameraTest = std::make_shared<OHOS::Camera::HdiCommon>();
27     cameraTest->Init();
28     ASSERT_NE(cameraTest->service, nullptr);
29 }
30 
TearDown(void)31 void HdiHostUtTest::TearDown(void)
32 {
33     cameraTest->Close();
34 }
35 
36 /**
37  * @tc.name: GitCameraIds
38  * @tc.desc: CamRetCode GetCameraIds([out] String[] ipds)
39  * @tc.size: MediumTest
40  * @tc.type: Function
41  */
42 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_001, TestSize.Level1)
43 {
44     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
45     if (cameraTest->cameraDevice == nullptr) {
46         cameraTest->rc = cameraTest->service->GetCameraIds(cameraTest->cameraIds);
47         EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
48         EXPECT_LT(0, cameraTest->cameraIds.size());
49         CAMERA_LOGE("check hdi_host: cameraIds.size() = %{public}zu", cameraTest->cameraIds.size());
50     }
51 }
52 
53 /**
54  * @tc.name: GetCameraAbility
55  * @tc.desc: GetCameraAbility, abnormal cameraId = ''
56  * @tc.size: MediumTest
57  * @tc.type: Function
58  */
59 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_002, TestSize.Level1)
60 {
61     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
62     if (cameraTest->cameraDevice == nullptr) {
63         std::string testCameraId = "";
64         cameraTest->rc = cameraTest->service->GetCameraAbility(testCameraId, cameraTest->abilityVec);
65         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
66     }
67 }
68 
69 /**
70  * @tc.name: GetCameraAbility
71  * @tc.desc: GetCameraAbility, abnormal cameraId = ' '
72  * @tc.size: MediumTest
73  * @tc.type: Function
74  */
75 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_003, TestSize.Level1)
76 {
77     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
78     if (cameraTest->cameraDevice == nullptr) {
79         std::string testCameraId = "";
80         cameraTest->rc = cameraTest->service->GetCameraAbility(testCameraId, cameraTest->abilityVec);
81         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
82     }
83 }
84 
85 /**
86  * @tc.name: OpenCamera
87  * @tc.desc: OpenCamera, normal cameraId
88  * @tc.size: MediumTest
89  * @tc.type: Function
90  */
91 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_004, TestSize.Level1)
92 {
93     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
94     if (cameraTest->cameraDevice == nullptr) {
95         cameraTest->service->GetCameraIds(cameraTest->cameraIds);
96         cameraTest->deviceCallback = new OHOS::Camera::HdiCommon::DemoCameraDeviceCallback();
97         cameraTest->rc = cameraTest->service->OpenCamera(cameraTest->cameraIds.front(), cameraTest->deviceCallback,
98             cameraTest->cameraDevice);
99         EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
100         if (cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->cameraDevice == nullptr) {
101             CAMERA_LOGE("check hdi_host: OpenCamera failed");
102             GTEST_SKIP();
103         }
104     }
105 }
106 
107 /**
108  * @tc.name: OpenCamera
109  * @tc.desc: OpenCamera, cameraId is not found
110  * @tc.size: MediumTest
111  * @tc.type: Function
112  */
113 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_005, TestSize.Level1)
114 {
115     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
116     if (cameraTest->cameraDevice == nullptr) {
117         std::string testCameraId = "qwerty";
118         cameraTest->deviceCallback = new OHOS::Camera::HdiCommon::DemoCameraDeviceCallback();
119         cameraTest->rc = cameraTest->service->OpenCamera(testCameraId, cameraTest->deviceCallback,
120             cameraTest->cameraDevice);
121         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
122     }
123 }
124 
125 /**
126  * @tc.name: OpenCamera
127  * @tc.desc: OpenCamera, cameraId is illegal
128  * @tc.size: MediumTest
129  * @tc.type: Function
130  */
131 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_006, TestSize.Level1)
132 {
133     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
134     if (cameraTest->cameraDevice == nullptr) {
135         std::string testCameraId = "1";
136         cameraTest->deviceCallback = new OHOS::Camera::HdiCommon::DemoCameraDeviceCallback();
137         cameraTest->rc = cameraTest->service->OpenCamera(testCameraId, cameraTest->deviceCallback,
138             cameraTest->cameraDevice);
139         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
140     }
141 }
142 
143 /**
144  * @tc.name: OpenCamera cameraID & Callback input error
145  * @tc.desc: OpenCamera, cameraID is illegal, callback is null.
146  * @tc.size: MediumTest
147  * @tc.type: Function
148  */
149 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_007, TestSize.Level1)
150 {
151     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
152     if (cameraTest->cameraDevice == nullptr) {
153         std::string testCameraId = "1";
154         cameraTest->deviceCallback = nullptr;
155         cameraTest->rc = cameraTest->service->OpenCamera(testCameraId, cameraTest->deviceCallback,
156             cameraTest->cameraDevice);
157         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
158     }
159 }
160 
161 /**
162  * @tc.name: OpenCamera
163  * @tc.desc: OpenCamera, cameraId is empty
164  * @tc.size: MediumTest
165  * @tc.type: Function
166  */
167 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_008, TestSize.Level1)
168 {
169     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
170     if (cameraTest->cameraDevice == nullptr) {
171         std::string testCameraId = "";
172         cameraTest->deviceCallback = new OHOS::Camera::HdiCommon::DemoCameraDeviceCallback();
173         cameraTest->rc = cameraTest->service->OpenCamera(testCameraId, cameraTest->deviceCallback,
174             cameraTest->cameraDevice);
175         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
176     }
177 }
178 
179 /**
180  * @tc.name: OpenCamera cameraID & Callback input error
181  * @tc.desc: OpenCamera, cameraID is Empty, callback is null.
182  * @tc.size: MediumTest
183  * @tc.type: Function
184  */
185 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_009, TestSize.Level1)
186 {
187     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
188     if (cameraTest->cameraDevice == nullptr) {
189         std::string testCameraId = "";
190         cameraTest->deviceCallback = nullptr;
191         cameraTest->rc = cameraTest->service->OpenCamera(testCameraId, cameraTest->deviceCallback,
192             cameraTest->cameraDevice);
193         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
194     }
195 }
196 
197 /**
198  * @tc.name: OpenCamera
199  * @tc.desc: OpenCamera, callback is null
200  * @tc.size: MediumTest
201  * @tc.type: Function
202  */
203 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_010, TestSize.Level1)
204 {
205     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
206     if (cameraTest->cameraDevice == nullptr) {
207         cameraTest->service->GetCameraIds(cameraTest->cameraIds);
208         cameraTest->deviceCallback = nullptr;
209         cameraTest->rc = cameraTest->service->OpenCamera(cameraTest->cameraIds.front(), cameraTest->deviceCallback,
210             cameraTest->cameraDevice);
211         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
212     }
213 }
214 
215 /**
216  * @tc.name: OpenCamera
217  * @tc.desc: cameraId is not found, callback is null
218  * @tc.size: MediumTest
219  * @tc.type: Function
220  */
221 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_011, TestSize.Level1)
222 {
223     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
224     if (cameraTest->cameraDevice == nullptr) {
225         std::string testCameraId = "abc";
226         cameraTest->deviceCallback = nullptr;
227         cameraTest->rc = cameraTest->service->OpenCamera(testCameraId, cameraTest->deviceCallback,
228             cameraTest->cameraDevice);
229         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
230     }
231 }
232 
233 /**
234  * @tc.name: SetFlashlight
235  * @tc.desc: SetFlashlight, normal cameraId
236  * @tc.size: MediumTest
237  * @tc.type: Function
238  */
239 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_012, TestSize.Level1)
240 {
241     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
242     if (cameraTest->cameraDevice == nullptr) {
243         cameraTest->service->GetCameraIds(cameraTest->cameraIds);
244         cameraTest->status = true;
245         cameraTest->rc = cameraTest->service->SetFlashlight(cameraTest->cameraIds.front(), cameraTest->status);
246         EXPECT_EQ(true, cameraTest->rc == HDI::Camera::V1_0::NO_ERROR);
247     }
248 }
249 
250 /**
251  * @tc.name: SetFlashlight
252  * @tc.desc: SetFlashlight, cameraId is not found
253  * @tc.size: MediumTest
254  * @tc.type: Function
255  */
256 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_013, TestSize.Level1)
257 {
258     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
259     if (cameraTest->cameraDevice == nullptr) {
260         std::string testCameraId = "abc";
261         cameraTest->status = true;
262         cameraTest->rc = cameraTest->service->SetFlashlight(testCameraId, cameraTest->status);
263         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
264     }
265 }
266 
267 /**
268  * @tc.name: SetFlashlight
269  * @tc.desc: SetFlashlight, cameraId is not found
270  * @tc.size: MediumTest
271  * @tc.type: Function
272  */
273 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_014, TestSize.Level1)
274 {
275     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
276     if (cameraTest->cameraDevice == nullptr) {
277         std::string testCameraId = "";
278         cameraTest->status = true;
279         cameraTest->rc = cameraTest->service->SetFlashlight(testCameraId, cameraTest->status);
280         EXPECT_EQ(true, cameraTest->rc == INVALID_ARGUMENT);
281     }
282 }
283 
284 /**
285  * @tc.name: SetFlashlight
286  * @tc.desc: SetFlashlight, status is false
287  * @tc.size: MediumTest
288  * @tc.type: Function
289  */
290 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_015, TestSize.Level1)
291 {
292     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
293     if (cameraTest->cameraDevice == nullptr) {
294         cameraTest->service->GetCameraIds(cameraTest->cameraIds);
295         cameraTest->status = false;
296         cameraTest->rc = cameraTest->service->SetFlashlight(cameraTest->cameraIds.front(), cameraTest->status);
297         EXPECT_EQ(true, cameraTest->rc == HDI::Camera::V1_0::NO_ERROR);
298     }
299 }
300 
301 /**
302  * @tc.name: GetCameraAbility
303  * @tc.desc: GetCameraAbility, normal cameraId
304  * @tc.size: MediumTest
305  * @tc.type: Function
306  */
307 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_016, TestSize.Level1)
308 {
309     EXPECT_EQ(true, cameraTest->cameraDevice == nullptr);
310     if (cameraTest->cameraDevice == nullptr) {
311         cameraTest->rc = cameraTest->service->GetCameraIds(cameraTest->cameraIds);
312         EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
313         for (int i = 0; i < cameraTest->cameraIds.size(); i++) {
314             cameraTest->rc = cameraTest->service->GetCameraAbility(cameraTest->cameraIds[i], cameraTest->abilityVec);
315             CAMERA_LOGE("check hdi_host: cameraId = %{public}s", cameraTest->cameraIds[i].c_str());
316             EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
317         }
318     }
319 }
320 
321 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_017, TestSize.Level1)
322 {
323     cameraTest->service->GetCameraIds(cameraTest->cameraIds);
324     for (int i = 0; i < 10; i++) {
325         if (i % 2 == 0) {
326             cameraTest->status = true;
327         } else {
328             cameraTest->status = false;
329         }
330     }
331     cameraTest->rc = cameraTest->service->SetFlashlight(cameraTest->cameraIds.front(), cameraTest->status);
332     EXPECT_EQ(true, cameraTest->rc == HDI::Camera::V1_0::NO_ERROR);
333 }
334 
335 /**
336  * @tc.name: SetFlashlight
337  * @tc.desc: Open the camera, preview, the turn on the flashlight, expected return errorcode.
338  * @tc.size: MediumTest
339  * @tc.type: Function
340  */
341 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_018, TestSize.Level1)
342 {
343     cameraTest->Open();
344     cameraTest->intents = {PREVIEW};
345     cameraTest->StartStream(cameraTest->intents);
346     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
347 
348     cameraTest->status = true;
349     cameraTest->rc = cameraTest->service->SetFlashlight(cameraTest->cameraIds.front(), cameraTest->status);
350     EXPECT_EQ(true, cameraTest->rc == HDI::Camera::V1_0::METHOD_NOT_SUPPORTED);
351     sleep(UT_SECOND_TIMES);
352     cameraTest->captureIds = {cameraTest->captureIdPreview};
353     cameraTest->streamIds = {cameraTest->streamIdPreview};
354     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
355 }
356 
357 /**
358  * @tc.name: SetFlashlight
359  * @tc.desc: Open the camera, preview, the turn off the flashlight, expected return errorcode.
360  * @tc.size: MediumTest
361  * @tc.type: Function
362  */
363 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_019, TestSize.Level1)
364 {
365     cameraTest->Open();
366     cameraTest->intents = {PREVIEW};
367     cameraTest->StartStream(cameraTest->intents);
368     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
369 
370     cameraTest->status = false;
371     cameraTest->rc = cameraTest->service->SetFlashlight(cameraTest->cameraIds.front(), cameraTest->status);
372     EXPECT_EQ(true, cameraTest->rc == HDI::Camera::V1_0::METHOD_NOT_SUPPORTED);
373     sleep(UT_SECOND_TIMES);
374     cameraTest->captureIds = {cameraTest->captureIdPreview};
375     cameraTest->streamIds = {cameraTest->streamIdPreview};
376     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
377 }
378 
379 /**
380  * @tc.name: SetFlashlight
381  * @tc.desc: Open the camera, preview, the turn on the flashlight, expected return errorcode.
382  * @tc.size: MediumTest
383  * @tc.type: Function
384  */
385 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_020, TestSize.Level1)
386 {
387     cameraTest->service->GetCameraIds(cameraTest->cameraIds);
388     cameraTest->status = true;
389     cameraTest->rc = cameraTest->service->SetFlashlight(cameraTest->cameraIds.front(), cameraTest->status);
390     EXPECT_EQ(true, cameraTest->rc == HDI::Camera::V1_0::NO_ERROR);
391     sleep(UT_SLEEP_TIME);
392     cameraTest->Open();
393     sleep(UT_SLEEP_TIME);
394 }
395 
396 /**
397  * @tc.name: FormatCameraMetadataToString
398  * @tc.desc: Open the camera print metadata
399  * @tc.size: MediumTest
400  * @tc.type: Function
401  */
402 HWTEST_F(HdiHostUtTest, Camera_Host_Hdi_021, TestSize.Level1)
403 {
404     CAMERA_LOGI("HdiHostUtTest Camera_Host_Hdi_021 start ...");
405     cameraTest->Open();
406     common_metadata_header_t* data = cameraTest->ability->get();
407     std::string metaStr = FormatCameraMetadataToString(data);
408     CAMERA_LOGI("HdiHostUtTest matestr %{public}s\n", metaStr.c_str());
409     EXPECT_FALSE(metaStr.empty());
410 }
411