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_stream_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 HdiStreamUtTest::SetUpTestCase(void) {}
TearDownTestCase(void)23 void HdiStreamUtTest::TearDownTestCase(void) {}
SetUp(void)24 void HdiStreamUtTest::SetUp(void)
25 {
26     cameraTest = std::make_shared<OHOS::Camera::Test>();
27     cameraTest->Init();
28 }
29 
TearDown(void)30 void HdiStreamUtTest::TearDown(void)
31 {
32     cameraTest->Close();
33 }
34 
35 /**
36  * @tc.name: IsStreamSupported
37  * @tc.desc: IsStreamSupported, normal cameraId
38  * @tc.size: MediumTest
39  * @tc.type: Function
40  */
41 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_001, TestSize.Level1)
42 {
43     cameraTest->Open();
44     EXPECT_EQ(false, cameraTest->cameraDevice == nullptr);
45     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
46     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
47         cameraTest->streamOperator);
48     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
49     std::shared_ptr<CameraMetadata> modeSetting = std::make_shared<CameraMetadata>(2, 128);
50     int64_t expoTime = 0;
51     modeSetting->addEntry(OHOS_SENSOR_EXPOSURE_TIME, &expoTime, 1);
52     int64_t colorGains[4] = {0};
53     modeSetting->addEntry(OHOS_SENSOR_COLOR_CORRECTION_GAINS, &colorGains, 4);
54 
55     cameraTest->streamInfo = std::make_shared<StreamInfo>();
56     cameraTest->streamInfo->streamId_ = 101;
57     cameraTest->streamInfo->format_ = PIXEL_FMT_YCRCB_420_SP;
58     cameraTest->streamInfo->height_ = 480;
59     cameraTest->streamInfo->width_ = 640;
60     cameraTest->streamInfo->dataspace_ = 8;
61 
62     std::shared_ptr<OHOS::Camera::Test::StreamConsumer> consumer =
63         std::make_shared<OHOS::Camera::Test::StreamConsumer>();
__anon7cf1ccea0102(void* addr, uint32_t size) 64     cameraTest->streamInfo->bufferQueue_ =  consumer->CreateProducerSeq([this](void* addr, uint32_t size) {
65         cameraTest->DumpImageFile(cameraTest->streamIdPreview, "yuv", addr, size);
66     });
67 
68     cameraTest->streamInfo->bufferQueue_->producer_->SetQueueSize(8);
69     cameraTest->consumerMap_[cameraTest->streamInfo->intent_] = consumer;
70     cameraTest->streamInfo->intent_ = PREVIEW;
71     cameraTest->streamInfo->tunneledMode_ = 5;
72     StreamSupportType pType;
73     std::vector<StreamInfo> streams;
74     streams.push_back(*cameraTest->streamInfo);
75     std::vector<uint8_t> modeSettingVec;
76     MetadataUtils::ConvertMetadataToVec(modeSetting, modeSettingVec);
77     cameraTest->rc = cameraTest->streamOperator->IsStreamsSupported(OperationMode::NORMAL, modeSettingVec,
78         streams, pType);
79     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
80 }
81 
82 /**
83  * @tc.name: CreateStreams
84  * @tc.desc: CreateStreams, success
85  * @tc.size: MediumTest
86  * @tc.type: Function
87  */
88 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_002, TestSize.Level1)
89 {
90     cameraTest->Open();
91     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
92     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
93         cameraTest->streamOperator);
94     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
95 
96     cameraTest->streamInfo = std::make_shared<StreamInfo>();
97     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
98     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
99     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
100     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
101 
102     std::vector<int> streamIds;
103     streamIds.push_back(cameraTest->streamInfo->streamId_);
104     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams(streamIds);
105     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
106 }
107 
108 /**
109  * @tc.name: CreateStreams
110  * @tc.desc: CreateStreams, StreamInfo->streamId = -1, return error
111  * @tc.size: MediumTest
112  * @tc.type: Function
113  */
114 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_003, TestSize.Level1)
115 {
116     cameraTest->Open();
117     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
118     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
119         cameraTest->streamOperator);
120     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
121 
122     cameraTest->streamInfo = std::make_shared<StreamInfo>();
123     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
124     cameraTest->streamInfo->streamId_ = -1;
125     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
126     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
127     EXPECT_EQ(cameraTest->rc, INVALID_ARGUMENT);
128 }
129 
130 /**
131  * @tc.name: CreateStreams
132  * @tc.desc: CreateStreams, StreamInfo->width = -1, return error
133  * @tc.size: MediumTest
134  * @tc.type: Function
135  */
136 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_005, TestSize.Level1)
137 {
138     cameraTest->Open();
139     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
140     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
141         cameraTest->streamOperator);
142     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
143 
144     cameraTest->streamInfo = std::make_shared<StreamInfo>();
145     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
146     cameraTest->streamInfo->width_ = -1;
147     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
148     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
149     EXPECT_EQ(cameraTest->rc, INVALID_ARGUMENT);
150 }
151 
152 /**
153  * @tc.name: CreateStreams
154  * @tc.desc: CreateStreams, StreamInfo->width = 2147483647, success
155  * @tc.size: MediumTest
156  * @tc.type: Function
157  */
158 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_006, TestSize.Level1)
159 {
160     cameraTest->Open();
161     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
162     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
163         cameraTest->streamOperator);
164     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
165 
166     cameraTest->streamInfo = std::make_shared<StreamInfo>();
167     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
168     cameraTest->streamInfo->width_ = 2147483647;
169     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
170     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
171     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
172 
173     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
174     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
175 }
176 
177 /**
178  * @tc.name: CreateStreams
179  * @tc.desc: CreateStreams, StreamInfo->height = -1, success
180  * @tc.size: MediumTest
181  * @tc.type: Function
182  */
183 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_007, TestSize.Level1)
184 {
185     cameraTest->Open();
186     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
187     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
188         cameraTest->streamOperator);
189     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
190 
191     cameraTest->streamInfo = std::make_shared<StreamInfo>();
192     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
193     cameraTest->streamInfo->height_ = -1;
194     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
195     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
196     EXPECT_EQ(cameraTest->rc, INVALID_ARGUMENT);
197 }
198 
199 /**
200  * @tc.name: CreateStreams
201  * @tc.desc: CreateStreams, StreamInfo->height = 2147483647, success
202  * @tc.size: MediumTest
203  * @tc.type: Function
204  */
205 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_008, TestSize.Level1)
206 {
207     cameraTest->Open();
208     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
209     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
210         cameraTest->streamOperator);
211     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
212 
213     cameraTest->streamInfo = std::make_shared<StreamInfo>();
214     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
215     cameraTest->streamInfo->height_ = 2147483647;
216     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
217     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
218     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
219 
220     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
221     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
222 }
223 
224 /**
225  * @tc.name: CreateStreams
226  * @tc.desc: CreateStreams, StreamInfo->format = 2147483647, success
227  * @tc.size: MediumTest
228  * @tc.type: Function
229  */
230 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_009, TestSize.Level1)
231 {
232     cameraTest->Open();
233     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
234     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
235         cameraTest->streamOperator);
236     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
237 
238     cameraTest->streamInfo = std::make_shared<StreamInfo>();
239     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
240     cameraTest->streamInfo->format_ = 2147483647;
241     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
242     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
243     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
244 
245     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
246     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
247 }
248 
249 /**
250  * @tc.name: CreateStreams
251  * @tc.desc: CreateStreams, StreamInfo->dataspace = 2147483647, success
252  * @tc.size: MediumTest
253  * @tc.type: Function
254  */
255 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_010, TestSize.Level1)
256 {
257     cameraTest->Open();
258     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
259     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
260         cameraTest->streamOperator);
261     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
262 
263     cameraTest->streamInfo = std::make_shared<StreamInfo>();
264     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
265     cameraTest->streamInfo->dataspace_ = 2147483647;
266     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
267     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
268     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
269 
270     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
271     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
272 }
273 
274 /**
275  * @tc.name: CreateStreams
276  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = PREVIEW, success
277  * @tc.size: MediumTest
278  * @tc.type: Function
279  */
280 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_011, TestSize.Level1)
281 {
282     cameraTest->Open();
283     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
284     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
285         cameraTest->streamOperator);
286     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
287 
288     cameraTest->streamInfo = std::make_shared<StreamInfo>();
289     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
290     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
291     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
292     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
293 
294     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
295     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
296 }
297 
298 /**
299  * @tc.name: CreateStreams
300  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = VIDEO, success
301  * @tc.size: MediumTest
302  * @tc.type: Function
303  */
304 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_012, TestSize.Level1)
305 {
306     cameraTest->Open();
307     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
308     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
309         cameraTest->streamOperator);
310     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
311 
312     cameraTest->streamInfo = std::make_shared<StreamInfo>();
313     cameraTest->DefaultInfosVideo(cameraTest->streamInfo);
314     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
315     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
316     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
317 
318     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
319     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
320 }
321 
322 /**
323  * @tc.name: CreateStreams
324  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = STILL_CAPTURE, success
325  * @tc.size: MediumTest
326  * @tc.type: Function
327  */
328 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_013, TestSize.Level1)
329 {
330     cameraTest->Open();
331     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
332     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
333         cameraTest->streamOperator);
334     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
335 
336     cameraTest->streamInfo = std::make_shared<StreamInfo>();
337     cameraTest->DefaultInfosCapture(cameraTest->streamInfo);
338     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
339     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
340     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
341 
342     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
343     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
344 }
345 
346 /**
347  * @tc.name: CreateStreams
348  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = POST_VIEW, success
349  * @tc.size: MediumTest
350  * @tc.type: Function
351  */
352 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_014, TestSize.Level1)
353 {
354     cameraTest->Open();
355     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
356     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
357         cameraTest->streamOperator);
358     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
359 
360     cameraTest->streamInfo = std::make_shared<StreamInfo>();
361     cameraTest->DefaultInfosAnalyze(cameraTest->streamInfo);
362     cameraTest->streamInfo->intent_ = POST_VIEW;
363     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
364     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
365     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
366 
367     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
368     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
369 }
370 
371 /**
372  * @tc.name: CreateStreams
373  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = StreamIntent::ANALYZE, success
374  * @tc.size: MediumTest
375  * @tc.type: Function
376  */
377 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_015, TestSize.Level1)
378 {
379     cameraTest->Open();
380     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
381     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
382         cameraTest->streamOperator);
383     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
384 
385     cameraTest->streamInfo = std::make_shared<StreamInfo>();
386     cameraTest->DefaultInfosAnalyze(cameraTest->streamInfo);
387     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
388     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
389     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
390 
391     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
392     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
393 }
394 
395 /**
396  * @tc.name: CreateStreams
397  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = PREVIEW, success
398  * @tc.size: MediumTest
399  * @tc.type: Function
400  */
401 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_016, TestSize.Level1)
402 {
403     cameraTest->Open();
404     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
405     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
406         cameraTest->streamOperator);
407     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
408 
409     cameraTest->streamInfo = std::make_shared<StreamInfo>();
410     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
411     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
412     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
413     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
414 
415     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamInfo->streamId_});
416     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
417 }
418 
419 /**
420  * @tc.name: startStream, stopStream
421  * @tc.desc: startStream, stopStream
422  * @tc.size: MediumTest
423  * @tc.type: Function
424  */
425 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_019, TestSize.Level1)
426 {
427     cameraTest->Open();
428     cameraTest->intents = {PREVIEW};
429     cameraTest->StartStream(cameraTest->intents);
430     cameraTest->captureIds = {};
431     cameraTest->streamIds = {cameraTest->streamIdPreview};
432     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
433 }
434 
435 /**
436  * @tc.name: GetStreamAttributes
437  * @tc.desc: GetStreamAttributes, success
438  * @tc.size: MediumTest
439  * @tc.type: Function
440  */
441 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_020, TestSize.Level1)
442 {
443     cameraTest->Open();
444     cameraTest->intents = {PREVIEW};
445     cameraTest->StartStream(cameraTest->intents);
446 
447     std::vector<StreamAttribute> attributes;
448     cameraTest->rc = cameraTest->streamOperator->GetStreamAttributes(attributes);
449     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
450     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamIdPreview});
451     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
452 }
453 
454 /**
455  * @tc.name: capture
456  * @tc.desc: capture, input normal
457  * @tc.size: MediumTest
458  * @tc.type: Function
459  */
460 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_021, TestSize.Level1)
461 {
462     cameraTest->Open();
463     cameraTest->intents = {PREVIEW};
464     cameraTest->StartStream(cameraTest->intents);
465     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, false, true);
466     cameraTest->captureIds = {cameraTest->captureIdPreview};
467     cameraTest->streamIds = {cameraTest->streamIdPreview};
468     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
469 }
470 
471 /**
472  * @tc.name: capture
473  * @tc.desc: preview, capture->captureInfo->streamId = -1, return error
474  * @tc.size: MediumTest
475  * @tc.type: Function
476  */
477 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_022, TestSize.Level1)
478 {
479     cameraTest->Open();
480     cameraTest->intents = {PREVIEW};
481     cameraTest->StartStream(cameraTest->intents);
482     int captureId = 2001;
483     cameraTest->captureInfo = std::make_shared<CaptureInfo>();
484     cameraTest->captureInfo->streamIds_ = {-1};
485     cameraTest->captureInfo->captureSetting_ = cameraTest->abilityVec;
486     cameraTest->captureInfo->enableShutterCallback_ = true;
487     cameraTest->rc = cameraTest->streamOperator->Capture(captureId, *cameraTest->captureInfo, true);
488     EXPECT_EQ(INVALID_ARGUMENT, cameraTest->rc);
489     sleep(1);
490     cameraTest->streamOperator->CancelCapture(captureId);
491     cameraTest->captureIds = {};
492     cameraTest->streamIds = {cameraTest->streamIdPreview};
493     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
494 }
495 
496 /**
497  * @tc.name: capture
498  * @tc.desc: preview, capture->captureId = -1, return error
499  * @tc.size: MediumTest
500  * @tc.type: Function
501  */
502 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_024, TestSize.Level1)
503 {
504     cameraTest->Open();
505     cameraTest->intents = {PREVIEW};
506     cameraTest->StartStream(cameraTest->intents);
507 
508     cameraTest->captureInfo = std::make_shared<CaptureInfo>();
509     cameraTest->captureInfo->streamIds_ = {cameraTest->streamIdPreview};
510     cameraTest->captureInfo->captureSetting_ = cameraTest->abilityVec;
511     cameraTest->captureInfo->enableShutterCallback_ = false;
512     bool isStreaming = true;
513     int captureId = -1;
514     cameraTest->rc = cameraTest->streamOperator->Capture(captureId, *cameraTest->captureInfo, isStreaming);
515     EXPECT_EQ(INVALID_ARGUMENT, cameraTest->rc);
516     sleep(1);
517     cameraTest->rc = cameraTest->streamOperator->CancelCapture(cameraTest->captureIdPreview);
518     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams({cameraTest->streamIdPreview});
519     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
520 }
521 
522 /**
523  * @tc.name: capture
524  * @tc.desc: preview, capture->captureInfo->enableShutterCallback = true, return success
525  * @tc.size: MediumTest
526  * @tc.type: Function
527  */
528 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_025, TestSize.Level1)
529 {
530     cameraTest->Open();
531     cameraTest->intents = {PREVIEW};
532     cameraTest->StartStream(cameraTest->intents);
533     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, true, true);
534 
535     cameraTest->captureIds = {cameraTest->captureIdPreview};
536     cameraTest->streamIds = {cameraTest->streamIdPreview};
537     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
538 }
539 
540 /**
541  * @tc.name: CancelCapture
542  * @tc.desc: CancelCapture captureId = -1
543  * @tc.size: MediumTest
544  * @tc.type: Function
545  */
546 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_026, TestSize.Level1)
547 {
548     cameraTest->Open();
549     cameraTest->intents = {PREVIEW};
550     cameraTest->StartStream(cameraTest->intents);
551     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, true, true);
552     cameraTest->rc = cameraTest->streamOperator->CancelCapture(-1);
553     EXPECT_EQ(INVALID_ARGUMENT, cameraTest->rc);
554     cameraTest->captureIds = {cameraTest->captureIdPreview};
555     cameraTest->streamIds = {cameraTest->streamIdPreview};
556     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
557 }
558 
559 /**
560  * @tc.name: AttachBufferQueue & DetachBufferQueue
561  * @tc.desc: AttachBufferQueue & DetachBufferQueue
562  * @tc.size: MediumTest
563  * @tc.type: Function
564  */
565 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_028, TestSize.Level1)
566 {
567     cameraTest->Open();
568     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
569     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
570         cameraTest->streamOperator);
571 
572     cameraTest->streamInfo = std::make_shared<StreamInfo>();
573     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
574     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
575 
576     cameraTest->streamInfoSnapshot = std::make_shared<StreamInfo>();
577     cameraTest->DefaultInfosCapture(cameraTest->streamInfoSnapshot);
578     cameraTest->streamInfos.push_back(*cameraTest->streamInfoSnapshot);
579 
580     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
581     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
582 
583     std::shared_ptr<OHOS::Camera::Test::StreamConsumer> preview_consumer =
584         std::make_shared<OHOS::Camera::Test::StreamConsumer>();
585     OHOS::sptr<OHOS::IBufferProducer> producerTemp = preview_consumer->CreateProducer([this](void* addr,
__anon7cf1ccea0202(void* addr, uint32_t size) 586         uint32_t size) {
587         cameraTest->DumpImageFile(cameraTest->streamIdPreview, "yuv", addr, size);
588     });
589 
590     OHOS::sptr<BufferProducerSequenceable> bufferQueue = new BufferProducerSequenceable(producerTemp);
591     cameraTest->rc = cameraTest->streamOperator->AttachBufferQueue(cameraTest->streamInfoSnapshot->streamId_,
592         bufferQueue);
593     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
594 
595     cameraTest->rc = cameraTest->streamOperator->DetachBufferQueue(cameraTest->streamInfoSnapshot->streamId_);
596     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
597 
598     std::vector<int> streamIds = {cameraTest->streamInfo->streamId_, cameraTest->streamInfoSnapshot->streamId_};
599     cameraTest->rc = cameraTest->streamOperator->ReleaseStreams(streamIds);
600     EXPECT_EQ(cameraTest->rc, HDI::Camera::V1_0::NO_ERROR);
601 }
602 
603 /**
604  * @tc.name: CreateStreams
605  * @tc.desc: CreateStreams, StreamInfo->format = -1, success
606  * @tc.size: MediumTest
607  * @tc.type: Function
608  */
609 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_029, TestSize.Level1)
610 {
611     cameraTest->Open();
612     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
613     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
614         cameraTest->streamOperator);
615     EXPECT_EQ(false, cameraTest->rc != HDI::Camera::V1_0::NO_ERROR || cameraTest->streamOperator == nullptr);
616 
617     cameraTest->streamInfo = std::make_shared<StreamInfo>();
618     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
619     cameraTest->streamInfo->format_ = -1;
620     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
621     cameraTest->rc = cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
622     EXPECT_EQ(cameraTest->rc, INVALID_ARGUMENT);
623 }
624 
625 /**
626  * @tc.name: capture
627  * @tc.desc: capture, input normal
628  * @tc.size: MediumTest
629  * @tc.type: Function
630  */
631 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_030, TestSize.Level1)
632 {
633     cameraTest->Open();
634     cameraTest->intents = {PREVIEW};
635     cameraTest->StartStream(cameraTest->intents);
636     cameraTest->StartCapture(cameraTest->streamIdPreview, cameraTest->captureIdPreview, true, true);
637     cameraTest->captureIds = {cameraTest->captureIdPreview};
638     cameraTest->streamIds = {cameraTest->streamIdPreview};
639     cameraTest->StopStream(cameraTest->captureIds, cameraTest->streamIds);
640 }
641 
642 /**
643  * @tc.name: capture
644  * @tc.desc: capture, input normal
645  * @tc.size: MediumTest
646  * @tc.type: Function
647  */
648 HWTEST_F(HdiStreamUtTest, Camera_Stream_Hdi_031, TestSize.Level0)
649 {
650     cameraTest->Open();
651     cameraTest->streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
652     cameraTest->rc = cameraTest->cameraDevice->GetStreamOperator(cameraTest->streamOperatorCallback,
653         cameraTest->streamOperator);
654 
655     cameraTest->streamInfo = std::make_shared<StreamInfo>();
656     cameraTest->DefaultInfosPreview(cameraTest->streamInfo);
657     cameraTest->streamInfos.push_back(*cameraTest->streamInfo);
658 
659     cameraTest->streamInfoSnapshot = std::make_shared<StreamInfo>();
660     cameraTest->DefaultInfosCapture(cameraTest->streamInfoSnapshot);
661     cameraTest->streamInfos.push_back(*cameraTest->streamInfoSnapshot);
662 
663     cameraTest->rc = (CamRetCode)cameraTest->streamOperator->CreateStreams(cameraTest->streamInfos);
664     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
665 
666     cameraTest->rc = (CamRetCode)cameraTest->streamOperator->CommitStreams(OperationMode::NORMAL,
667         cameraTest->abilityVec);
668     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
669 
670     int captureId = 2001;
671     cameraTest->captureInfo = std::make_shared<CaptureInfo>();
672     cameraTest->captureInfo->streamIds_ = {101};
673     cameraTest->captureInfo->captureSetting_ = cameraTest->abilityVec;
674     cameraTest->captureInfo->enableShutterCallback_ = true;
675     bool isStreaming = true;
676     cameraTest->rc = (CamRetCode)cameraTest->streamOperator->Capture(captureId, *cameraTest->captureInfo, isStreaming);
677     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
678     sleep(UT_SECOND_TIMES);
679     OHOS::sptr<IStreamOperatorCallback> streamOperatorCallback = new OHOS::Camera::Test::TestStreamOperatorCallback();
680     OHOS::sptr<IOfflineStreamOperator> offlineStreamOperator = nullptr;
681 
682     cameraTest->rc = (CamRetCode)cameraTest->streamOperator->ChangeToOfflineStream(
683         {cameraTest->streamInfoSnapshot->streamId_}, streamOperatorCallback, offlineStreamOperator);
684     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
685 
686     sleep(UT_SECOND_TIMES);
687 
688     cameraTest->rc = (CamRetCode)offlineStreamOperator->CancelCapture(captureId);
689     EXPECT_EQ(true, cameraTest->rc == HDI::Camera::V1_0::NO_ERROR);
690 
691     std::vector<int> streamIds = {101};
692     cameraTest->rc = (CamRetCode)offlineStreamOperator->ReleaseStreams(streamIds);
693     EXPECT_EQ(true, cameraTest->rc == HDI::Camera::V1_0::NO_ERROR);
694 
695     cameraTest->rc = (CamRetCode)offlineStreamOperator->Release();
696     EXPECT_EQ(true, cameraTest->rc == HDI::Camera::V1_0::NO_ERROR);
697 
698     cameraTest->rc = (CamRetCode)cameraTest->streamOperator->ReleaseStreams({1201});
699     EXPECT_EQ(HDI::Camera::V1_0::NO_ERROR, cameraTest->rc);
700     sleep(UT_SECOND_TIMES);
701 }
702 
703