1094332d3Sopenharmony_ci/*
2094332d3Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License.
5094332d3Sopenharmony_ci * You may obtain a copy of the License at
6094332d3Sopenharmony_ci *
7094332d3Sopenharmony_ci *       http://www.apache.org/licenses/LICENSE-2.0
8094332d3Sopenharmony_ci *
9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and
13094332d3Sopenharmony_ci * limitations under the License.
14094332d3Sopenharmony_ci */
15094332d3Sopenharmony_ci#include "camera_preview_test.h"
16094332d3Sopenharmony_ci
17094332d3Sopenharmony_ciusing namespace testing::ext;
18094332d3Sopenharmony_ci
19094332d3Sopenharmony_civoid CameraPreviewTest::SetUpTestCase(void)
20094332d3Sopenharmony_ci{
21094332d3Sopenharmony_ci}
22094332d3Sopenharmony_ci
23094332d3Sopenharmony_civoid CameraPreviewTest::TearDownTestCase(void)
24094332d3Sopenharmony_ci{
25094332d3Sopenharmony_ci}
26094332d3Sopenharmony_ci
27094332d3Sopenharmony_civoid CameraPreviewTest::SetUp(void)
28094332d3Sopenharmony_ci{
29094332d3Sopenharmony_ci    if (cameraBase_ == nullptr)
30094332d3Sopenharmony_ci    cameraBase_ = std::make_shared<TestCameraBase>();
31094332d3Sopenharmony_ci    cameraBase_->Init();
32094332d3Sopenharmony_ci}
33094332d3Sopenharmony_ci
34094332d3Sopenharmony_civoid CameraPreviewTest::TearDown(void)
35094332d3Sopenharmony_ci{
36094332d3Sopenharmony_ci    cameraBase_->Close();
37094332d3Sopenharmony_ci}
38094332d3Sopenharmony_ci
39094332d3Sopenharmony_ci/**
40094332d3Sopenharmony_ci  * @tc.name: Preview
41094332d3Sopenharmony_ci  * @tc.desc: Preview, format error, expected return errorCode.
42094332d3Sopenharmony_ci  * @tc.level: Level2
43094332d3Sopenharmony_ci  * @tc.size: MediumTest
44094332d3Sopenharmony_ci  * @tc.type: Function
45094332d3Sopenharmony_ci  */
46094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_003, TestSize.Level2)
47094332d3Sopenharmony_ci{
48094332d3Sopenharmony_ci    CAMERA_LOGD("Preview, format error, expected return errorCode.");
49094332d3Sopenharmony_ci    // Create and get streamOperator information
50094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
51094332d3Sopenharmony_ci    // Create data stream
52094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
53094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
54094332d3Sopenharmony_ci    }
55094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
56094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
57094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
58094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
59094332d3Sopenharmony_ci    }
60094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
61094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
62094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
63094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
64094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
65094332d3Sopenharmony_ci    streamInfo.format_ = -1;
66094332d3Sopenharmony_ci    streamInfo.dataspace_ = 10; // 10:picture dataspace
67094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
68094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
69094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
70094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
71094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
72094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
73094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR);
74094332d3Sopenharmony_ci    if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) {
75094332d3Sopenharmony_ci        CAMERA_LOGI("CreateStreams success.");
76094332d3Sopenharmony_ci    } else {
77094332d3Sopenharmony_ci        CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc);
78094332d3Sopenharmony_ci    }
79094332d3Sopenharmony_ci}
80094332d3Sopenharmony_ci
81094332d3Sopenharmony_ci/**
82094332d3Sopenharmony_ci  * @tc.name: Preview
83094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, success.
84094332d3Sopenharmony_ci  * @tc.level: Level1
85094332d3Sopenharmony_ci  * @tc.size: MediumTest
86094332d3Sopenharmony_ci  * @tc.type: Function
87094332d3Sopenharmony_ci  */
88094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_020, TestSize.Level1)
89094332d3Sopenharmony_ci{
90094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, success.");
91094332d3Sopenharmony_ci    // Create and get streamOperator information
92094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
93094332d3Sopenharmony_ci    // Create data stream
94094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
95094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
96094332d3Sopenharmony_ci    }
97094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
98094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
99094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
100094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
101094332d3Sopenharmony_ci    }
102094332d3Sopenharmony_ci
103094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
104094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
105094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
106094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
107094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
108094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
109094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
110094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
111094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
112094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
113094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
114094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
115094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
116094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
117094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams's RetCode = %{public}d", cameraBase_->rc);
118094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
119094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, success.");
120094332d3Sopenharmony_ci    // Submit stream information
121094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_);
122094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
123094332d3Sopenharmony_ci    if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) {
124094332d3Sopenharmony_ci        CAMERA_LOGI("CommitStreams, success.");
125094332d3Sopenharmony_ci    } else {
126094332d3Sopenharmony_ci        CAMERA_LOGE("CommitStreams fail, rc = %{public}d", cameraBase_->rc);
127094332d3Sopenharmony_ci    }
128094332d3Sopenharmony_ci    // capture
129094332d3Sopenharmony_ci    cameraBase_->StartCapture(1001, cameraBase_->CAPTURE_ID_PREVIEW, false, true);
130094332d3Sopenharmony_ci    // release stream
131094332d3Sopenharmony_ci    cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW};
132094332d3Sopenharmony_ci    cameraBase_->streamIds = {1001};
133094332d3Sopenharmony_ci    cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds);
134094332d3Sopenharmony_ci}
135094332d3Sopenharmony_ci
136094332d3Sopenharmony_ci/**
137094332d3Sopenharmony_ci  * @tc.name: Preview
138094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->streamId = -1, return error.
139094332d3Sopenharmony_ci  * @tc.level: Level2
140094332d3Sopenharmony_ci  * @tc.size: MediumTest
141094332d3Sopenharmony_ci  * @tc.type: Function
142094332d3Sopenharmony_ci  */
143094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_021, TestSize.Level2)
144094332d3Sopenharmony_ci{
145094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, success.");
146094332d3Sopenharmony_ci    // Create and get streamOperator information
147094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
148094332d3Sopenharmony_ci    // Create data stream
149094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
150094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
151094332d3Sopenharmony_ci    }
152094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
153094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
154094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
155094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
156094332d3Sopenharmony_ci    }
157094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
158094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
159094332d3Sopenharmony_ci    streamInfo.streamId_ = -1;
160094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
161094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
162094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
163094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
164094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
165094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
166094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
167094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
168094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
169094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
170094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams's RetCode = %{public}d", cameraBase_->rc);
171094332d3Sopenharmony_ci    EXPECT_EQ(false, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
172094332d3Sopenharmony_ci    if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) {
173094332d3Sopenharmony_ci        CAMERA_LOGI("CreateStreams, success.");
174094332d3Sopenharmony_ci    } else {
175094332d3Sopenharmony_ci        CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc);
176094332d3Sopenharmony_ci    }
177094332d3Sopenharmony_ci}
178094332d3Sopenharmony_ci
179094332d3Sopenharmony_ci/**
180094332d3Sopenharmony_ci  * @tc.name: Preview
181094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->streamId = 2147483647, return success.
182094332d3Sopenharmony_ci  * @tc.level: Level2
183094332d3Sopenharmony_ci  * @tc.size: MediumTest
184094332d3Sopenharmony_ci  * @tc.type: Function
185094332d3Sopenharmony_ci  */
186094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_022, TestSize.Level2)
187094332d3Sopenharmony_ci{
188094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, StreamInfo->streamId = 2147483647, return success.");
189094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
190094332d3Sopenharmony_ci    // Create data stream
191094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
192094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
193094332d3Sopenharmony_ci    }
194094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
195094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
196094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
197094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
198094332d3Sopenharmony_ci    }
199094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
200094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
201094332d3Sopenharmony_ci    streamInfo.streamId_ = 2147483647;
202094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
203094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
204094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
205094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
206094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
207094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
208094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
209094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
210094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
211094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
212094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
213094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc);
214094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
215094332d3Sopenharmony_ci    if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) {
216094332d3Sopenharmony_ci        CAMERA_LOGI("CreateStreams, success.");
217094332d3Sopenharmony_ci    } else {
218094332d3Sopenharmony_ci        CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc);
219094332d3Sopenharmony_ci    }
220094332d3Sopenharmony_ci    // Submit stream information
221094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_);
222094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
223094332d3Sopenharmony_ci    CAMERA_LOGD("CommitStreams success.");
224094332d3Sopenharmony_ci    // capture
225094332d3Sopenharmony_ci    cameraBase_->StartCapture(2147483647, cameraBase_->CAPTURE_ID_PREVIEW, false, true);
226094332d3Sopenharmony_ci    // release stream
227094332d3Sopenharmony_ci    cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW};
228094332d3Sopenharmony_ci    cameraBase_->streamIds = {2147483647};
229094332d3Sopenharmony_ci    cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds);
230094332d3Sopenharmony_ci}
231094332d3Sopenharmony_ci
232094332d3Sopenharmony_ci/**
233094332d3Sopenharmony_ci  * @tc.name: Preview
234094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = VIDEO, success.
235094332d3Sopenharmony_ci  * @tc.level: Level2
236094332d3Sopenharmony_ci  * @tc.size: MediumTest
237094332d3Sopenharmony_ci  * @tc.type: Function
238094332d3Sopenharmony_ci  */
239094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_032, TestSize.Level2)
240094332d3Sopenharmony_ci{
241094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = VIDEO, success.");
242094332d3Sopenharmony_ci    // Create and get streamOperator information
243094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
244094332d3Sopenharmony_ci    // start stream
245094332d3Sopenharmony_ci    cameraBase_->intents = {PREVIEW, VIDEO};
246094332d3Sopenharmony_ci    cameraBase_->StartStream(cameraBase_->intents);
247094332d3Sopenharmony_ci    // Get preview
248094332d3Sopenharmony_ci    cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true);
249094332d3Sopenharmony_ci    cameraBase_->StartCapture(cameraBase_->STREAM_ID_VIDEO, cameraBase_->CAPTURE_ID_VIDEO, false, true);
250094332d3Sopenharmony_ci    // release stream
251094332d3Sopenharmony_ci    cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_VIDEO};
252094332d3Sopenharmony_ci    cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_VIDEO};
253094332d3Sopenharmony_ci    cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds);
254094332d3Sopenharmony_ci}
255094332d3Sopenharmony_ci
256094332d3Sopenharmony_ci/**
257094332d3Sopenharmony_ci  * @tc.name: Preview
258094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = STILL_CAPTURE, success.
259094332d3Sopenharmony_ci  * @tc.level: Level2
260094332d3Sopenharmony_ci  * @tc.size: MediumTest
261094332d3Sopenharmony_ci  * @tc.type: Function
262094332d3Sopenharmony_ci  */
263094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_033, TestSize.Level2)
264094332d3Sopenharmony_ci{
265094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = STILL_CAPTURE, success.");
266094332d3Sopenharmony_ci    // Get the stream manager
267094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
268094332d3Sopenharmony_ci    // start stream
269094332d3Sopenharmony_ci    cameraBase_->intents = {PREVIEW, STILL_CAPTURE};
270094332d3Sopenharmony_ci    cameraBase_->StartStream(cameraBase_->intents);
271094332d3Sopenharmony_ci    // Get preview
272094332d3Sopenharmony_ci    cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, false, true);
273094332d3Sopenharmony_ci    cameraBase_->StartCapture(cameraBase_->STREAM_ID_CAPTURE, cameraBase_->CAPTURE_ID_CAPTURE, false, true);
274094332d3Sopenharmony_ci    // release stream
275094332d3Sopenharmony_ci    cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW, cameraBase_->CAPTURE_ID_CAPTURE};
276094332d3Sopenharmony_ci    cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW, cameraBase_->STREAM_ID_CAPTURE};
277094332d3Sopenharmony_ci    cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds);
278094332d3Sopenharmony_ci}
279094332d3Sopenharmony_ci
280094332d3Sopenharmony_ci/**
281094332d3Sopenharmony_ci  * @tc.name: Preview
282094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = OHOS::POST_VIEW;, success.
283094332d3Sopenharmony_ci  * @tc.level: Level2
284094332d3Sopenharmony_ci  * @tc.size: MediumTest
285094332d3Sopenharmony_ci  * @tc.type: Function
286094332d3Sopenharmony_ci  */
287094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_034, TestSize.Level2)
288094332d3Sopenharmony_ci{
289094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = POST_VIEW, success.");
290094332d3Sopenharmony_ci    // Create and get streamOperator information
291094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
292094332d3Sopenharmony_ci    // Create preview stream
293094332d3Sopenharmony_ci    // std::shared_ptr<OHOS::IBufferProducer> producer = OHOS::IBufferProducer::CreateBufferQueue();
294094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
295094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
296094332d3Sopenharmony_ci    }
297094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
298094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
299094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
300094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
301094332d3Sopenharmony_ci    }
302094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
303094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
304094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
305094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
306094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
307094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
308094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
309094332d3Sopenharmony_ci    streamInfo.intent_ = POST_VIEW;
310094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
311094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
312094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
313094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
314094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
315094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
316094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
317094332d3Sopenharmony_ci    if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) {
318094332d3Sopenharmony_ci        CAMERA_LOGI("CreateStreams success.");
319094332d3Sopenharmony_ci    } else {
320094332d3Sopenharmony_ci        CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc);
321094332d3Sopenharmony_ci    }
322094332d3Sopenharmony_ci    // release stream
323094332d3Sopenharmony_ci    std::vector<int> streamIds;
324094332d3Sopenharmony_ci    streamIds.push_back(streamInfo.streamId_);
325094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(streamIds);
326094332d3Sopenharmony_ci    CAMERA_LOGD("ReleaseStreams's RetCode = %{public}d", cameraBase_->rc);
327094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
328094332d3Sopenharmony_ci    if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) {
329094332d3Sopenharmony_ci        CAMERA_LOGI("ReleaseStreams success.");
330094332d3Sopenharmony_ci    } else {
331094332d3Sopenharmony_ci        CAMERA_LOGE("ReleaseStreams fail, rc = %{public}d", cameraBase_->rc);
332094332d3Sopenharmony_ci    }
333094332d3Sopenharmony_ci}
334094332d3Sopenharmony_ci
335094332d3Sopenharmony_ci/**
336094332d3Sopenharmony_ci  * @tc.name: Preview
337094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = OHOS::ANALYZE;, success.
338094332d3Sopenharmony_ci  * @tc.level: Level2
339094332d3Sopenharmony_ci  * @tc.size: MediumTest
340094332d3Sopenharmony_ci  * @tc.type: Function
341094332d3Sopenharmony_ci  */
342094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_035, TestSize.Level2)
343094332d3Sopenharmony_ci{
344094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = ANALYZE, success.");
345094332d3Sopenharmony_ci    // Create and get streamOperator information
346094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
347094332d3Sopenharmony_ci    // Create data stream
348094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
349094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
350094332d3Sopenharmony_ci    }
351094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
352094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
353094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
354094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
355094332d3Sopenharmony_ci    }
356094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
357094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
358094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
359094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
360094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
361094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
362094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
363094332d3Sopenharmony_ci    streamInfo.intent_ = ANALYZE;
364094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
365094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
366094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
367094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
368094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
369094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
370094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc);
371094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
372094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams success.");
373094332d3Sopenharmony_ci    // release stream
374094332d3Sopenharmony_ci    std::vector<int> streamIds;
375094332d3Sopenharmony_ci    streamIds.push_back(streamInfo.streamId_);
376094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(streamIds);
377094332d3Sopenharmony_ci    CAMERA_LOGD("ReleaseStreams RetCode = %{public}d", cameraBase_->rc);
378094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
379094332d3Sopenharmony_ci    if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) {
380094332d3Sopenharmony_ci        CAMERA_LOGI("ReleaseStreams success.");
381094332d3Sopenharmony_ci    }
382094332d3Sopenharmony_ci    else {
383094332d3Sopenharmony_ci        CAMERA_LOGE("ReleaseStreams fail, rc = %{public}d", cameraBase_->rc);
384094332d3Sopenharmony_ci    }
385094332d3Sopenharmony_ci}
386094332d3Sopenharmony_ci
387094332d3Sopenharmony_ci/**
388094332d3Sopenharmony_ci  * @tc.name: Preview
389094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->StreamIntent = CUSTOM, not support.
390094332d3Sopenharmony_ci  * @tc.level: Level2
391094332d3Sopenharmony_ci  * @tc.size: MediumTest
392094332d3Sopenharmony_ci  * @tc.type: Function
393094332d3Sopenharmony_ci  */
394094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_036, TestSize.Level2)
395094332d3Sopenharmony_ci{
396094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, StreamInfo->StreamIntent = Camera::CUSTOM, not support.");
397094332d3Sopenharmony_ci    // Create and get streamOperator information
398094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
399094332d3Sopenharmony_ci    // Create data stream
400094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
401094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
402094332d3Sopenharmony_ci    }
403094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
404094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
405094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
406094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
407094332d3Sopenharmony_ci    }
408094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
409094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
410094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
411094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
412094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
413094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
414094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
415094332d3Sopenharmony_ci    streamInfo.intent_ = CUSTOM;
416094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
417094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
418094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
419094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
420094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
421094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
422094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc);
423094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR);
424094332d3Sopenharmony_ci    if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) {
425094332d3Sopenharmony_ci        CAMERA_LOGI("CreateStreams success.");
426094332d3Sopenharmony_ci    } else {
427094332d3Sopenharmony_ci        CAMERA_LOGE("CreateStreams fail, rc = %{public}d", cameraBase_->rc);
428094332d3Sopenharmony_ci    }
429094332d3Sopenharmony_ci}
430094332d3Sopenharmony_ci
431094332d3Sopenharmony_ci/**
432094332d3Sopenharmony_ci  * @tc.name: Preview
433094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->tunneledMode = false, success.
434094332d3Sopenharmony_ci  * @tc.level: Level2
435094332d3Sopenharmony_ci  * @tc.size: MediumTest
436094332d3Sopenharmony_ci  * @tc.type: Function
437094332d3Sopenharmony_ci  */
438094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_037, TestSize.Level2)
439094332d3Sopenharmony_ci{
440094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, StreamInfo->tunneledMode = false, success.");
441094332d3Sopenharmony_ci    // Create and get streamOperator information
442094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
443094332d3Sopenharmony_ci    // Create data stream
444094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
445094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
446094332d3Sopenharmony_ci    }
447094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
448094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
449094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
450094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
451094332d3Sopenharmony_ci    }
452094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
453094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
454094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
455094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
456094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
457094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
458094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
459094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
460094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = false;
461094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
462094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
463094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
464094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
465094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
466094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc);
467094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == INVALID_ARGUMENT);
468094332d3Sopenharmony_ci    if (cameraBase_->rc == INVALID_ARGUMENT) {
469094332d3Sopenharmony_ci        CAMERA_LOGE("CreateStreams fail.");
470094332d3Sopenharmony_ci    } else {
471094332d3Sopenharmony_ci        CAMERA_LOGI("CreateStreams success.");
472094332d3Sopenharmony_ci    }
473094332d3Sopenharmony_ci}
474094332d3Sopenharmony_ci
475094332d3Sopenharmony_ci/**
476094332d3Sopenharmony_ci  * @tc.name: Preview
477094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->minFrameDuration = -1, return error.
478094332d3Sopenharmony_ci  * @tc.level: Level2
479094332d3Sopenharmony_ci  * @tc.size: MediumTest
480094332d3Sopenharmony_ci  * @tc.type: Function
481094332d3Sopenharmony_ci  */
482094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_038, TestSize.Level2)
483094332d3Sopenharmony_ci{
484094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, StreamInfo->minFrameDuration = -1, return error.");
485094332d3Sopenharmony_ci    // Create and get streamOperator information
486094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
487094332d3Sopenharmony_ci    // Create data stream
488094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
489094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
490094332d3Sopenharmony_ci    }
491094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
492094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
493094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
494094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
495094332d3Sopenharmony_ci    }
496094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
497094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
498094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
499094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
500094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
501094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
502094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
503094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
504094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 0;
505094332d3Sopenharmony_ci    streamInfo.minFrameDuration_ = -1;
506094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
507094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
508094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
509094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
510094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
511094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc);
512094332d3Sopenharmony_ci    EXPECT_EQ(INVALID_ARGUMENT, cameraBase_->rc);
513094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, failed.");
514094332d3Sopenharmony_ci}
515094332d3Sopenharmony_ci
516094332d3Sopenharmony_ci/**
517094332d3Sopenharmony_ci  * @tc.name: Preview
518094332d3Sopenharmony_ci  * @tc.desc: CreateStreams, StreamInfo->minFrameDuration = 2147483647, success.
519094332d3Sopenharmony_ci  * @tc.level: Level2
520094332d3Sopenharmony_ci  * @tc.size: MediumTest
521094332d3Sopenharmony_ci  * @tc.type: Function
522094332d3Sopenharmony_ci  */
523094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_039, TestSize.Level2)
524094332d3Sopenharmony_ci{
525094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, StreamInfo->minFrameDuration = 2147483647, success.");
526094332d3Sopenharmony_ci    // Create and get streamOperator information
527094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
528094332d3Sopenharmony_ci    // Create data stream
529094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
530094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
531094332d3Sopenharmony_ci    }
532094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
533094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
534094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
535094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
536094332d3Sopenharmony_ci    }
537094332d3Sopenharmony_ci
538094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
539094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
540094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
541094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
542094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
543094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
544094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
545094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
546094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 0;
547094332d3Sopenharmony_ci    streamInfo.minFrameDuration_ = 2147483647;
548094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
549094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
550094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
551094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
552094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
553094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc);
554094332d3Sopenharmony_ci    EXPECT_EQ(false, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
555094332d3Sopenharmony_ci    CAMERA_LOGD("CreateStreams, success.");
556094332d3Sopenharmony_ci}
557094332d3Sopenharmony_ci
558094332d3Sopenharmony_ci/**
559094332d3Sopenharmony_ci  * @tc.name: Preview
560094332d3Sopenharmony_ci  * @tc.desc: Preview, CommitStreams Metadata = nullptr.
561094332d3Sopenharmony_ci  * @tc.level: Level2
562094332d3Sopenharmony_ci  * @tc.size: MediumTest
563094332d3Sopenharmony_ci  * @tc.type: Function
564094332d3Sopenharmony_ci  */
565094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_040, TestSize.Level2)
566094332d3Sopenharmony_ci{
567094332d3Sopenharmony_ci    CAMERA_LOGD("Preview, CommitStreams Metadata = nullptr.");
568094332d3Sopenharmony_ci    // Create and get streamOperator information
569094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
570094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
571094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
572094332d3Sopenharmony_ci    }
573094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
574094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
575094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
576094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
577094332d3Sopenharmony_ci    }
578094332d3Sopenharmony_ci
579094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
580094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
581094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
582094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
583094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
584094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
585094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
586094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
587094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 0;
588094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
589094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
590094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
591094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
592094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
593094332d3Sopenharmony_ci    // Distribution stream
594094332d3Sopenharmony_ci    std::vector<uint8_t> modeSetting = {};
595094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, modeSetting);
596094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->CreateStreams's RetCode = %{public}d", cameraBase_->rc);
597094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR);
598094332d3Sopenharmony_ci    // release stream
599094332d3Sopenharmony_ci    std::vector<int> streamIds;
600094332d3Sopenharmony_ci    streamIds.push_back(-1);
601094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(streamIds);
602094332d3Sopenharmony_ci}
603094332d3Sopenharmony_ci
604094332d3Sopenharmony_ci/**
605094332d3Sopenharmony_ci  * @tc.name: Preview
606094332d3Sopenharmony_ci  * @tc.desc: Preview, CommitStreams without CreateStreams, expected fail.
607094332d3Sopenharmony_ci  * @tc.level: Level2
608094332d3Sopenharmony_ci  * @tc.size: MediumTest
609094332d3Sopenharmony_ci  * @tc.type: Function
610094332d3Sopenharmony_ci  */
611094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_050, TestSize.Level2)
612094332d3Sopenharmony_ci{
613094332d3Sopenharmony_ci    CAMERA_LOGD("Preview, CommitStreams without CreateStreams, expected fail.");
614094332d3Sopenharmony_ci    // Create and get streamOperator information
615094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
616094332d3Sopenharmony_ci    // Distribution stream
617094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_);
618094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->CommitStreams's RetCode = %{public}d", cameraBase_->rc);
619094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == INVALID_ARGUMENT);
620094332d3Sopenharmony_ci    // release stream
621094332d3Sopenharmony_ci    std::vector<int> streamIds;
622094332d3Sopenharmony_ci    streamIds.push_back(-1);
623094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(streamIds);
624094332d3Sopenharmony_ci}
625094332d3Sopenharmony_ci
626094332d3Sopenharmony_ci/**
627094332d3Sopenharmony_ci  * @tc.name: Preview
628094332d3Sopenharmony_ci  * @tc.desc: Preview  and release streams, success.
629094332d3Sopenharmony_ci  * @tc.level: Level1
630094332d3Sopenharmony_ci  * @tc.size: MediumTest
631094332d3Sopenharmony_ci  * @tc.type: Function
632094332d3Sopenharmony_ci  */
633094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_060, TestSize.Level1)
634094332d3Sopenharmony_ci{
635094332d3Sopenharmony_ci    CAMERA_LOGD("Preview  and release streams, success.");
636094332d3Sopenharmony_ci    // Create and get streamOperator information
637094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
638094332d3Sopenharmony_ci    // Create data stream
639094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
640094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
641094332d3Sopenharmony_ci    }
642094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
643094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
644094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
645094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
646094332d3Sopenharmony_ci    }
647094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
648094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
649094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
650094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
651094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
652094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
653094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
654094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
655094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
656094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
657094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
658094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
659094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
660094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
661094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
662094332d3Sopenharmony_ci    // Distribution stream
663094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_);
664094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
665094332d3Sopenharmony_ci    // Get preview
666094332d3Sopenharmony_ci    int captureId = 2001;
667094332d3Sopenharmony_ci    CaptureInfo captureInfo = {};
668094332d3Sopenharmony_ci    captureInfo.streamIds_ = {1001};
669094332d3Sopenharmony_ci    captureInfo.captureSetting_ = cameraBase_->ability_;
670094332d3Sopenharmony_ci    captureInfo.enableShutterCallback_ = false;
671094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, true);
672094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
673094332d3Sopenharmony_ci    sleep(3);
674094332d3Sopenharmony_ci    cameraBase_->streamOperator->CancelCapture(captureId);
675094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
676094332d3Sopenharmony_ci    // release stream
677094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_);
678094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
679094332d3Sopenharmony_ci}
680094332d3Sopenharmony_ci
681094332d3Sopenharmony_ci/**
682094332d3Sopenharmony_ci  * @tc.name: Preview
683094332d3Sopenharmony_ci  * @tc.desc: ReleaseStreams-> streamID = -1, expected INVALID_ARGUMENT.
684094332d3Sopenharmony_ci  * @tc.level: Level2
685094332d3Sopenharmony_ci  * @tc.size: MediumTest
686094332d3Sopenharmony_ci  * @tc.type: Function
687094332d3Sopenharmony_ci  */
688094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_061, TestSize.Level2)
689094332d3Sopenharmony_ci{
690094332d3Sopenharmony_ci    CAMERA_LOGD("ReleaseStreams-> streamID = -1, expected success.");
691094332d3Sopenharmony_ci    // Create and get streamOperator information
692094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
693094332d3Sopenharmony_ci    // Create preview stream
694094332d3Sopenharmony_ci    // std::shared_ptr<OHOS::IBufferProducer> producer = OHOS::IBufferProducer::CreateBufferQueue();
695094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
696094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
697094332d3Sopenharmony_ci    }
698094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
699094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
700094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
701094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
702094332d3Sopenharmony_ci    }
703094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
704094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
705094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
706094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
707094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
708094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
709094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
710094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
711094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
712094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
713094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
714094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
715094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
716094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
717094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
718094332d3Sopenharmony_ci    // Distribution stream
719094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_);
720094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
721094332d3Sopenharmony_ci    // Get preview
722094332d3Sopenharmony_ci    int captureId = 2001;
723094332d3Sopenharmony_ci    CaptureInfo captureInfo = {};
724094332d3Sopenharmony_ci    captureInfo.streamIds_ = {1001};
725094332d3Sopenharmony_ci    captureInfo.captureSetting_ = cameraBase_->ability_;
726094332d3Sopenharmony_ci    captureInfo.enableShutterCallback_ = false;
727094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, true);
728094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
729094332d3Sopenharmony_ci    sleep(3);
730094332d3Sopenharmony_ci    cameraBase_->streamOperator->CancelCapture(captureId);
731094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
732094332d3Sopenharmony_ci    // release stream
733094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(
734094332d3Sopenharmony_ci        {-1});
735094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->ReleaseStreams's rc = %{public}d", cameraBase_->rc);
736094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == INVALID_ARGUMENT);
737094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(
738094332d3Sopenharmony_ci        {1001});
739094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
740094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->ReleaseStreams's RetCode = %{public}d", cameraBase_->rc);
741094332d3Sopenharmony_ci}
742094332d3Sopenharmony_ci
743094332d3Sopenharmony_ci/**
744094332d3Sopenharmony_ci  * @tc.name: Preview
745094332d3Sopenharmony_ci  * @tc.desc: ReleaseStreams no exist streamID, expect success.
746094332d3Sopenharmony_ci  * @tc.level: Level2
747094332d3Sopenharmony_ci  * @tc.size: MediumTest
748094332d3Sopenharmony_ci  * @tc.type: Function
749094332d3Sopenharmony_ci  */
750094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_062, TestSize.Level2)
751094332d3Sopenharmony_ci{
752094332d3Sopenharmony_ci    CAMERA_LOGD("ReleaseStreams no exist streamID, expect success.");
753094332d3Sopenharmony_ci    // Create and get streamOperator information
754094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
755094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(
756094332d3Sopenharmony_ci        {9999});
757094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->ReleaseStreams's RetCode = %{public}d", cameraBase_->rc);
758094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
759094332d3Sopenharmony_ci}
760094332d3Sopenharmony_ci
761094332d3Sopenharmony_ci/**
762094332d3Sopenharmony_ci  * @tc.name: Preview
763094332d3Sopenharmony_ci  * @tc.desc: Preview, Capture->captureInfo->streamID = -1 ,return error.
764094332d3Sopenharmony_ci  * @tc.level: Level2
765094332d3Sopenharmony_ci  * @tc.size: MediumTest
766094332d3Sopenharmony_ci  * @tc.type: Function
767094332d3Sopenharmony_ci  */
768094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_070, TestSize.Level2)
769094332d3Sopenharmony_ci{
770094332d3Sopenharmony_ci    CAMERA_LOGD("Preview, Capture->captureInfo->streamID = -1 ,return error.");
771094332d3Sopenharmony_ci    // Create and get streamOperator information
772094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
773094332d3Sopenharmony_ci    // Create preview stream
774094332d3Sopenharmony_ci    // std::shared_ptr<OHOS::IBufferProducer> producer = OHOS::IBufferProducer::CreateBufferQueue();
775094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
776094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
777094332d3Sopenharmony_ci    }
778094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
779094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
780094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
781094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
782094332d3Sopenharmony_ci    }
783094332d3Sopenharmony_ci
784094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
785094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
786094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
787094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
788094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
789094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
790094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
791094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
792094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
793094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
794094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
795094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
796094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
797094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
798094332d3Sopenharmony_ci    if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) {
799094332d3Sopenharmony_ci        CAMERA_LOGE("CreateStreams failed!");
800094332d3Sopenharmony_ci    }
801094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
802094332d3Sopenharmony_ci    // Distribution stream
803094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_);
804094332d3Sopenharmony_ci    if (cameraBase_->rc != HDI::Camera::V1_0::NO_ERROR) {
805094332d3Sopenharmony_ci        CAMERA_LOGE("CommitStreams failed!");
806094332d3Sopenharmony_ci    }
807094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
808094332d3Sopenharmony_ci    // Get preview
809094332d3Sopenharmony_ci    int captureId = 2001;
810094332d3Sopenharmony_ci    CaptureInfo captureInfo = {};
811094332d3Sopenharmony_ci    captureInfo.streamIds_ = {-1};
812094332d3Sopenharmony_ci    captureInfo.captureSetting_ = cameraBase_->ability_;
813094332d3Sopenharmony_ci    captureInfo.enableShutterCallback_ = true;
814094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, true);
815094332d3Sopenharmony_ci    CAMERA_LOGD("streamOperator->Capture rc = %{public}d", cameraBase_->rc);
816094332d3Sopenharmony_ci    if (cameraBase_->rc == INVALID_ARGUMENT) {
817094332d3Sopenharmony_ci        CAMERA_LOGE("Capture failed!");
818094332d3Sopenharmony_ci    }
819094332d3Sopenharmony_ci    EXPECT_EQ(INVALID_ARGUMENT, cameraBase_->rc);
820094332d3Sopenharmony_ci}
821094332d3Sopenharmony_ci
822094332d3Sopenharmony_ci/**
823094332d3Sopenharmony_ci  * @tc.name: Preview
824094332d3Sopenharmony_ci  * @tc.desc: Preview, Capture->isStreaming = false ,expected success.
825094332d3Sopenharmony_ci  * @tc.level: Level2
826094332d3Sopenharmony_ci  * @tc.size: MediumTest
827094332d3Sopenharmony_ci  * @tc.type: Function
828094332d3Sopenharmony_ci  */
829094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_073, TestSize.Level2)
830094332d3Sopenharmony_ci{
831094332d3Sopenharmony_ci    CAMERA_LOGD("Preview, Capture->isStreaming = false ,expected success.");
832094332d3Sopenharmony_ci    // Create and get streamOperator information
833094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
834094332d3Sopenharmony_ci    // Create data stream
835094332d3Sopenharmony_ci    cameraBase_->intents = {PREVIEW};
836094332d3Sopenharmony_ci    cameraBase_->StartStream(cameraBase_->intents);
837094332d3Sopenharmony_ci    // Get preview
838094332d3Sopenharmony_ci    int captureId = 2001;
839094332d3Sopenharmony_ci    CaptureInfo captureInfo = {};
840094332d3Sopenharmony_ci    captureInfo.streamIds_ = {cameraBase_->STREAM_ID_PREVIEW};
841094332d3Sopenharmony_ci    captureInfo.captureSetting_ = cameraBase_->ability_;
842094332d3Sopenharmony_ci    captureInfo.enableShutterCallback_ = true;
843094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, false);
844094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
845094332d3Sopenharmony_ci    sleep(3);
846094332d3Sopenharmony_ci    cameraBase_->streamOperator->CancelCapture(captureId);
847094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
848094332d3Sopenharmony_ci    // release stream
849094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_);
850094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
851094332d3Sopenharmony_ci}
852094332d3Sopenharmony_ci
853094332d3Sopenharmony_ci/**
854094332d3Sopenharmony_ci  * @tc.name: Preview
855094332d3Sopenharmony_ci  * @tc.desc: Preview, Capture->captureId = -1 ,return error.
856094332d3Sopenharmony_ci  * @tc.level: Level2
857094332d3Sopenharmony_ci  * @tc.size: MediumTest
858094332d3Sopenharmony_ci  * @tc.type: Function
859094332d3Sopenharmony_ci  */
860094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_074, TestSize.Level2)
861094332d3Sopenharmony_ci{
862094332d3Sopenharmony_ci    CAMERA_LOGD("Preview, Capture->captureId = -1 ,return error.");
863094332d3Sopenharmony_ci    // Create and get streamOperator information
864094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
865094332d3Sopenharmony_ci    // Create data stream
866094332d3Sopenharmony_ci    cameraBase_->intents = {PREVIEW};
867094332d3Sopenharmony_ci    cameraBase_->StartStream(cameraBase_->intents);
868094332d3Sopenharmony_ci    // Get preview
869094332d3Sopenharmony_ci    int captureId = -1;
870094332d3Sopenharmony_ci    CaptureInfo captureInfo = {};
871094332d3Sopenharmony_ci    captureInfo.streamIds_ = {cameraBase_->STREAM_ID_PREVIEW};
872094332d3Sopenharmony_ci    captureInfo.captureSetting_ = cameraBase_->ability_;
873094332d3Sopenharmony_ci    captureInfo.enableShutterCallback_ = false;
874094332d3Sopenharmony_ci    bool isStreaming = true;
875094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming);
876094332d3Sopenharmony_ci    EXPECT_EQ(INVALID_ARGUMENT, cameraBase_->rc);
877094332d3Sopenharmony_ci}
878094332d3Sopenharmony_ci
879094332d3Sopenharmony_ci/**
880094332d3Sopenharmony_ci  * @tc.name: Preview
881094332d3Sopenharmony_ci  * @tc.desc: Preview, Capture->captureInfo->enableShutterCallback = true ,return success.
882094332d3Sopenharmony_ci  * @tc.level: Level2
883094332d3Sopenharmony_ci  * @tc.size: MediumTest
884094332d3Sopenharmony_ci  * @tc.type: Function
885094332d3Sopenharmony_ci  */
886094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_075, TestSize.Level2)
887094332d3Sopenharmony_ci{
888094332d3Sopenharmony_ci    CAMERA_LOGD("Preview, Capture->captureInfo->enableShutterCallback = true, return success.");
889094332d3Sopenharmony_ci    // Create and get streamOperator information
890094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
891094332d3Sopenharmony_ci    // Create data stream
892094332d3Sopenharmony_ci    cameraBase_->intents = {PREVIEW};
893094332d3Sopenharmony_ci    cameraBase_->StartStream(cameraBase_->intents);
894094332d3Sopenharmony_ci    // Get preview
895094332d3Sopenharmony_ci    cameraBase_->StartCapture(cameraBase_->STREAM_ID_PREVIEW, cameraBase_->CAPTURE_ID_PREVIEW, true, true);
896094332d3Sopenharmony_ci    // release stream
897094332d3Sopenharmony_ci    cameraBase_->captureIds = {cameraBase_->CAPTURE_ID_PREVIEW};
898094332d3Sopenharmony_ci    cameraBase_->streamIds = {cameraBase_->STREAM_ID_PREVIEW};
899094332d3Sopenharmony_ci    cameraBase_->StopStream(cameraBase_->captureIds, cameraBase_->streamIds);
900094332d3Sopenharmony_ci}
901094332d3Sopenharmony_ci
902094332d3Sopenharmony_ci/**
903094332d3Sopenharmony_ci  * @tc.name: Preview
904094332d3Sopenharmony_ci  * @tc.desc: CancelCapture captureID = -1.
905094332d3Sopenharmony_ci  * @tc.level: Level2
906094332d3Sopenharmony_ci  * @tc.size: MediumTest
907094332d3Sopenharmony_ci  * @tc.type: Function
908094332d3Sopenharmony_ci  */
909094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_080, TestSize.Level2)
910094332d3Sopenharmony_ci{
911094332d3Sopenharmony_ci    CAMERA_LOGD("CancelCapture captureID = -1, expected fail.");
912094332d3Sopenharmony_ci    // Create and get streamOperator information
913094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
914094332d3Sopenharmony_ci    // Create data stream
915094332d3Sopenharmony_ci    if (cameraBase_->streamCustomerPreview_ == nullptr) {
916094332d3Sopenharmony_ci        cameraBase_->streamCustomerPreview_ = std::make_shared<StreamCustomer>();
917094332d3Sopenharmony_ci    }
918094332d3Sopenharmony_ci    OHOS::sptr<OHOS::IBufferProducer> producer = cameraBase_->streamCustomerPreview_->CreateProducer();
919094332d3Sopenharmony_ci    producer->SetQueueSize(8); // 8:set bufferQueue size
920094332d3Sopenharmony_ci    if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size
921094332d3Sopenharmony_ci        CAMERA_LOGE("~~~~~~~");
922094332d3Sopenharmony_ci    }
923094332d3Sopenharmony_ci
924094332d3Sopenharmony_ci    std::vector<StreamInfo> streamInfos;
925094332d3Sopenharmony_ci    StreamInfo streamInfo = {};
926094332d3Sopenharmony_ci    streamInfo.streamId_ = 1001;
927094332d3Sopenharmony_ci    streamInfo.width_ = 640; // 640:picture width
928094332d3Sopenharmony_ci    streamInfo.height_ = 480; // 480:picture height
929094332d3Sopenharmony_ci    streamInfo.format_ = PIXEL_FMT_RGBA_8888;
930094332d3Sopenharmony_ci    streamInfo.dataspace_ = 8; // 8:picture dataspace
931094332d3Sopenharmony_ci    streamInfo.intent_ = PREVIEW;
932094332d3Sopenharmony_ci    streamInfo.tunneledMode_ = 5; // 5:tunnel mode
933094332d3Sopenharmony_ci    streamInfo.bufferQueue_ = new BufferProducerSequenceable(producer);
934094332d3Sopenharmony_ci    ASSERT_NE(streamInfo.bufferQueue_, nullptr);
935094332d3Sopenharmony_ci    std::vector<StreamInfo>().swap(streamInfos);
936094332d3Sopenharmony_ci    streamInfos.push_back(streamInfo);
937094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CreateStreams(streamInfos);
938094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
939094332d3Sopenharmony_ci    // Distribution stream
940094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CommitStreams(NORMAL, cameraBase_->ability_);
941094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
942094332d3Sopenharmony_ci    // Get preview
943094332d3Sopenharmony_ci    int captureId = 100;
944094332d3Sopenharmony_ci    CaptureInfo captureInfo = {};
945094332d3Sopenharmony_ci    captureInfo.streamIds_ = {1001};
946094332d3Sopenharmony_ci    captureInfo.captureSetting_ = cameraBase_->ability_;
947094332d3Sopenharmony_ci    captureInfo.enableShutterCallback_ = false;
948094332d3Sopenharmony_ci    bool isStreaming = true;
949094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming);
950094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
951094332d3Sopenharmony_ci    sleep(3);
952094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(-1);
953094332d3Sopenharmony_ci    EXPECT_EQ(INVALID_ARGUMENT, cameraBase_->rc);
954094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(captureId);
955094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
956094332d3Sopenharmony_ci    // release stream
957094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_);
958094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
959094332d3Sopenharmony_ci}
960094332d3Sopenharmony_ci
961094332d3Sopenharmony_ci/**
962094332d3Sopenharmony_ci  * @tc.name: Preview
963094332d3Sopenharmony_ci  * @tc.desc: CancelCapture without Create capture.
964094332d3Sopenharmony_ci  * @tc.level: Level2
965094332d3Sopenharmony_ci  * @tc.size: MediumTest
966094332d3Sopenharmony_ci  * @tc.type: Function
967094332d3Sopenharmony_ci  */
968094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_090, TestSize.Level2)
969094332d3Sopenharmony_ci{
970094332d3Sopenharmony_ci    CAMERA_LOGD("CancelCapture without Create capture.");
971094332d3Sopenharmony_ci    // Create and get streamOperator information
972094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
973094332d3Sopenharmony_ci    // Create data stream
974094332d3Sopenharmony_ci    cameraBase_->intents = {PREVIEW};
975094332d3Sopenharmony_ci    cameraBase_->StartStream(cameraBase_->intents);
976094332d3Sopenharmony_ci    // Get preview
977094332d3Sopenharmony_ci    int captureId = 100;
978094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(captureId);
979094332d3Sopenharmony_ci    if (cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR) {
980094332d3Sopenharmony_ci        CAMERA_LOGI("CancelCapture success.");
981094332d3Sopenharmony_ci    } else {
982094332d3Sopenharmony_ci        CAMERA_LOGE("CancelCapture fail, rc = %{public}d", cameraBase_->rc);
983094332d3Sopenharmony_ci    }
984094332d3Sopenharmony_ci}
985094332d3Sopenharmony_ci
986094332d3Sopenharmony_ci/**
987094332d3Sopenharmony_ci  * @tc.name: Preview
988094332d3Sopenharmony_ci  * @tc.desc: The same CaptureID, Create capture twice, expected fail.
989094332d3Sopenharmony_ci  * @tc.level: Level2
990094332d3Sopenharmony_ci  * @tc.size: MediumTest
991094332d3Sopenharmony_ci  * @tc.type: Function
992094332d3Sopenharmony_ci  */
993094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_092, TestSize.Level2)
994094332d3Sopenharmony_ci{
995094332d3Sopenharmony_ci    CAMERA_LOGD("The same CaptureID, Create capture twice, expected fail.");
996094332d3Sopenharmony_ci    // Create and get streamOperator information
997094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
998094332d3Sopenharmony_ci    // start stream
999094332d3Sopenharmony_ci    cameraBase_->intents = {PREVIEW};
1000094332d3Sopenharmony_ci    cameraBase_->StartStream(cameraBase_->intents);
1001094332d3Sopenharmony_ci
1002094332d3Sopenharmony_ci    int captureId = cameraBase_->CAPTURE_ID_PREVIEW;
1003094332d3Sopenharmony_ci    CaptureInfo captureInfo = {};
1004094332d3Sopenharmony_ci    captureInfo.streamIds_ = {cameraBase_->STREAM_ID_PREVIEW};
1005094332d3Sopenharmony_ci    captureInfo.captureSetting_ = cameraBase_->ability_;
1006094332d3Sopenharmony_ci    captureInfo.enableShutterCallback_ = false;
1007094332d3Sopenharmony_ci    bool isStreaming = true;
1008094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming);
1009094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
1010094332d3Sopenharmony_ci
1011094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming);
1012094332d3Sopenharmony_ci    EXPECT_EQ(false, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
1013094332d3Sopenharmony_ci
1014094332d3Sopenharmony_ci    sleep(2);
1015094332d3Sopenharmony_ci    // cancel capture
1016094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->CancelCapture(captureId);
1017094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
1018094332d3Sopenharmony_ci
1019094332d3Sopenharmony_ci    // release stream
1020094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_);
1021094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
1022094332d3Sopenharmony_ci}
1023094332d3Sopenharmony_ci
1024094332d3Sopenharmony_ci/**
1025094332d3Sopenharmony_ci  * @tc.name: Preview
1026094332d3Sopenharmony_ci  * @tc.desc: Different captureIDs, Create capture,expected success.
1027094332d3Sopenharmony_ci  * @tc.level: Level2
1028094332d3Sopenharmony_ci  * @tc.size: MediumTest
1029094332d3Sopenharmony_ci  * @tc.type: Function
1030094332d3Sopenharmony_ci  */
1031094332d3Sopenharmony_ciHWTEST_F(CameraPreviewTest, camera_preview_093, TestSize.Level2)
1032094332d3Sopenharmony_ci{
1033094332d3Sopenharmony_ci    CAMERA_LOGD("Different captureIDs, Create capture,expected success.");
1034094332d3Sopenharmony_ci    // Create and get streamOperator information
1035094332d3Sopenharmony_ci    cameraBase_->AchieveStreamOperator();
1036094332d3Sopenharmony_ci    // Create data stream
1037094332d3Sopenharmony_ci    cameraBase_->intents = {PREVIEW};
1038094332d3Sopenharmony_ci    cameraBase_->StartStream(cameraBase_->intents);
1039094332d3Sopenharmony_ci    // Get preview
1040094332d3Sopenharmony_ci    int captureId = cameraBase_->CAPTURE_ID_PREVIEW;
1041094332d3Sopenharmony_ci    CaptureInfo captureInfo = {};
1042094332d3Sopenharmony_ci    captureInfo.streamIds_ = {cameraBase_->STREAM_ID_PREVIEW};
1043094332d3Sopenharmony_ci    captureInfo.captureSetting_ = cameraBase_->ability_;
1044094332d3Sopenharmony_ci    captureInfo.enableShutterCallback_ = false;
1045094332d3Sopenharmony_ci    bool isStreaming = true;
1046094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId, captureInfo, isStreaming);
1047094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
1048094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->Capture(captureId + 1, captureInfo, isStreaming);
1049094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
1050094332d3Sopenharmony_ci
1051094332d3Sopenharmony_ci    sleep(2);
1052094332d3Sopenharmony_ci    // cancel capture
1053094332d3Sopenharmony_ci    cameraBase_->streamOperator->CancelCapture(captureId);
1054094332d3Sopenharmony_ci    cameraBase_->streamOperator->CancelCapture(captureId + 1);
1055094332d3Sopenharmony_ci    // release stream
1056094332d3Sopenharmony_ci    cameraBase_->rc = (CamRetCode)cameraBase_->streamOperator->ReleaseStreams(captureInfo.streamIds_);
1057094332d3Sopenharmony_ci    EXPECT_EQ(true, cameraBase_->rc == HDI::Camera::V1_0::NO_ERROR);
1058094332d3Sopenharmony_ci}
1059094332d3Sopenharmony_ci
1060