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