• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 "preview_test.h"
16 
SetUpTestCase(void)17 void UtestPreviewTest::SetUpTestCase(void){
18 }
TearDownTestCase(void)19 void UtestPreviewTest::TearDownTestCase(void){}
SetUp(void)20 void UtestPreviewTest::SetUp(void)
21 {
22     if (display_ == nullptr)
23     display_ = std::make_shared<TestDisplay>();
24     display_->FBInit();
25     display_->Init();
26 }
TearDown(void)27 void UtestPreviewTest::TearDown(void)
28 {
29     display_->Close();
30 }
31 
32 /**
33   * @tc.name: Preview
34   * @tc.desc: Preview stream, expected success.
35   * @tc.level: Level0
36   * @tc.size: MediumTest
37   * @tc.type: Function
38   */
TEST_F(UtestPreviewTest,camera_preview_0001)39 TEST_F(UtestPreviewTest, camera_preview_0001)
40 {
41     std::cout << "==========[test log] Preview stream, expected success." << std::endl;
42     // 获取流管理器
43     display_->AchieveStreamOperator();
44     // 启流
45     display_->intents = {Camera::PREVIEW};
46     display_->StartStream(display_->intents);
47     // 获取预览图
48     display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true);
49     // 释放流
50     display_->captureIds = {display_->captureId_preview};
51     display_->streamIds = {display_->streamId_preview};
52     display_->StopStream(display_->captureIds, display_->streamIds);
53 }
54 
55 /**
56   * @tc.name: Preview
57   * @tc.desc: Preview, format error, expected return errorCode.
58   * @tc.level: Level2
59   * @tc.size: MediumTest
60   * @tc.type: Function
61   */
TEST_F(UtestPreviewTest,camera_preview_0003)62 TEST_F(UtestPreviewTest, camera_preview_0003)
63 {
64     std::cout << "==========[test log] Preview, format error, expected return errorCode." << std::endl;
65     // 创建并获取streamOperator信息
66     display_->AchieveStreamOperator();
67     // 创建数据流
68     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
69     producer->SetQueueSize(8); // 8:set bufferQueue size
70     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
71         std::cout << "~~~~~~~" << std::endl;
72     }
73     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
74         display_->BufferCallback(b, display_->preview_mode);
75         return;
76     };
77     producer->SetCallback(callback);
78     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
79     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
80     streamInfo->streamId_ = 1001;
81     streamInfo->width_ = 640; // 640:picture width
82     streamInfo->height_ = 480; // 480:picture height
83     streamInfo->format_ = -1;
84     streamInfo->datasapce_ = 10; // 10:picture datasapce
85     streamInfo->intent_ = Camera::PREVIEW;
86     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
87     streamInfo->bufferQueue_ = producer;
88     streamInfos.push_back(streamInfo);
89     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
90     EXPECT_EQ(true, display_->rc != Camera::NO_ERROR);
91     if (display_->rc == Camera::NO_ERROR) {
92         std::cout << "==========[test log] CreateStreams success." << std::endl;
93     } else {
94         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
95     }
96 }
97 
98 /**
99   * @tc.name: Preview
100   * @tc.desc: GetStreamOperator success.
101   * @tc.level: Level1
102   * @tc.size: MediumTest
103   * @tc.type: Function
104   */
TEST_F(UtestPreviewTest,camera_preview_0010)105 TEST_F(UtestPreviewTest, camera_preview_0010)
106 {
107     std::cout << "==========[test log] GetStreamOperator success." << std::endl;
108     // 获取配置的cameraId
109     display_->cameraHost->GetCameraIds(display_->cameraIds);
110     std::cout << "cameraIds.front() = " << display_->cameraIds.front() << std::endl;
111     // 打开camera设备并获取到device
112     const std::shared_ptr<OHOS::Camera::ICameraDeviceCallback> callback =
113         std::make_shared<OHOS::Camera::ICameraDeviceCallback>();
114     display_->rc = display_->cameraHost->OpenCamera(display_->cameraIds.front(), callback, display_->cameraDevice);
115     std::cout << "OpenCamera's RetCode = " << display_->rc << std::endl;
116     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
117     display_->AchieveStreamOperator();
118 }
119 
120 /**
121   * @tc.name: Preview
122   * @tc.desc: GetStreamOperator, input nullptr.
123   * @tc.level: Level2
124   * @tc.size: MediumTest
125   * @tc.type: Function
126   */
TEST_F(UtestPreviewTest,camera_preview_0011)127 TEST_F(UtestPreviewTest, camera_preview_0011)
128 {
129     std::cout << "==========[test log] GetStreamOperator, input nullptr." << std::endl;
130     // 获取配置的cameraId
131     display_->cameraHost->GetCameraIds(display_->cameraIds);
132     std::cout << "cameraIds.front() = " << display_->cameraIds.front() << std::endl;
133     // 打开camera设备并获取到device
134     const std::shared_ptr<OHOS::Camera::ICameraDeviceCallback> callback =
135         std::make_shared<OHOS::Camera::ICameraDeviceCallback>();
136     display_->rc = display_->cameraHost->OpenCamera(display_->cameraIds.front(), callback, display_->cameraDevice);
137     std::cout << "OpenCamera's RetCode = " << display_->rc << std::endl;
138     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
139     // 创建并获取streamOperator信息
140     std::shared_ptr<OHOS::Camera::IStreamOperatorCallback> streamOperatorCallback = nullptr;
141     display_->rc = display_->cameraDevice->GetStreamOperator(streamOperatorCallback, display_->streamOperator);
142     std::cout << "GetStreamOperator's RetCode = " << display_->rc << std::endl;
143     EXPECT_EQ(Camera::CamRetCode::INVALID_ARGUMENT, display_->rc);
144 }
145 
146 /**
147   * @tc.name: Preview
148   * @tc.desc: CreateStreams, success.
149   * @tc.level: Level1
150   * @tc.size: MediumTest
151   * @tc.type: Function
152   */
TEST_F(UtestPreviewTest,camera_preview_0020)153 TEST_F(UtestPreviewTest, camera_preview_0020)
154 {
155     std::cout << "==========[test log] CreateStreams, success." << std::endl;
156     // 创建并获取streamOperator信息
157     display_->AchieveStreamOperator();
158     // 创建数据流
159     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
160     producer->SetQueueSize(8); // 8:set bufferQueue size
161     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
162         std::cout << "~~~~~~~" << std::endl;
163     }
164     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
165         display_->BufferCallback(b, display_->preview_mode);
166         return;
167     };
168     producer->SetCallback(callback);
169     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
170     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
171     streamInfo->streamId_ = 1001;
172     streamInfo->width_ = 640; // 640:picture width
173     streamInfo->height_ = 480; // 480:picture height
174     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
175     streamInfo->datasapce_ = 8; // 8:picture datasapce
176     streamInfo->intent_ = Camera::PREVIEW;
177     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
178     streamInfo->bufferQueue_ = producer;
179     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
180     streamInfos.push_back(streamInfo);
181     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
182     std::cout << "CreateStreams's RetCode = " << display_->rc << std::endl;
183     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
184     std::cout << "==========[test log] CreateStreams, success." << std::endl;
185     // 提交流信息
186     display_->rc = display_->streamOperator->CommitStreams(NORMAL, nullptr);
187     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
188     if (display_->rc == Camera::NO_ERROR) {
189         std::cout << "==========[test log] CommitStreams success." << std::endl;
190     } else {
191         std::cout << "==========[test log] CommitStreams fail, rc = " << display_->rc << std::endl;
192     }
193     // 捕获
194     display_->StartCapture(1001, display_->captureId_preview, false, true);
195     // 释放流
196     display_->captureIds = {display_->captureId_preview};
197     display_->streamIds = {1001};
198     display_->StopStream(display_->captureIds, display_->streamIds);
199 }
200 
201 /**
202   * @tc.name: Preview
203   * @tc.desc: CreateStreams, StreamInfo->streamId = -1, return error.
204   * @tc.level: Level2
205   * @tc.size: MediumTest
206   * @tc.type: Function
207   */
TEST_F(UtestPreviewTest,camera_preview_0021)208 TEST_F(UtestPreviewTest, camera_preview_0021)
209 {
210     std::cout << "==========[test log] CreateStreams, success." << std::endl;
211     // 创建并获取streamOperator信息
212     display_->AchieveStreamOperator();
213     // 创建数据流
214     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
215     producer->SetQueueSize(8); // 8:set bufferQueue size
216     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
217         std::cout << "~~~~~~~" << std::endl;
218     }
219     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
220         display_->BufferCallback(b, display_->preview_mode);
221         return;
222     };
223     producer->SetCallback(callback);
224     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
225     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
226     streamInfo->streamId_ = -1;
227     streamInfo->width_ = 640; // 640:picture width
228     streamInfo->height_ = 480; // 480:picture height
229     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
230     streamInfo->datasapce_ = 8; // 8:picture datasapce
231     streamInfo->intent_ = Camera::PREVIEW;
232     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
233     streamInfo->bufferQueue_ = producer;
234     streamInfos.push_back(streamInfo);
235     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
236     std::cout << "CreateStreams's RetCode = " << display_->rc << std::endl;
237     EXPECT_EQ(false, display_->rc == Camera::NO_ERROR);
238     if (display_->rc == Camera::NO_ERROR) {
239         std::cout << "==========[test log] CreateStreams success." << std::endl;
240     } else {
241         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
242     }
243 }
244 
245 /**
246   * @tc.name: Preview
247   * @tc.desc: CreateStreams, StreamInfo->streamId = 2147483647, return success.
248   * @tc.level: Level2
249   * @tc.size: MediumTest
250   * @tc.type: Function
251   */
TEST_F(UtestPreviewTest,camera_preview_0022)252 TEST_F(UtestPreviewTest, camera_preview_0022)
253 {
254     std::cout << "==========[test log] CreateStreams, StreamInfo->streamId = 2147483647,";
255     std::cout << "return success." << std::endl;
256     display_->AchieveStreamOperator();
257     // 创建数据流
258     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
259     producer->SetQueueSize(8); // 8:set bufferQueue size
260     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
261         std::cout << "~~~~~~~" << std::endl;
262     }
263     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
264         display_->BufferCallback(b, display_->preview_mode);
265         return;
266     };
267     producer->SetCallback(callback);
268     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
269     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
270     streamInfo->streamId_ = 2147483647;
271     streamInfo->width_ = 640; // 640:picture width
272     streamInfo->height_ = 480; // 480:picture height
273     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
274     streamInfo->datasapce_ = 8; // 8:picture datasapce
275     streamInfo->intent_ = Camera::PREVIEW;
276     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
277     streamInfo->bufferQueue_ = producer;
278     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
279     streamInfos.push_back(streamInfo);
280     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
281     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
282     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
283     if (display_->rc == Camera::NO_ERROR) {
284         std::cout << "==========[test log] CreateStreams success." << std::endl;
285     } else {
286         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
287     }
288     // 提交流信息
289     display_->rc = display_->streamOperator->CommitStreams(NORMAL, nullptr);
290     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
291     std::cout << "==========[test log] CommitStreams success." << std::endl;
292     // 捕获
293     display_->StartCapture(2147483647, display_->captureId_preview, false, true);
294     // 释放流
295     display_->captureIds = {display_->captureId_preview};
296     display_->streamIds = {2147483647};
297     display_->StopStream(display_->captureIds, display_->streamIds);
298 }
299 
300 /**
301   * @tc.name: Preview
302   * @tc.desc: CreateStreams, StreamInfo->width = -1, return error.
303   * @tc.level: Level2
304   * @tc.size: MediumTest
305   * @tc.type: Function
306   */
TEST_F(UtestPreviewTest,camera_preview_0023)307 TEST_F(UtestPreviewTest, camera_preview_0023)
308 {
309     std::cout << "==========[test log] CreateStreams, StreamInfo->width = -1, return error." << std::endl;
310     // 创建并获取streamOperator信息
311     display_->AchieveStreamOperator();
312     // 创建数据流
313     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
314     producer->SetQueueSize(8); // 8:set bufferQueue size
315     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
316         std::cout << "~~~~~~~" << std::endl;
317     }
318     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
319         display_->BufferCallback(b, display_->preview_mode);
320         return;
321     };
322     producer->SetCallback(callback);
323     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
324     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
325     streamInfo->streamId_ = 1001;
326     streamInfo->width_ = -1;
327     streamInfo->height_ = 480; // 480:picture height
328     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
329     streamInfo->datasapce_ = 8; // 8:picture datasapce
330     streamInfo->intent_ = Camera::PREVIEW;
331     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
332     streamInfo->bufferQueue_ = producer;
333     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
334     streamInfos.push_back(streamInfo);
335     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
336     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
337     EXPECT_EQ(true, display_->rc == Camera::INVALID_ARGUMENT);
338     if (display_->rc == Camera::NO_ERROR) {
339         std::cout << "==========[test log] CreateStreams success." << std::endl;
340     } else {
341         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
342     }
343 }
344 
345 /**
346   * @tc.name: Preview
347   * @tc.desc: CreateStreams, StreamInfo->width = 2147483647, success.
348   * @tc.level: Level2
349   * @tc.size: MediumTest
350   * @tc.type: Function
351   */
TEST_F(UtestPreviewTest,camera_preview_0024)352 TEST_F(UtestPreviewTest, camera_preview_0024)
353 {
354     std::cout << "==========[test log] CreateStreams, StreamInfo->width = 2147483647, success." << std::endl;
355     // 创建并获取streamOperator信息
356     display_->AchieveStreamOperator();
357     // 创建数据流
358     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
359     producer->SetQueueSize(8); // 8:set bufferQueue size
360     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
361         std::cout << "~~~~~~~" << std::endl;
362     }
363     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
364         display_->BufferCallback(b, display_->preview_mode);
365         return;
366     };
367     producer->SetCallback(callback);
368     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
369     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
370     streamInfo->streamId_ = 1001;
371     streamInfo->width_ = 2147483647;
372     streamInfo->height_ = 480; // 480:picture height
373     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
374     streamInfo->datasapce_ = 8; // 8:picture datasapce
375     streamInfo->intent_ = Camera::PREVIEW;
376     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
377     streamInfo->bufferQueue_ = producer;
378     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
379     streamInfos.push_back(streamInfo);
380     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
381     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
382     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
383     // 提交流信息
384     display_->rc = display_->streamOperator->CommitStreams(NORMAL, nullptr);
385     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
386     // 捕获
387     int captureId = 2001;
388     display_->captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
389     display_->captureInfo->streamIds_ = {1001};
390     display_->captureInfo->enableShutterCallback_ = false;
391     display_->rc = display_->streamOperator->Capture(captureId, display_->captureInfo, true);
392     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
393     sleep(3);
394     // 释放流
395     std::vector<int> streamIds;
396     streamIds.push_back(streamInfo->streamId_);
397     display_->rc = display_->streamOperator->ReleaseStreams(streamIds);
398     std::cout << "streamOperator->ReleaseStreams's RetCode = " << display_->rc << std::endl;
399     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
400     std::cout << "==========[test log] ReleaseStreams, success." << std::endl;
401 }
402 
403 /**
404   * @tc.name: Preview
405   * @tc.desc: CreateStreams, StreamInfo->height = -1, return error.
406   * @tc.level: Level2
407   * @tc.size: MediumTest
408   * @tc.type: Function
409   */
TEST_F(UtestPreviewTest,camera_preview_0025)410 TEST_F(UtestPreviewTest, camera_preview_0025)
411 {
412     std::cout << "==========[test log] CreateStreams, StreamInfo->height = -1, return error." << std::endl;
413     // 创建并获取streamOperator信息
414     display_->AchieveStreamOperator();
415     // 创建数据流
416     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
417     producer->SetQueueSize(8); // 8:set bufferQueue size
418     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
419         std::cout << "~~~~~~~" << std::endl;
420     }
421     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
422         display_->BufferCallback(b, display_->preview_mode);
423         return;
424     };
425     producer->SetCallback(callback);
426     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
427     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
428     streamInfo->streamId_ = 1001;
429     streamInfo->width_ = 640; // 640:picture width
430     streamInfo->height_ = -1;
431     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
432     streamInfo->datasapce_ = 8; // 8:picture datasapce
433     streamInfo->intent_ = Camera::PREVIEW;
434     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
435     streamInfo->bufferQueue_ = producer;
436     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
437     streamInfos.push_back(streamInfo);
438     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
439     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
440     EXPECT_EQ(Camera::CamRetCode::INVALID_ARGUMENT, display_->rc);
441     if (display_->rc == Camera::NO_ERROR) {
442         std::cout << "==========[test log] CreateStreams success." << std::endl;
443     } else {
444         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
445     }
446 }
447 
448 /**
449   * @tc.name: Preview
450   * @tc.desc: CreateStreams, StreamInfo->height = 2147483647, success.
451   * @tc.level: Level2
452   * @tc.size: MediumTest
453   * @tc.type: Function
454   */
TEST_F(UtestPreviewTest,camera_preview_0026)455 TEST_F(UtestPreviewTest, camera_preview_0026)
456 {
457     std::cout << "==========[test log] CreateStreams, StreamInfo->height = 2147483647, success." << std::endl;
458     // 创建并获取streamOperator信息
459     display_->AchieveStreamOperator();
460     // 创建数据流
461     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
462     producer->SetQueueSize(8); // 8:set bufferQueue size
463     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
464         std::cout << "~~~~~~~" << std::endl;
465     }
466     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
467         display_->BufferCallback(b, display_->preview_mode);
468         return;
469     };
470     producer->SetCallback(callback);
471     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
472     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
473     streamInfo->streamId_ = 1001;
474     streamInfo->width_ = 640; // 640:picture width
475     streamInfo->height_ = 2147483647;
476     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
477     streamInfo->datasapce_ = 8; // 8:picture datasapce
478     streamInfo->intent_ = Camera::PREVIEW;
479     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
480     streamInfo->bufferQueue_ = producer;
481     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
482     streamInfos.push_back(streamInfo);
483     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
484     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
485     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
486     // 提交流信息
487     display_->rc = display_->streamOperator->CommitStreams(NORMAL, nullptr);
488     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
489     // 捕获
490     int captureId = 2001;
491     display_->captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
492     display_->captureInfo->streamIds_ = {1001};
493     display_->captureInfo->enableShutterCallback_ = false;
494     display_->rc = display_->streamOperator->Capture(captureId, display_->captureInfo, true);
495     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
496     sleep(3);
497     // 释放流
498     std::vector<int> streamIds;
499     streamIds.push_back(streamInfo->streamId_);
500     display_->rc = display_->streamOperator->ReleaseStreams(streamIds);
501     std::cout << "ReleaseStreams's RetCode = " << display_->rc << std::endl;
502     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
503     std::cout << "==========[test log] ReleaseStreams, success." << std::endl;
504 }
505 
506 /**
507   * @tc.name: Preview
508   * @tc.desc: CreateStreams, StreamInfo->format = -1, return error.
509   * @tc.level: Level2
510   * @tc.size: MediumTest
511   * @tc.type: Function
512   */
TEST_F(UtestPreviewTest,camera_preview_0027)513 TEST_F(UtestPreviewTest, camera_preview_0027)
514 {
515     std::cout << "==========[test log] CreateStreams, StreamInfo->format = -1, return error." << std::endl;
516     display_->AchieveStreamOperator();
517     // 创建数据流
518     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
519     producer->SetQueueSize(8); // 8:set bufferQueue size
520     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
521         std::cout << "~~~~~~~" << std::endl;
522     }
523     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
524         display_->BufferCallback(b, display_->preview_mode);
525         return;
526     };
527     producer->SetCallback(callback);
528     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
529     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
530     streamInfo->streamId_ = 1001;
531     streamInfo->width_ = 640; // 640:picture width
532     streamInfo->height_ = 480; // 480:picture height
533     streamInfo->format_ = -1;
534     streamInfo->datasapce_ = 8; // 8:picture datasapce
535     streamInfo->intent_ = Camera::PREVIEW;
536     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
537     streamInfo->bufferQueue_ = producer;
538     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
539     streamInfos.push_back(streamInfo);
540     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
541     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
542     EXPECT_EQ(Camera::CamRetCode::INVALID_ARGUMENT, display_->rc);
543     if (display_->rc == Camera::NO_ERROR) {
544         std::cout << "==========[test log] CreateStreams success." << std::endl;
545     } else {
546         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
547     }
548 }
549 
550 /**
551   * @tc.name: Preview
552   * @tc.desc: CreateStreams, StreamInfo->format = 2147483647, success.
553   * @tc.level: Level2
554   * @tc.size: MediumTest
555   * @tc.type: Function
556   */
TEST_F(UtestPreviewTest,camera_preview_0028)557 TEST_F(UtestPreviewTest, camera_preview_0028)
558 {
559     std::cout << "==========[test log] CreateStreams, StreamInfo->format = 2147483647, success." << std::endl;
560     // 创建并获取streamOperator信息
561     display_->AchieveStreamOperator();
562     // 创建数据流
563     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
564     producer->SetQueueSize(8); // 8:set bufferQueue size
565     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
566         std::cout << "~~~~~~~" << std::endl;
567     }
568     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
569         display_->BufferCallback(b, display_->preview_mode);
570         return;
571     };
572     producer->SetCallback(callback);
573     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
574     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
575     streamInfo->streamId_ = 1001;
576     streamInfo->width_ = 640; // 640:picture width
577     streamInfo->height_ = 480; // 480:picture height
578     streamInfo->format_ = 2147483647;
579     streamInfo->datasapce_ = 8; // 8:picture datasapce
580     streamInfo->intent_ = Camera::PREVIEW;
581     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
582     streamInfo->bufferQueue_ = producer;
583     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
584     streamInfos.push_back(streamInfo);
585     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
586     if (display_->rc == Camera::NO_ERROR) {
587         std::cout << "==========[test log] CreateStreams success." << std::endl;
588     } else {
589         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
590     }
591     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
592     std::cout << "==========[test log] CreateStreams, success." << std::endl;
593     // 提交流信息
594     display_->rc = display_->streamOperator->CommitStreams(NORMAL, nullptr);
595     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
596     if (display_->rc == Camera::NO_ERROR) {
597         std::cout << "==========[test log] CommitStreams success." << std::endl;
598     } else {
599         std::cout << "==========[test log] CommitStreams fail, rc = " << display_->rc << std::endl;
600     }
601     // 捕获
602     display_->StartCapture(1001, display_->captureId_preview, false, true);
603     // 释放流
604     display_->captureIds = {display_->captureId_preview};
605     display_->streamIds = {1001};
606     display_->StopStream(display_->captureIds, display_->streamIds);
607 }
608 
609 /**
610   * @tc.name: Preview
611   * @tc.desc: CreateStreams, StreamInfo->datasapce = -1, return error.
612   * @tc.level: Level2
613   * @tc.size: MediumTest
614   * @tc.type: Function
615   */
TEST_F(UtestPreviewTest,camera_preview_0029)616 TEST_F(UtestPreviewTest, camera_preview_0029)
617 {
618     std::cout << "==========[test log] CreateStreams, StreamInfo->datasapce = -1, return error." << std::endl;
619     display_->AchieveStreamOperator();
620     // 创建数据流
621     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
622     producer->SetQueueSize(8); // 8:set bufferQueue size
623     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
624         std::cout << "~~~~~~~" << std::endl;
625     }
626     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
627         display_->BufferCallback(b, display_->preview_mode);
628         return;
629     };
630     producer->SetCallback(callback);
631     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
632     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
633     streamInfo->streamId_ = 1001;
634     streamInfo->width_ = 640; // 640:picture width
635     streamInfo->height_ = 480; // 480:picture height
636     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
637     streamInfo->datasapce_ = -1;
638     streamInfo->intent_ = Camera::PREVIEW;
639     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
640     streamInfo->bufferQueue_ = producer;
641     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
642     streamInfos.push_back(streamInfo);
643     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
644     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
645     EXPECT_EQ(Camera::CamRetCode::INVALID_ARGUMENT, display_->rc);
646     if (display_->rc == Camera::NO_ERROR) {
647         std::cout << "==========[test log] CreateStreams success." << std::endl;
648     } else {
649         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
650     }
651 }
652 
653 /**
654   * @tc.name: Preview
655   * @tc.desc: CreateStreams, StreamInfo->datasapce = 2147483647, success.
656   * @tc.level: Level2
657   * @tc.size: MediumTest
658   * @tc.type: Function
659   */
TEST_F(UtestPreviewTest,camera_preview_0030)660 TEST_F(UtestPreviewTest, camera_preview_0030)
661 {
662     std::cout << "==========[test log] CreateStreams, StreamInfo->datasapce = 2147483647, success." << std::endl;
663     // 创建并获取streamOperator信息
664     display_->AchieveStreamOperator();
665     // 创建数据流
666     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
667     producer->SetQueueSize(8); // 8:set bufferQueue size
668     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
669         std::cout << "~~~~~~~" << std::endl;
670     }
671     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
672         display_->BufferCallback(b, display_->preview_mode);
673         return;
674     };
675     producer->SetCallback(callback);
676     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
677     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
678     streamInfo->streamId_ = 1001;
679     streamInfo->width_ = 640; // 640:picture width
680     streamInfo->height_ = 480; // 480:picture height
681     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
682     streamInfo->datasapce_ = 2147483647;
683     streamInfo->intent_ = Camera::PREVIEW;
684     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
685     streamInfo->bufferQueue_ = producer;
686     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
687     streamInfos.push_back(streamInfo);
688     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
689     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
690     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
691     if (display_->rc == Camera::NO_ERROR) {
692         std::cout << "==========[test log] CreateStreams success." << std::endl;
693     } else {
694         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
695     }
696     // 提交流信息
697     display_->rc = display_->streamOperator->CommitStreams(NORMAL, nullptr);
698     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
699     std::cout << "==========[test log] CommitStreams success." << std::endl;
700     // 捕获
701     display_->StartCapture(1001, display_->captureId_preview, false, true);
702     // 释放流
703     display_->captureIds = {display_->captureId_preview};
704     display_->streamIds = {1001};
705     display_->StopStream(display_->captureIds, display_->streamIds);
706 }
707 
708 /**
709   * @tc.name: Preview
710   * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::PREVIEW, success.
711   * @tc.level: Level2
712   * @tc.size: MediumTest
713   * @tc.type: Function
714   */
TEST_F(UtestPreviewTest,camera_preview_0031)715 TEST_F(UtestPreviewTest, camera_preview_0031)
716 {
717     std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = ";
718     std::cout << "Camera::PREVIEW, success." << std::endl;
719     // 获取流管理器
720     display_->AchieveStreamOperator();
721     // 启流
722     display_->intents = {Camera::PREVIEW};
723     display_->StartStream(display_->intents);
724     // 捕获
725     display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true);
726     // 释放流
727     display_->captureIds = {display_->captureId_preview};
728     display_->streamIds = {display_->streamId_preview};
729     display_->StopStream(display_->captureIds, display_->streamIds);
730 }
731 
732 /**
733   * @tc.name: Preview
734   * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::VIDEO, success.
735   * @tc.level: Level2
736   * @tc.size: MediumTest
737   * @tc.type: Function
738   */
TEST_F(UtestPreviewTest,camera_preview_0032)739 TEST_F(UtestPreviewTest, camera_preview_0032)
740 {
741     std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = Camera::VIDEO, success." << std::endl;
742     // 获取流管理器
743     display_->AchieveStreamOperator();
744     // 启流
745     display_->intents = {Camera::PREVIEW, Camera::VIDEO};
746     display_->StartStream(display_->intents);
747     // 获取预览图
748     display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true);
749     display_->StartCapture(display_->streamId_video, display_->captureId_preview, false, true);
750     // 释放流
751     display_->captureIds = {display_->captureId_preview};
752     display_->streamIds = {display_->streamId_preview, display_->streamId_capture};
753     display_->StopStream(display_->captureIds, display_->streamIds);
754 }
755 
756 /**
757   * @tc.name: Preview
758   * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::STILL_CAPTURE, success.
759   * @tc.level: Level2
760   * @tc.size: MediumTest
761   * @tc.type: Function
762   */
TEST_F(UtestPreviewTest,camera_preview_0033)763 TEST_F(UtestPreviewTest, camera_preview_0033)
764 {
765     std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = ";
766     std::cout << "Camera::STILL_CAPTURE, success." << std::endl;
767     // 创建并获取streamOperator信息
768     display_->AchieveStreamOperator();
769     // 启流
770     display_->intents = {Camera::PREVIEW, Camera::STILL_CAPTURE};
771     display_->StartStream(display_->intents);
772     // 获取预览图
773     display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true);
774     display_->StartCapture(display_->streamId_capture, display_->captureId_preview, false, true);
775     // 释放流
776     display_->captureIds = {display_->captureId_preview};
777     display_->streamIds = {display_->streamId_preview, display_->streamId_capture};
778     display_->StopStream(display_->captureIds, display_->streamIds);
779 }
780 
781 /**
782   * @tc.name: Preview
783   * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::POST_VIEW;, success.
784   * @tc.level: Level2
785   * @tc.size: MediumTest
786   * @tc.type: Function
787   */
TEST_F(UtestPreviewTest,camera_preview_0034)788 TEST_F(UtestPreviewTest, camera_preview_0034)
789 {
790     std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = ";
791     std::cout << "Camera::POST_VIEW;, success." << std::endl;
792     // 创建并获取streamOperator信息
793     display_->AchieveStreamOperator();
794     // 创建预览流
795     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
796     producer->SetQueueSize(8); // 8:set bufferQueue size
797     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
798         std::cout << "~~~~~~~" << std::endl;
799     }
800     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
801         display_->BufferCallback(b, display_->preview_mode);
802         return;
803     };
804     producer->SetCallback(callback);
805     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
806     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
807     streamInfo->streamId_ = 1001;
808     streamInfo->width_ = 640; // 640:picture width
809     streamInfo->height_ = 480; // 480:picture height
810     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
811     streamInfo->datasapce_ = 8; // 8:picture datasapce
812     streamInfo->intent_ = Camera::POST_VIEW;
813     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
814     streamInfo->bufferQueue_ = producer;
815     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
816     streamInfos.push_back(streamInfo);
817     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
818     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
819     if (display_->rc == Camera::NO_ERROR) {
820         std::cout << "==========[test log] CreateStreams success." << std::endl;
821     } else {
822         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
823     }
824     // 释放流
825     std::vector<int> streamIds;
826     streamIds.push_back(streamInfo->streamId_);
827     display_->rc = display_->streamOperator->ReleaseStreams(streamIds);
828     std::cout << "ReleaseStreams's RetCode = " << display_->rc << std::endl;
829     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
830     if (display_->rc == Camera::NO_ERROR) {
831         std::cout << "==========[test log] ReleaseStreams success." << std::endl;
832     } else {
833         std::cout << "==========[test log] ReleaseStreams fail, rc = " << display_->rc << std::endl;
834     }
835 }
836 
837 /**
838   * @tc.name: Preview
839   * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::ANALYZE;, success.
840   * @tc.level: Level2
841   * @tc.size: MediumTest
842   * @tc.type: Function
843   */
TEST_F(UtestPreviewTest,camera_preview_0035)844 TEST_F(UtestPreviewTest, camera_preview_0035)
845 {
846     std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = ";
847     std::cout << "Camera::ANALYZE;, success." << std::endl;
848     // 创建并获取streamOperator信息
849     display_->AchieveStreamOperator();
850     // 创建数据流
851     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
852     producer->SetQueueSize(8); // 8:set bufferQueue size
853     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
854         std::cout << "~~~~~~~" << std::endl;
855     }
856     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
857         display_->BufferCallback(b, display_->preview_mode);
858         return;
859     };
860     producer->SetCallback(callback);
861     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
862     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
863     streamInfo->streamId_ = 1001;
864     streamInfo->width_ = 640; // 640:picture width
865     streamInfo->height_ = 480; // 480:picture height
866     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
867     streamInfo->datasapce_ = 8; // 8:picture datasapce
868     streamInfo->intent_ = Camera::ANALYZE;
869     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
870     streamInfo->bufferQueue_ = producer;
871     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
872     streamInfos.push_back(streamInfo);
873     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
874     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
875     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
876     std::cout << "==========[test log] CreateStreams success." << std::endl;
877     // 释放流
878     std::vector<int> streamIds;
879     streamIds.push_back(streamInfo->streamId_);
880     display_->rc = display_->streamOperator->ReleaseStreams(streamIds);
881     std::cout << "ReleaseStreams RetCode = " << display_->rc << std::endl;
882     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
883     if (display_->rc == Camera::NO_ERROR) {
884         std::cout << "==========[test log] ReleaseStreams success." << std::endl;
885     }
886     else {
887         std::cout << "==========[test log] ReleaseStreams fail, rc = " << display_->rc << std::endl;
888     }
889 }
890 
891 /**
892   * @tc.name: Preview
893   * @tc.desc: CreateStreams, StreamInfo->StreamIntent = Camera::CUSTOM, not support.
894   * @tc.level: Level2
895   * @tc.size: MediumTest
896   * @tc.type: Function
897   */
TEST_F(UtestPreviewTest,camera_preview_0036)898 TEST_F(UtestPreviewTest, camera_preview_0036)
899 {
900     std::cout << "==========[test log] CreateStreams, StreamInfo->StreamIntent = ";
901     std::cout << "Camera::CUSTOM, not support." << std::endl;
902     // 创建并获取streamOperator信息
903     display_->AchieveStreamOperator();
904     // 创建数据流
905     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
906     producer->SetQueueSize(8); // 8:set bufferQueue size
907     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
908         std::cout << "~~~~~~~" << std::endl;
909     }
910     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
911         display_->BufferCallback(b, display_->preview_mode);
912         return;
913     };
914     producer->SetCallback(callback);
915     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
916     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
917     streamInfo->streamId_ = 1001;
918     streamInfo->width_ = 640; // 640:picture width
919     streamInfo->height_ = 480; // 480:picture height
920     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
921     streamInfo->datasapce_ = 8; // 8:picture datasapce
922     streamInfo->intent_ = Camera::CUSTOM;
923     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
924     streamInfo->bufferQueue_ = producer;
925     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
926     streamInfos.push_back(streamInfo);
927     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
928     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
929     EXPECT_EQ(true, display_->rc != Camera::NO_ERROR);
930     if (display_->rc == Camera::NO_ERROR) {
931         std::cout << "==========[test log] CreateStreams success." << std::endl;
932     } else {
933         std::cout << "==========[test log] CreateStreams fail, rc = " << display_->rc << std::endl;
934     }
935 }
936 
937 /**
938   * @tc.name: Preview
939   * @tc.desc: CreateStreams, StreamInfo->tunneledMode = false, success.
940   * @tc.level: Level2
941   * @tc.size: MediumTest
942   * @tc.type: Function
943   */
TEST_F(UtestPreviewTest,camera_preview_0037)944 TEST_F(UtestPreviewTest, camera_preview_0037)
945 {
946     std::cout << "==========[test log] CreateStreams, StreamInfo->tunneledMode = false, success." << std::endl;
947     // 创建并获取streamOperator信息
948     display_->AchieveStreamOperator();
949     // 创建数据流
950     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
951     producer->SetQueueSize(8); // 8:set bufferQueue size
952     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
953         std::cout << "~~~~~~~" << std::endl;
954     }
955     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
956         display_->BufferCallback(b, display_->preview_mode);
957         return;
958     };
959     producer->SetCallback(callback);
960     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
961     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
962     streamInfo->streamId_ = 1001;
963     streamInfo->width_ = 640; // 640:picture width
964     streamInfo->height_ = 480; // 480:picture height
965     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
966     streamInfo->datasapce_ = 8; // 8:picture datasapce
967     streamInfo->intent_ = Camera::PREVIEW;
968     streamInfo->tunneledMode_ = false;
969     streamInfo->bufferQueue_ = producer;
970     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
971     streamInfos.push_back(streamInfo);
972     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
973     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
974     EXPECT_EQ(true, display_->rc == Camera::METHOD_NOT_SUPPORTED);
975     if (display_->rc == Camera::METHOD_NOT_SUPPORTED) {
976         std::cout << "==========[test log] CreateStreams fail." << std::endl;
977     } else {
978         std::cout << "==========[test log] CreateStreams success"<< std::endl;
979     }
980 }
981 
982 /**
983   * @tc.name: Preview
984   * @tc.desc: CreateStreams, StreamInfo->minFrameDuration = -1, return error.
985   * @tc.level: Level2
986   * @tc.size: MediumTest
987   * @tc.type: Function
988   */
TEST_F(UtestPreviewTest,camera_preview_0038)989 TEST_F(UtestPreviewTest, camera_preview_0038)
990 {
991     std::cout << "==========[test log] CreateStreams, StreamInfo->minFrameDuration = -1, ";
992     std::cout << "return error." << std::endl;
993     // 创建并获取streamOperator信息
994     display_->AchieveStreamOperator();
995     // 创建数据流
996     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
997     producer->SetQueueSize(8); // 8:set bufferQueue size
998     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
999         std::cout << "~~~~~~~" << std::endl;
1000     }
1001     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
1002         display_->BufferCallback(b, display_->preview_mode);
1003         return;
1004     };
1005     producer->SetCallback(callback);
1006     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
1007     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
1008     streamInfo->streamId_ = 1001;
1009     streamInfo->width_ = 640; // 640:picture width
1010     streamInfo->height_ = 480; // 480:picture height
1011     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
1012     streamInfo->datasapce_ = 8; // 8:picture datasapce
1013     streamInfo->intent_ = Camera::PREVIEW;
1014     streamInfo->tunneledMode_ = 0;
1015     streamInfo->minFrameDuration_ = -1;
1016     streamInfo->bufferQueue_ = producer;
1017     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
1018     streamInfos.push_back(streamInfo);
1019     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
1020     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
1021     EXPECT_EQ(Camera::CamRetCode::INVALID_ARGUMENT, display_->rc);
1022     std::cout << "==========[test log] CreateStreams, failed." << std::endl;
1023 }
1024 
1025 /**
1026   * @tc.name: Preview
1027   * @tc.desc: CreateStreams, StreamInfo->minFrameDuration = 2147483647, success.
1028   * @tc.level: Level2
1029   * @tc.size: MediumTest
1030   * @tc.type: Function
1031   */
TEST_F(UtestPreviewTest,camera_preview_0039)1032 TEST_F(UtestPreviewTest, camera_preview_0039)
1033 {
1034     std::cout << "==========[test log] CreateStreams, StreamInfo->minFrameDuration = 2147483647, ";
1035     std::cout << "success." << std::endl;
1036     // 创建并获取streamOperator信息
1037     display_->AchieveStreamOperator();
1038     // 创建数据流
1039     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
1040     producer->SetQueueSize(8); // 8:set bufferQueue size
1041     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
1042         std::cout << "~~~~~~~" << std::endl;
1043     }
1044     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
1045         display_->BufferCallback(b, display_->preview_mode);
1046         return;
1047     };
1048     producer->SetCallback(callback);
1049     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
1050     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
1051     streamInfo->streamId_ = 1001;
1052     streamInfo->width_ = 640; // 640:picture width
1053     streamInfo->height_ = 480; // 480:picture height
1054     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
1055     streamInfo->datasapce_ = 8; // 8:picture datasapce
1056     streamInfo->intent_ = Camera::PREVIEW;
1057     streamInfo->tunneledMode_ = 0;
1058     streamInfo->minFrameDuration_ = 2147483647;
1059     streamInfo->bufferQueue_ = producer;
1060     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
1061     streamInfos.push_back(streamInfo);
1062     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
1063     std::cout << "streamOperator->CreateStreams's RetCode = " << display_->rc << std::endl;
1064     EXPECT_EQ(false, display_->rc == Camera::NO_ERROR);
1065     std::cout << "==========[test log] CreateStreams, success." << std::endl;
1066 }
1067 
1068 /**
1069   * @tc.name: Preview
1070   * @tc.desc: Preview, CommitStreams Metadata = nullptr.
1071   * @tc.level: Level2
1072   * @tc.size: MediumTest
1073   * @tc.type: Function
1074   */
TEST_F(UtestPreviewTest,camera_preview_0040)1075 TEST_F(UtestPreviewTest, camera_preview_0040)
1076 {
1077     std::cout << "==========[test log] Preview, CommitStreams Metadata = nullptr." << std::endl;
1078     // 创建并获取streamOperator信息
1079     display_->AchieveStreamOperator();
1080     // 配流起流
1081     display_->rc = display_->streamOperator->CommitStreams(Camera::NORMAL, nullptr);
1082     std::cout << "streamOperator->CommitStreams's RetCode = " << display_->rc << std::endl;
1083     EXPECT_EQ(true, display_->rc == Camera::CamRetCode::DEVICE_ERROR);
1084     // 释放流
1085     std::vector<int> streamIds;
1086     streamIds.push_back(-1);
1087     display_->rc = display_->streamOperator->ReleaseStreams(streamIds);
1088 }
1089 
1090 /**
1091   * @tc.name: Preview
1092   * @tc.desc: Preview, CommitStreams without CreateStreams, expected fail.
1093   * @tc.level: Level2
1094   * @tc.size: MediumTest
1095   * @tc.type: Function
1096   */
TEST_F(UtestPreviewTest,camera_preview_0050)1097 TEST_F(UtestPreviewTest, camera_preview_0050)
1098 {
1099     std::cout << "==========[test log] Preview, CommitStreams without CreateStreams, expected fail." << std::endl;
1100     // 创建并获取streamOperator信息
1101     display_->AchieveStreamOperator();
1102     // 配流起流
1103     display_->rc = display_->streamOperator->CommitStreams(Camera::NORMAL, nullptr);
1104     std::cout << "streamOperator->CommitStreams's RetCode = " << display_->rc << std::endl;
1105     EXPECT_EQ(true, display_->rc == Camera::CamRetCode::DEVICE_ERROR);
1106     // 释放流
1107     std::vector<int> streamIds;
1108     streamIds.push_back(-1);
1109     display_->rc = display_->streamOperator->ReleaseStreams(streamIds);
1110 }
1111 
1112 /**
1113   * @tc.name: Preview
1114   * @tc.desc: Preview  and release streams, success.
1115   * @tc.level: Level1
1116   * @tc.size: MediumTest
1117   * @tc.type: Function
1118   */
TEST_F(UtestPreviewTest,camera_preview_0060)1119 TEST_F(UtestPreviewTest, camera_preview_0060)
1120 {
1121     std::cout << "==========[test log] Preview  and release streams, success." << std::endl;
1122     // 创建并获取streamOperator信息
1123     display_->AchieveStreamOperator();
1124     // 创建数据流
1125     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
1126     producer->SetQueueSize(8); // 8:set bufferQueue size
1127     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
1128         std::cout << "~~~~~~~" << std::endl;
1129     }
1130     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
1131         display_->BufferCallback(b, display_->preview_mode);
1132         return;
1133     };
1134     producer->SetCallback(callback);
1135     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
1136     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
1137     streamInfo->streamId_ = 1001;
1138     streamInfo->width_ = 640; // 640:picture width
1139     streamInfo->height_ = 480; // 480:picture height
1140     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
1141     streamInfo->datasapce_ = 8; // 8:picture datasapce
1142     streamInfo->intent_ = Camera::PREVIEW;
1143     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
1144     streamInfo->bufferQueue_ = producer;
1145     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
1146     streamInfos.push_back(streamInfo);
1147     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
1148     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1149     // 配流起流
1150     display_->rc = display_->streamOperator->CommitStreams(Camera::NORMAL, nullptr);
1151     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1152     // 获取预览图
1153     int captureId = 2001;
1154     std::shared_ptr<OHOS::Camera::CaptureInfo> captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
1155     captureInfo->streamIds_ = {1001};
1156     captureInfo->enableShutterCallback_ = false;
1157     display_->rc = display_->streamOperator->Capture(captureId, captureInfo, true);
1158     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1159     sleep(5);
1160     display_->streamOperator->CancelCapture(captureId);
1161     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1162     // 释放流
1163     display_->rc = display_->streamOperator->ReleaseStreams(captureInfo->streamIds_);
1164     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1165 }
1166 
1167 /**
1168   * @tc.name: Preview
1169   * @tc.desc: ReleaseStreams-> streamID = -1, expected success.
1170   * @tc.level: Level2
1171   * @tc.size: MediumTest
1172   * @tc.type: Function
1173   */
TEST_F(UtestPreviewTest,camera_preview_0061)1174 TEST_F(UtestPreviewTest, camera_preview_0061)
1175 {
1176     std::cout << "==========[test log] ReleaseStreams-> streamID = -1, expected success." << std::endl;
1177     // 创建并获取streamOperator信息
1178     display_->AchieveStreamOperator();
1179     // 创建预览流
1180     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
1181     producer->SetQueueSize(8); // 8:set bufferQueue size
1182     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
1183         std::cout << "~~~~~~~" << std::endl;
1184     }
1185     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
1186         display_->BufferCallback(b, display_->preview_mode);
1187         return;
1188     };
1189     producer->SetCallback(callback);
1190     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
1191     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
1192     streamInfo->streamId_ = 1001;
1193     streamInfo->width_ = 640; // 640:picture width
1194     streamInfo->height_ = 480; // 480:picture height
1195     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
1196     streamInfo->datasapce_ = 8; // 8:picture datasapce
1197     streamInfo->intent_ = Camera::PREVIEW;
1198     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
1199     streamInfo->bufferQueue_ = producer;
1200     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
1201     streamInfos.push_back(streamInfo);
1202     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
1203     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1204     // 配流起流
1205     display_->rc = display_->streamOperator->CommitStreams(Camera::NORMAL, nullptr);
1206     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1207     // 获取预览图
1208     int captureId = 2001;
1209     std::shared_ptr<OHOS::Camera::CaptureInfo> captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
1210     captureInfo->streamIds_ = {1001};
1211     captureInfo->enableShutterCallback_ = false;
1212     display_->rc = display_->streamOperator->Capture(captureId, captureInfo, true);
1213     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1214     sleep(5);
1215     display_->streamOperator->CancelCapture(captureId);
1216     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1217     // 释放流
1218     display_->rc = display_->streamOperator->ReleaseStreams({-1});
1219     std::cout << "streamOperator->ReleaseStreams's rc = " << display_->rc << std::endl;
1220     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1221     display_->rc = display_->streamOperator->ReleaseStreams({1001});
1222     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1223     std::cout << "streamOperator->ReleaseStreams's RetCode = " << display_->rc << std::endl;
1224 }
1225 
1226 /**
1227   * @tc.name: Preview
1228   * @tc.desc: ReleaseStreams no exist streamID, expect success.
1229   * @tc.level: Level2
1230   * @tc.size: MediumTest
1231   * @tc.type: Function
1232   */
TEST_F(UtestPreviewTest,camera_preview_0062)1233 TEST_F(UtestPreviewTest, camera_preview_0062)
1234 {
1235     std::cout << "==========[test log] ReleaseStreams no exist streamID, expect success." << std::endl;
1236     // 创建并获取streamOperator信息
1237     display_->AchieveStreamOperator();
1238     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
1239     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
1240     display_->rc = display_->streamOperator->ReleaseStreams({9999});
1241     std::cout << "streamOperator->ReleaseStreams's RetCode = " << display_->rc << std::endl;
1242     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1243 }
1244 
1245 /**
1246   * @tc.name: Preview
1247   * @tc.desc: Preview, Capture->captureInfo->streamID = -1 ,return error.
1248   * @tc.level: Level2
1249   * @tc.size: MediumTest
1250   * @tc.type: Function
1251   */
TEST_F(UtestPreviewTest,camera_preview_0070)1252 TEST_F(UtestPreviewTest, camera_preview_0070)
1253 {
1254     std::cout << "==========[test log] Preview, Capture->captureInfo->streamID = -1 ,return error." << std::endl;
1255     // 创建并获取streamOperator信息
1256     display_->AchieveStreamOperator();
1257     // 创建预览流
1258     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
1259     producer->SetQueueSize(8); // 8:set bufferQueue size
1260     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
1261         std::cout << "~~~~~~~" << std::endl;
1262     }
1263     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
1264         display_->BufferCallback(b, display_->preview_mode);
1265         return;
1266     };
1267     producer->SetCallback(callback);
1268     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
1269     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
1270     streamInfo->streamId_ = 1001;
1271     streamInfo->width_ = 640; // 640:picture width
1272     streamInfo->height_ = 480; // 480:picture height
1273     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
1274     streamInfo->datasapce_ = 8; // 8:picture datasapce
1275     streamInfo->intent_ = Camera::PREVIEW;
1276     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
1277     streamInfo->bufferQueue_ = producer;
1278     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
1279     streamInfos.push_back(streamInfo);
1280     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
1281     if (display_->rc != Camera::NO_ERROR)
1282     std::cout << "==============[test log]CreateStreams failed!" << std::endl;
1283     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1284     // 配流起流
1285     display_->rc = display_->streamOperator->CommitStreams(Camera::NORMAL, nullptr);
1286     if (display_->rc != Camera::NO_ERROR)
1287     std::cout << "==============[test log]CommitStreams failed!" << std::endl;
1288     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1289     // 获取预览图
1290     int captureId = 2001;
1291     std::shared_ptr<OHOS::Camera::CaptureInfo> captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
1292     captureInfo->streamIds_ = {-1};
1293     captureInfo->enableShutterCallback_ = true;
1294     display_->rc = display_->streamOperator->Capture(captureId, captureInfo, true);
1295     std::cout << "streamOperator->Capture rc = " << display_->rc << std::endl;
1296     if (display_->rc == Camera::INVALID_ARGUMENT)
1297         std::cout << "============[test log]Capture failed " << std::endl;
1298     EXPECT_EQ(Camera::INVALID_ARGUMENT, display_->rc);
1299 }
1300 
1301 /**
1302   * @tc.name: Preview
1303   * @tc.desc: Preview, Capture->captureInfo->streamID = 2147483647 ,return success.
1304   * @tc.level: Level2
1305   * @tc.size: MediumTest
1306   * @tc.type: Function
1307   */
TEST_F(UtestPreviewTest,camera_preview_0071)1308 TEST_F(UtestPreviewTest, camera_preview_0071)
1309 {
1310     std::cout << "==========[test log] Preview, Capture->captureInfo->streamID = 2147483647 ,";
1311     std::cout << "return success." << std::endl;
1312     // 创建并获取streamOperator信息
1313     display_->AchieveStreamOperator();
1314     // 创建数据流
1315     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
1316     producer->SetQueueSize(8); // 8:set bufferQueue size
1317     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
1318         std::cout << "~~~~~~~" << std::endl;
1319     }
1320     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
1321         display_->BufferCallback(b, display_->preview_mode);
1322         return;
1323     };
1324     producer->SetCallback(callback);
1325     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
1326     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
1327     streamInfo->streamId_ = 2147483647;
1328     streamInfo->width_ = 640; // 640:picture width
1329     streamInfo->height_ = 480; // 480:picture height
1330     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
1331     streamInfo->datasapce_ = 8; // 8:picture datasapce
1332     streamInfo->intent_ = Camera::PREVIEW;
1333     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
1334     streamInfo->bufferQueue_ = producer;
1335     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
1336     streamInfos.push_back(streamInfo);
1337     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
1338     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1339     // 配流起流
1340     display_->rc = display_->streamOperator->CommitStreams(Camera::NORMAL, nullptr);
1341     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1342     // 获取预览图
1343     int captureId = 2001;
1344     std::shared_ptr<OHOS::Camera::CaptureInfo> captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
1345     captureInfo->streamIds_ = {2147483647};
1346     captureInfo->enableShutterCallback_ = true;
1347     bool isStreaming = true;
1348     display_->rc = display_->streamOperator->Capture(captureId, captureInfo, isStreaming);
1349     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1350     sleep(5);
1351     display_->streamOperator->CancelCapture(captureId);
1352     // 释放流
1353     display_->rc = display_->streamOperator->ReleaseStreams(captureInfo->streamIds_);
1354     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1355 }
1356 
1357 /**
1358   * @tc.name: Preview
1359   * @tc.desc: Preview, Capture->captureInfo->enableShutterCallback = false ,return success.
1360   * @tc.level: Level2
1361   * @tc.size: MediumTest
1362   * @tc.type: Function
1363   */
TEST_F(UtestPreviewTest,camera_preview_0072)1364 TEST_F(UtestPreviewTest, camera_preview_0072)
1365 {
1366     std::cout << "==========[test log] Preview, Capture->captureInfo->enableShutterCallback = false ,";
1367     std::cout << "return success." << std::endl;
1368     // 创建并获取streamOperator信息
1369     display_->AchieveStreamOperator();
1370     // 创建数据流
1371     display_->intents = {Camera::PREVIEW};
1372     display_->StartStream(display_->intents);
1373     // 获取预览图
1374     display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true);
1375     // 释放流
1376     display_->captureIds = {display_->captureId_preview};
1377     display_->streamIds = {display_->streamId_preview};
1378     display_->StopStream(display_->captureIds, display_->streamIds);
1379 }
1380 
1381 /**
1382   * @tc.name: Preview
1383   * @tc.desc: Preview, Capture->isStreaming = false ,expected success.
1384   * @tc.level: Level2
1385   * @tc.size: MediumTest
1386   * @tc.type: Function
1387   */
TEST_F(UtestPreviewTest,camera_preview_0073)1388 TEST_F(UtestPreviewTest, camera_preview_0073)
1389 {
1390     std::cout << "==========[test log] Preview, Capture->isStreaming = false ,expected success." << std::endl;
1391     // 创建并获取streamOperator信息
1392     display_->AchieveStreamOperator();
1393     // 创建数据流
1394     display_->intents = {Camera::PREVIEW};
1395     display_->StartStream(display_->intents);
1396     // 获取预览图
1397     int captureId = 2001;
1398     std::shared_ptr<OHOS::Camera::CaptureInfo> captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
1399     captureInfo->streamIds_ = {display_->streamId_preview};
1400     captureInfo->enableShutterCallback_ = true;
1401     display_->rc = display_->streamOperator->Capture(captureId, captureInfo, false);
1402     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1403     sleep(5);
1404     display_->streamOperator->CancelCapture(captureId);
1405     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1406     // 释放流
1407     display_->rc = display_->streamOperator->ReleaseStreams(captureInfo->streamIds_);
1408     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1409 }
1410 
1411 /**
1412   * @tc.name: Preview
1413   * @tc.desc: Preview, Capture->captureId = -1 ,return error.
1414   * @tc.level: Level2
1415   * @tc.size: MediumTest
1416   * @tc.type: Function
1417   */
TEST_F(UtestPreviewTest,camera_preview_0074)1418 TEST_F(UtestPreviewTest, camera_preview_0074)
1419 {
1420     std::cout << "==========[test log] Preview, Capture->captureId = -1 ,return error." << std::endl;
1421     // 创建并获取streamOperator信息
1422     display_->AchieveStreamOperator();
1423     // 创建数据流
1424     display_->intents = {Camera::PREVIEW};
1425     display_->StartStream(display_->intents);
1426     // 获取预览图
1427     int captureId = -1;
1428     std::shared_ptr<OHOS::Camera::CaptureInfo> captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
1429     captureInfo->streamIds_ = {display_->streamId_preview};
1430     captureInfo->enableShutterCallback_ = false;
1431     bool isStreaming = true;
1432     display_->rc = display_->streamOperator->Capture(captureId, captureInfo, isStreaming);
1433     EXPECT_EQ(Camera::CamRetCode::INVALID_ARGUMENT, display_->rc);
1434 }
1435 
1436 /**
1437   * @tc.name: Preview
1438   * @tc.desc: Preview, Capture->captureInfo->enableShutterCallback = true ,return success.
1439   * @tc.level: Level2
1440   * @tc.size: MediumTest
1441   * @tc.type: Function
1442   */
TEST_F(UtestPreviewTest,camera_preview_0075)1443 TEST_F(UtestPreviewTest, camera_preview_0075)
1444 {
1445     std::cout << "==========[test log] Preview, Capture->captureInfo->enableShutterCallback = true ,";
1446     std::cout << "return success." << std::endl;
1447     // 创建并获取streamOperator信息
1448     display_->AchieveStreamOperator();
1449     // 创建数据流
1450     display_->intents = {Camera::PREVIEW};
1451     display_->StartStream(display_->intents);
1452     // 获取预览图
1453     display_->StartCapture(display_->streamId_preview, display_->captureId_preview, true, true);
1454     // 释放流
1455     display_->captureIds = {display_->captureId_preview};
1456     display_->streamIds = {display_->streamId_preview};
1457     display_->StopStream(display_->captureIds, display_->streamIds);
1458 }
1459 
1460 /**
1461   * @tc.name: Preview
1462   * @tc.desc: CancelCapture captureID = -1.
1463   * @tc.level: Level2
1464   * @tc.size: MediumTest
1465   * @tc.type: Function
1466   */
TEST_F(UtestPreviewTest,camera_preview_0080)1467 TEST_F(UtestPreviewTest, camera_preview_0080)
1468 {
1469     std::cout << "==========[test log] CancelCapture captureID = -1, expected fail." << std::endl;
1470     // 创建并获取streamOperator信息
1471     display_->AchieveStreamOperator();
1472     // 创建数据流
1473     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
1474     producer->SetQueueSize(8); // 8:set bufferQueue size
1475     if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
1476         std::cout << "~~~~~~~" << std::endl;
1477     }
1478     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
1479         display_->BufferCallback(b, display_->preview_mode);
1480         return;
1481     };
1482     producer->SetCallback(callback);
1483     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>> streamInfos;
1484     std::shared_ptr<OHOS::Camera::StreamInfo> streamInfo = std::make_shared<OHOS::Camera::StreamInfo>();
1485     streamInfo->streamId_ = 1001;
1486     streamInfo->width_ = 640; // 640:picture width
1487     streamInfo->height_ = 480; // 480:picture height
1488     streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG;
1489     streamInfo->datasapce_ = 8; // 8:picture datasapce
1490     streamInfo->intent_ = Camera::PREVIEW;
1491     streamInfo->tunneledMode_ = 5; // 5:tunnel mode
1492     streamInfo->bufferQueue_ = producer;
1493     std::vector<std::shared_ptr<OHOS::Camera::StreamInfo>>().swap(streamInfos);
1494     streamInfos.push_back(streamInfo);
1495     display_->rc = display_->streamOperator->CreateStreams(streamInfos);
1496     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1497     // 配流起流
1498     display_->rc = display_->streamOperator->CommitStreams(Camera::NORMAL, nullptr);
1499     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1500     // 获取预览图
1501     int captureId = 100;
1502     std::shared_ptr<OHOS::Camera::CaptureInfo> captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
1503     captureInfo->streamIds_ = {1001};
1504     captureInfo->enableShutterCallback_ = false;
1505     bool isStreaming = true;
1506     display_->rc = display_->streamOperator->Capture(captureId, captureInfo, isStreaming);
1507     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1508     sleep(5);
1509     display_->rc = display_->streamOperator->CancelCapture(-1);
1510     EXPECT_EQ(OHOS::Camera::CamRetCode::INVALID_ARGUMENT, display_->rc);
1511     display_->rc = display_->streamOperator->CancelCapture(captureId);
1512     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1513     // 释放流
1514     display_->rc = display_->streamOperator->ReleaseStreams(captureInfo->streamIds_);
1515     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1516 }
1517 
1518 /**
1519   * @tc.name: Preview
1520   * @tc.desc: CancelCapture without Create capture.
1521   * @tc.level: Level2
1522   * @tc.size: MediumTest
1523   * @tc.type: Function
1524   */
TEST_F(UtestPreviewTest,camera_preview_0090)1525 TEST_F(UtestPreviewTest, camera_preview_0090)
1526 {
1527     std::cout << "==========[test log] CancelCapture without Create capture ." << std::endl;
1528     // 创建并获取streamOperator信息
1529     display_->AchieveStreamOperator();
1530     // 创建数据流
1531     display_->intents = {Camera::PREVIEW};
1532     display_->StartStream(display_->intents);
1533     // 获取预览图
1534     int captureId = 100;
1535     display_->rc = display_->streamOperator->CancelCapture(captureId);
1536     if (display_->rc == Camera::NO_ERROR) {
1537         std::cout << "==========[test log] CancelCapture success." << std::endl;
1538     }
1539     else {
1540         std::cout << "==========[test log] CancelCapture fail, rc = " << display_->rc << std::endl;
1541     }
1542 }
1543 
1544 /**
1545   * @tc.name: Preview
1546   * @tc.desc: Release streams, then createCapture.
1547   * @tc.level: Level2
1548   * @tc.size: MediumTest
1549   * @tc.type: Function
1550   */
TEST_F(UtestPreviewTest,camera_preview_0091)1551 TEST_F(UtestPreviewTest, camera_preview_0091)
1552 {
1553     std::cout << "==========[test log] Create capture, then release streams." << std::endl;
1554     // 创建并获取streamOperator信息
1555     display_->AchieveStreamOperator();
1556     // 启流
1557     display_->intents = {Camera::PREVIEW};
1558     display_->StartStream(display_->intents);
1559     // 获取预览图
1560     display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true);
1561     // 释放流
1562     display_->captureIds = {display_->captureId_preview};
1563     display_->streamIds = {display_->streamId_preview};
1564     display_->StopStream(display_->captureIds, display_->streamIds);
1565 }
1566 
1567 /**
1568   * @tc.name: Preview
1569   * @tc.desc: The same CaptureID, Create capture twice, expected fail.
1570   * @tc.level: Level2
1571   * @tc.size: MediumTest
1572   * @tc.type: Function
1573   */
TEST_F(UtestPreviewTest,camera_preview_0092)1574 TEST_F(UtestPreviewTest, camera_preview_0092)
1575 {
1576     std::cout << "==========[test log] The same CaptureID, Create capture twice, expected fail." << std::endl;
1577     // 创建并获取streamOperator信息
1578     display_->AchieveStreamOperator();
1579     // 启流
1580     display_->intents = {Camera::PREVIEW};
1581     display_->StartStream(display_->intents);
1582     // 获取预览图
1583     display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true);
1584     display_->StartCapture(display_->streamId_preview, display_->captureId_preview, false, true);
1585     // 释放流
1586     display_->captureIds = {display_->captureId_preview};
1587     display_->streamIds = {display_->streamId_preview};
1588     display_->StopStream(display_->captureIds, display_->streamIds);
1589 }
1590 
1591 /**
1592   * @tc.name: Preview
1593   * @tc.desc: Different captureIDs, Create capture,expected success.
1594   * @tc.level: Level2
1595   * @tc.size: MediumTest
1596   * @tc.type: Function
1597   */
TEST_F(UtestPreviewTest,camera_preview_0093)1598 TEST_F(UtestPreviewTest, camera_preview_0093)
1599 {
1600     std::cout << "==========[test log] Different captureIDs, Create capture,expected success." << std::endl;
1601     // 创建并获取streamOperator信息
1602     display_->AchieveStreamOperator();
1603     // 创建数据流
1604     display_->intents = {Camera::PREVIEW};
1605     display_->StartStream(display_->intents);
1606     // 获取预览图
1607     int captureId = 100;
1608     std::shared_ptr<OHOS::Camera::CaptureInfo> captureInfo = std::make_shared<OHOS::Camera::CaptureInfo>();
1609     captureInfo->streamIds_ = {display_->streamId_preview};
1610     captureInfo->enableShutterCallback_ = false;
1611     bool isStreaming = true;
1612     display_->rc = display_->streamOperator->Capture(captureId, captureInfo, isStreaming);
1613     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1614     display_->rc = display_->streamOperator->Capture(captureId + 1, captureInfo, isStreaming);
1615     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1616     display_->streamOperator->CancelCapture(captureId);
1617     // 释放流
1618     display_->rc = display_->streamOperator->ReleaseStreams(captureInfo->streamIds_);
1619     EXPECT_EQ(true, display_->rc == Camera::NO_ERROR);
1620 }
1621