1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2021 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 "hdi_func_test.h" 16094332d3Sopenharmony_ci 17094332d3Sopenharmony_civoid UtestHdiFuncTest::SetUpTestCase(void) 18094332d3Sopenharmony_ci{} 19094332d3Sopenharmony_civoid UtestHdiFuncTest::TearDownTestCase(void) 20094332d3Sopenharmony_ci{} 21094332d3Sopenharmony_civoid UtestHdiFuncTest::SetUp(void) 22094332d3Sopenharmony_ci{ 23094332d3Sopenharmony_ci if (cameraBase == nullptr) 24094332d3Sopenharmony_ci cameraBase = std::make_shared<TestCameraBase>(); 25094332d3Sopenharmony_ci cameraBase->FBInit(); 26094332d3Sopenharmony_ci cameraBase->Init(); 27094332d3Sopenharmony_ci} 28094332d3Sopenharmony_civoid UtestHdiFuncTest::TearDown(void) 29094332d3Sopenharmony_ci{ 30094332d3Sopenharmony_ci cameraBase->Close(); 31094332d3Sopenharmony_ci} 32094332d3Sopenharmony_ci 33094332d3Sopenharmony_ci/** 34094332d3Sopenharmony_ci * @tc.name: Capture 35094332d3Sopenharmony_ci * @tc.desc: Capture, input normal. 36094332d3Sopenharmony_ci * @tc.level: Level1 37094332d3Sopenharmony_ci * @tc.size: MediumTest 38094332d3Sopenharmony_ci * @tc.type: Function 39094332d3Sopenharmony_ci */ 40094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0190) 41094332d3Sopenharmony_ci{ 42094332d3Sopenharmony_ci std::cout << "==========[test log] Capture, input normal." << std::endl; 43094332d3Sopenharmony_ci // Create and get streamOperator information 44094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 45094332d3Sopenharmony_ci // Create data stream 46094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 47094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 48094332d3Sopenharmony_ci // Get preview 49094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true); 50094332d3Sopenharmony_ci // release stream 51094332d3Sopenharmony_ci cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW}; 52094332d3Sopenharmony_ci cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW}; 53094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 54094332d3Sopenharmony_ci} 55094332d3Sopenharmony_ci 56094332d3Sopenharmony_ci/** 57094332d3Sopenharmony_ci * @tc.name: Capture 58094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->captureInfo->streamID = -1 ,return error. 59094332d3Sopenharmony_ci * @tc.level: Level2 60094332d3Sopenharmony_ci * @tc.size: MediumTest 61094332d3Sopenharmony_ci * @tc.type: Function 62094332d3Sopenharmony_ci */ 63094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0191) 64094332d3Sopenharmony_ci{ 65094332d3Sopenharmony_ci std::cout << "==========[test log] Preview, Capture->captureInfo->streamID = -1 ,return error." << std::endl; 66094332d3Sopenharmony_ci cameraBase->OpenCamera(); 67094332d3Sopenharmony_ci // Create and get streamOperator information 68094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 69094332d3Sopenharmony_ci // start stream 70094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 71094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 72094332d3Sopenharmony_ci // Get preview 73094332d3Sopenharmony_ci int captureId = 2001; 74094332d3Sopenharmony_ci std::shared_ptr<CaptureInfo> captureInfo = std::make_shared<CaptureInfo>(); 75094332d3Sopenharmony_ci captureInfo->streamIds_ = {-1}; 76094332d3Sopenharmony_ci captureInfo->enableShutterCallback_ = true; 77094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->Capture(captureId, captureInfo, true); 78094332d3Sopenharmony_ci EXPECT_EQ(INVALID_ARGUMENT, cameraBase->rc); 79094332d3Sopenharmony_ci if (cameraBase->rc == INVALID_ARGUMENT) { 80094332d3Sopenharmony_ci std::cout << "==========[test log] Capture fail." << std::endl; 81094332d3Sopenharmony_ci } else { 82094332d3Sopenharmony_ci std::cout << "==========[test log] Capture success." << std::endl; 83094332d3Sopenharmony_ci } 84094332d3Sopenharmony_ci sleep(3); // waiting resource release for 3s. 85094332d3Sopenharmony_ci} 86094332d3Sopenharmony_ci 87094332d3Sopenharmony_ci/** 88094332d3Sopenharmony_ci * @tc.name: Capture 89094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->captureInfo->streamID = 2147483647 ,return success. 90094332d3Sopenharmony_ci * @tc.level: Level2 91094332d3Sopenharmony_ci * @tc.size: MediumTest 92094332d3Sopenharmony_ci * @tc.type: Function 93094332d3Sopenharmony_ci */ 94094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0192) 95094332d3Sopenharmony_ci{ 96094332d3Sopenharmony_ci std::cout << "==========[test log] Preview,"; 97094332d3Sopenharmony_ci std::cout << "Capture->captureInfo->streamID = 2147483647 ,return success." << std::endl; 98094332d3Sopenharmony_ci // Create and get streamOperator information 99094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 100094332d3Sopenharmony_ci // start stream 101094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 102094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 103094332d3Sopenharmony_ci // Get preview 104094332d3Sopenharmony_ci int captureId = 2001; 105094332d3Sopenharmony_ci std::shared_ptr<CaptureInfo> captureInfo = std::make_shared<CaptureInfo>(); 106094332d3Sopenharmony_ci captureInfo->streamIds_ = {2147483647}; 107094332d3Sopenharmony_ci captureInfo->enableShutterCallback_ = true; 108094332d3Sopenharmony_ci bool isStreaming = true; 109094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->Capture(captureId, captureInfo, isStreaming); 110094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 111094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 112094332d3Sopenharmony_ci std::cout << "==========[test log] Capture success." << std::endl; 113094332d3Sopenharmony_ci } else { 114094332d3Sopenharmony_ci std::cout << "==========[test log] Capture fail, rc = " << cameraBase->rc << std::endl; 115094332d3Sopenharmony_ci } 116094332d3Sopenharmony_ci sleep(3); // waiting function Capture execute for 3s. 117094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CancelCapture(captureId); 118094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 119094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 120094332d3Sopenharmony_ci std::cout << "==========[test log] CancelCapture success." << std::endl; 121094332d3Sopenharmony_ci } else { 122094332d3Sopenharmony_ci std::cout << "==========[test log] CancelCapture fail, rc = " << cameraBase->rc << std::endl; 123094332d3Sopenharmony_ci } 124094332d3Sopenharmony_ci cameraBase->cameraDevice->Close(); 125094332d3Sopenharmony_ci std::cout << "cameraDevice->Close" << std::endl; 126094332d3Sopenharmony_ci} 127094332d3Sopenharmony_ci 128094332d3Sopenharmony_ci/** 129094332d3Sopenharmony_ci * @tc.name: Capture 130094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->captureInfo->enableShutterCallback = false ,return success. 131094332d3Sopenharmony_ci * @tc.level: Level2 132094332d3Sopenharmony_ci * @tc.size: MediumTest 133094332d3Sopenharmony_ci * @tc.type: Function 134094332d3Sopenharmony_ci */ 135094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0193) 136094332d3Sopenharmony_ci{ 137094332d3Sopenharmony_ci std::cout << "==========[test log] Preview,"; 138094332d3Sopenharmony_ci std::cout << "Capture->captureInfo->enableShutterCallback = false ,return success." << std::endl; 139094332d3Sopenharmony_ci // Create and get streamOperator information 140094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 141094332d3Sopenharmony_ci // start stream 142094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 143094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 144094332d3Sopenharmony_ci // Get preview 145094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true); 146094332d3Sopenharmony_ci // release stream 147094332d3Sopenharmony_ci cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW}; 148094332d3Sopenharmony_ci cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW}; 149094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 150094332d3Sopenharmony_ci} 151094332d3Sopenharmony_ci 152094332d3Sopenharmony_ci/** 153094332d3Sopenharmony_ci * @tc.name: Capture 154094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->isStreaming = false ,expected success. 155094332d3Sopenharmony_ci * @tc.level: Level2 156094332d3Sopenharmony_ci * @tc.size: MediumTest 157094332d3Sopenharmony_ci * @tc.type: Function 158094332d3Sopenharmony_ci */ 159094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0194) 160094332d3Sopenharmony_ci{ 161094332d3Sopenharmony_ci std::cout << "==========[test log] Preview, Capture->isStreaming = false ,expected success." << std::endl; 162094332d3Sopenharmony_ci std::cout << "==========[test log] Preview, Capture->isStreaming = false ,expected success." << std::endl; 163094332d3Sopenharmony_ci // Create and get streamOperator information 164094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 165094332d3Sopenharmony_ci // start stream 166094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 167094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 168094332d3Sopenharmony_ci // Get preview 169094332d3Sopenharmony_ci int captureId = 2001; 170094332d3Sopenharmony_ci std::shared_ptr<CaptureInfo> captureInfo = std::make_shared<CaptureInfo>(); 171094332d3Sopenharmony_ci captureInfo->streamIds_ = {cameraBase->STREAM_ID_PREVIEW}; 172094332d3Sopenharmony_ci captureInfo->enableShutterCallback_ = true; 173094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->Capture(captureId, captureInfo, false); 174094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 175094332d3Sopenharmony_ci sleep(3); // waiting 3s, prepare for execute function CancelCapture 176094332d3Sopenharmony_ci cameraBase->streamOperator->CancelCapture(captureId); 177094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 178094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 179094332d3Sopenharmony_ci std::cout << "==========[test log] CancelCapture success." << std::endl; 180094332d3Sopenharmony_ci } else { 181094332d3Sopenharmony_ci std::cout << "==========[test log] CancelCapture fail, rc = " << cameraBase->rc << std::endl; 182094332d3Sopenharmony_ci } 183094332d3Sopenharmony_ci // release stream 184094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->ReleaseStreams(captureInfo->streamIds_); 185094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 186094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 187094332d3Sopenharmony_ci std::cout << "==========[test log] ReleaseStreams success." << std::endl; 188094332d3Sopenharmony_ci } else { 189094332d3Sopenharmony_ci std::cout << "==========[test log] ReleaseStreams fail, rc = " << cameraBase->rc << std::endl; 190094332d3Sopenharmony_ci } 191094332d3Sopenharmony_ci} 192094332d3Sopenharmony_ci 193094332d3Sopenharmony_ci/** 194094332d3Sopenharmony_ci * @tc.name: Capture 195094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->captureId = -1 ,return error. 196094332d3Sopenharmony_ci * @tc.level: Level2 197094332d3Sopenharmony_ci * @tc.size: MediumTest 198094332d3Sopenharmony_ci * @tc.type: Function 199094332d3Sopenharmony_ci */ 200094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0195) 201094332d3Sopenharmony_ci{ 202094332d3Sopenharmony_ci std::cout << "==========[test log] Preview, Capture->captureId = -1 ,return error." << std::endl; 203094332d3Sopenharmony_ci cameraBase->OpenCamera(); 204094332d3Sopenharmony_ci // Create and get streamOperator information 205094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 206094332d3Sopenharmony_ci // start stream 207094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 208094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 209094332d3Sopenharmony_ci // Get preview 210094332d3Sopenharmony_ci int captureId = -1; 211094332d3Sopenharmony_ci std::shared_ptr<CaptureInfo> captureInfo = std::make_shared<CaptureInfo>(); 212094332d3Sopenharmony_ci captureInfo->streamIds_ = {cameraBase->STREAM_ID_PREVIEW}; 213094332d3Sopenharmony_ci captureInfo->enableShutterCallback_ = false; 214094332d3Sopenharmony_ci bool isStreaming = true; 215094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->Capture(captureId, captureInfo, isStreaming); 216094332d3Sopenharmony_ci EXPECT_EQ(INVALID_ARGUMENT, cameraBase->rc); 217094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 218094332d3Sopenharmony_ci std::cout << "==========[test log] Capture success." << std::endl; 219094332d3Sopenharmony_ci } else { 220094332d3Sopenharmony_ci std::cout << "==========[test log] Capture fail, rc = " << cameraBase->rc << std::endl; 221094332d3Sopenharmony_ci } 222094332d3Sopenharmony_ci sleep(3); // waiting resource release for 3s. 223094332d3Sopenharmony_ci} 224094332d3Sopenharmony_ci 225094332d3Sopenharmony_ci/** 226094332d3Sopenharmony_ci * @tc.name: Capture 227094332d3Sopenharmony_ci * @tc.desc: Preview, Capture->captureInfo->enableShutterCallback = true ,return success. 228094332d3Sopenharmony_ci * @tc.level: Level2 229094332d3Sopenharmony_ci * @tc.size: MediumTest 230094332d3Sopenharmony_ci * @tc.type: Function 231094332d3Sopenharmony_ci */ 232094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0196) 233094332d3Sopenharmony_ci{ 234094332d3Sopenharmony_ci std::cout << "==========[test log] Preview,"; 235094332d3Sopenharmony_ci std::cout << "Capture->captureInfo->enableShutterCallback = true ,return success." << std::endl; 236094332d3Sopenharmony_ci // Create and get streamOperator information 237094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 238094332d3Sopenharmony_ci // start stream 239094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 240094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 241094332d3Sopenharmony_ci // Get preview 242094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, true, true); 243094332d3Sopenharmony_ci // release stream 244094332d3Sopenharmony_ci cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW}; 245094332d3Sopenharmony_ci cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW}; 246094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 247094332d3Sopenharmony_ci} 248094332d3Sopenharmony_ci 249094332d3Sopenharmony_ci/** 250094332d3Sopenharmony_ci * @tc.name: CancelCapture 251094332d3Sopenharmony_ci * @tc.desc: CancelCapture, success. 252094332d3Sopenharmony_ci * @tc.level: Level2 253094332d3Sopenharmony_ci * @tc.size: MediumTest 254094332d3Sopenharmony_ci * @tc.type: Function 255094332d3Sopenharmony_ci */ 256094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0200) 257094332d3Sopenharmony_ci{ 258094332d3Sopenharmony_ci std::cout << "==========[test log] CancelCapture, success." << std::endl; 259094332d3Sopenharmony_ci // Create and get streamOperator information 260094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 261094332d3Sopenharmony_ci // start stream 262094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 263094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 264094332d3Sopenharmony_ci // Get preview 265094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true); 266094332d3Sopenharmony_ci // release stream 267094332d3Sopenharmony_ci cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW}; 268094332d3Sopenharmony_ci cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW}; 269094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 270094332d3Sopenharmony_ci} 271094332d3Sopenharmony_ci 272094332d3Sopenharmony_ci/** 273094332d3Sopenharmony_ci * @tc.name: CancelCapture 274094332d3Sopenharmony_ci * @tc.desc: CancelCapture captureID = -1. 275094332d3Sopenharmony_ci * @tc.level: Level2 276094332d3Sopenharmony_ci * @tc.size: MediumTest 277094332d3Sopenharmony_ci * @tc.type: Function 278094332d3Sopenharmony_ci */ 279094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0201) 280094332d3Sopenharmony_ci{ 281094332d3Sopenharmony_ci std::cout << "==========[test log] CancelCapture captureID = -1, expected fail." << std::endl; 282094332d3Sopenharmony_ci // Create and get streamOperator information 283094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 284094332d3Sopenharmony_ci // start stream 285094332d3Sopenharmony_ci cameraBase->intents = {PREVIEW}; 286094332d3Sopenharmony_ci cameraBase->StartStream(cameraBase->intents); 287094332d3Sopenharmony_ci // Get preview 288094332d3Sopenharmony_ci int captureId = 100; 289094332d3Sopenharmony_ci std::shared_ptr<CaptureInfo> captureInfo = std::make_shared<CaptureInfo>(); 290094332d3Sopenharmony_ci captureInfo->streamIds_ = {cameraBase->STREAM_ID_PREVIEW}; 291094332d3Sopenharmony_ci captureInfo->enableShutterCallback_ = false; 292094332d3Sopenharmony_ci bool isStreaming = true; 293094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->Capture(captureId, captureInfo, isStreaming); 294094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 295094332d3Sopenharmony_ci sleep(3); // waiting 3s, prepare for execute function CancelCapture 296094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CancelCapture(-1); 297094332d3Sopenharmony_ci EXPECT_EQ(INVALID_ARGUMENT, cameraBase->rc); 298094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CancelCapture(captureId); 299094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 300094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 301094332d3Sopenharmony_ci std::cout << "==========[test log] CancelCapture success." << std::endl; 302094332d3Sopenharmony_ci } else { 303094332d3Sopenharmony_ci std::cout << "==========[test log] CancelCapture fail, rc = " << cameraBase->rc << std::endl; 304094332d3Sopenharmony_ci } 305094332d3Sopenharmony_ci // release stream 306094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->ReleaseStreams(captureInfo->streamIds_); 307094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 308094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 309094332d3Sopenharmony_ci std::cout << "==========[test log] ReleaseStreams success." << std::endl; 310094332d3Sopenharmony_ci } else { 311094332d3Sopenharmony_ci std::cout << "==========[test log] ReleaseStreams fail, rc = " << cameraBase->rc << std::endl; 312094332d3Sopenharmony_ci } 313094332d3Sopenharmony_ci} 314094332d3Sopenharmony_ci 315094332d3Sopenharmony_ci/** 316094332d3Sopenharmony_ci * @tc.name: AttachBufferQueue 317094332d3Sopenharmony_ci * @tc.desc: AttachBufferQueue, normal input. 318094332d3Sopenharmony_ci * @tc.level: Level1 319094332d3Sopenharmony_ci * @tc.size: MediumTest 320094332d3Sopenharmony_ci * @tc.type: Function 321094332d3Sopenharmony_ci // */ 322094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0210) 323094332d3Sopenharmony_ci{ 324094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue, normal input." << std::endl; 325094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 326094332d3Sopenharmony_ci // Create data stream 327094332d3Sopenharmony_ci std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue(); 328094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 329094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 330094332d3Sopenharmony_ci std::cout << "~~~~~~~" << std::endl; 331094332d3Sopenharmony_ci } 332094332d3Sopenharmony_ci auto callback = [this](std::shared_ptr<SurfaceBuffer> b) { 333094332d3Sopenharmony_ci cameraBase->BufferCallback(b, cameraBase->preview_mode); 334094332d3Sopenharmony_ci return; 335094332d3Sopenharmony_ci }; 336094332d3Sopenharmony_ci producer->SetCallback(callback); 337094332d3Sopenharmony_ci 338094332d3Sopenharmony_ci cameraBase->streamInfo = std::make_shared<StreamInfo>(); 339094332d3Sopenharmony_ci cameraBase->streamInfo->streamId_ = DEFAULT_STREAM_ID; 340094332d3Sopenharmony_ci cameraBase->streamInfo->width_ = 640; // 640:picture width 341094332d3Sopenharmony_ci cameraBase->streamInfo->height_ = 480; // 480:picture height 342094332d3Sopenharmony_ci cameraBase->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG; 343094332d3Sopenharmony_ci cameraBase->streamInfo->dataspace_ = 8; // 8:picture dataspace 344094332d3Sopenharmony_ci cameraBase->streamInfo->intent_ = PREVIEW; 345094332d3Sopenharmony_ci cameraBase->streamInfo->tunneledMode_ = 5; // 5:tunnel mode 346094332d3Sopenharmony_ci cameraBase->streamInfos.push_back(cameraBase->streamInfo); 347094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CreateStreams(cameraBase->streamInfos); 348094332d3Sopenharmony_ci std::cout << "==========[test log] streamOperator->CreateStreams's RetCode = " << cameraBase->rc << std::endl; 349094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 350094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 351094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams success." << std::endl; 352094332d3Sopenharmony_ci } else { 353094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams fail, rc = " << cameraBase->rc << std::endl; 354094332d3Sopenharmony_ci } 355094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->AttachBufferQueue(cameraBase->streamInfo->streamId_, producer); 356094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 357094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 358094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue success. " << std::endl; 359094332d3Sopenharmony_ci } else { 360094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue fail, rc = " << cameraBase->rc << std::endl; 361094332d3Sopenharmony_ci } 362094332d3Sopenharmony_ci sleep(3); // waiting 3s, prepare for release stream. 363094332d3Sopenharmony_ci // release stream 364094332d3Sopenharmony_ci cameraBase->streamIds = {DEFAULT_STREAM_ID}; 365094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 366094332d3Sopenharmony_ci} 367094332d3Sopenharmony_ci 368094332d3Sopenharmony_ci/** 369094332d3Sopenharmony_ci * @tc.name: AttachBufferQueue 370094332d3Sopenharmony_ci * @tc.desc: AttachBufferQueue, streamID is not exist. 371094332d3Sopenharmony_ci * @tc.level: Level2 372094332d3Sopenharmony_ci * @tc.size: MediumTest 373094332d3Sopenharmony_ci * @tc.type: Function 374094332d3Sopenharmony_ci */ 375094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0211) 376094332d3Sopenharmony_ci{ 377094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue, streamID is not exist.." << std::endl; 378094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 379094332d3Sopenharmony_ci // Create data stream 380094332d3Sopenharmony_ci cameraBase->streamInfo = std::make_shared<StreamInfo>(); 381094332d3Sopenharmony_ci std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue(); 382094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 383094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 384094332d3Sopenharmony_ci std::cout << "~~~~~~~" << std::endl; 385094332d3Sopenharmony_ci } 386094332d3Sopenharmony_ci auto callback = [this](std::shared_ptr<SurfaceBuffer> b) { 387094332d3Sopenharmony_ci cameraBase->BufferCallback(b, cameraBase->preview_mode); 388094332d3Sopenharmony_ci return; 389094332d3Sopenharmony_ci }; 390094332d3Sopenharmony_ci producer->SetCallback(callback); 391094332d3Sopenharmony_ci cameraBase->streamInfo->streamId_ = DEFAULT_STREAM_ID; 392094332d3Sopenharmony_ci cameraBase->streamInfo->width_ = 640; // 640:picture width 393094332d3Sopenharmony_ci cameraBase->streamInfo->height_ = 480; // 480:picture height 394094332d3Sopenharmony_ci cameraBase->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG; 395094332d3Sopenharmony_ci cameraBase->streamInfo->dataspace_ = 8; // 8:picture dataspace 396094332d3Sopenharmony_ci cameraBase->streamInfo->intent_ = PREVIEW; 397094332d3Sopenharmony_ci cameraBase->streamInfo->tunneledMode_ = 5; // 5:tunnel mode 398094332d3Sopenharmony_ci cameraBase->streamInfos.push_back(cameraBase->streamInfo); 399094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CreateStreams(cameraBase->streamInfos); 400094332d3Sopenharmony_ci std::cout << "==========[test log] streamOperator->CreateStreams's RetCode = " << cameraBase->rc << std::endl; 401094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 402094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 403094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams success." << std::endl; 404094332d3Sopenharmony_ci } else { 405094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams fail, rc = " << cameraBase->rc << std::endl; 406094332d3Sopenharmony_ci } 407094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->AttachBufferQueue(0, producer); 408094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc != NO_ERROR); 409094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 410094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue success. " << std::endl; 411094332d3Sopenharmony_ci } else { 412094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue fail, rc = " << cameraBase->rc << std::endl; 413094332d3Sopenharmony_ci } 414094332d3Sopenharmony_ci sleep(3); // waiting 3s, prepare for release stream. 415094332d3Sopenharmony_ci // Release the stream 416094332d3Sopenharmony_ci cameraBase->streamIds = {DEFAULT_STREAM_ID}; 417094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 418094332d3Sopenharmony_ci} 419094332d3Sopenharmony_ci 420094332d3Sopenharmony_ci/** 421094332d3Sopenharmony_ci * @tc.name: AttachBufferQueue 422094332d3Sopenharmony_ci * @tc.desc: AttachBufferQueue, producer is nullptr. 423094332d3Sopenharmony_ci * @tc.level: Level2 424094332d3Sopenharmony_ci * @tc.size: MediumTest 425094332d3Sopenharmony_ci * @tc.type: Function 426094332d3Sopenharmony_ci */ 427094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0212) 428094332d3Sopenharmony_ci{ 429094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue, producer is nullptr." << std::endl; 430094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 431094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 432094332d3Sopenharmony_ci std::cout << "==========[test log] GetStreamOperator success. " << std::endl; 433094332d3Sopenharmony_ci } else { 434094332d3Sopenharmony_ci std::cout << "==========[test log] GetStreamOperator fail, rc = " << cameraBase->rc << std::endl; 435094332d3Sopenharmony_ci } 436094332d3Sopenharmony_ci // Create data stream 437094332d3Sopenharmony_ci cameraBase->streamInfo = std::make_shared<StreamInfo>(); 438094332d3Sopenharmony_ci cameraBase->streamInfo->streamId_ = DEFAULT_STREAM_ID; 439094332d3Sopenharmony_ci cameraBase->streamInfo->width_ = 640; // 640:picture width 440094332d3Sopenharmony_ci cameraBase->streamInfo->height_ = 480; // 480:picture height 441094332d3Sopenharmony_ci cameraBase->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG; 442094332d3Sopenharmony_ci cameraBase->streamInfo->dataspace_ = 8; // 8:picture dataspace 443094332d3Sopenharmony_ci cameraBase->streamInfo->intent_ = PREVIEW; 444094332d3Sopenharmony_ci cameraBase->streamInfo->tunneledMode_ = 5; // 5:tunnel mode 445094332d3Sopenharmony_ci cameraBase->streamInfos.push_back(cameraBase->streamInfo); 446094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CreateStreams(cameraBase->streamInfos); 447094332d3Sopenharmony_ci std::cout << "==========[test log] streamOperator->CreateStreams's RetCode = "; 448094332d3Sopenharmony_ci std::cout << cameraBase->rc << std::endl; 449094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 450094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 451094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams success. " << std::endl; 452094332d3Sopenharmony_ci } else { 453094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams fail, rc = " << cameraBase->rc << std::endl; 454094332d3Sopenharmony_ci } 455094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->AttachBufferQueue(cameraBase->streamInfo->streamId_, nullptr); 456094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc != NO_ERROR); 457094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 458094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue success. " << std::endl; 459094332d3Sopenharmony_ci } else { 460094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue fail, rc = " << cameraBase->rc << std::endl; 461094332d3Sopenharmony_ci } 462094332d3Sopenharmony_ci sleep(3); // waiting 3s, prepare for release stream. 463094332d3Sopenharmony_ci // release stream 464094332d3Sopenharmony_ci cameraBase->streamIds = {DEFAULT_STREAM_ID}; 465094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 466094332d3Sopenharmony_ci} 467094332d3Sopenharmony_ci 468094332d3Sopenharmony_ci/** 469094332d3Sopenharmony_ci * @tc.name: DetachBufferQueue 470094332d3Sopenharmony_ci * @tc.desc: DetachBufferQueue, normal input. 471094332d3Sopenharmony_ci * @tc.level: Level1 472094332d3Sopenharmony_ci * @tc.size: MediumTest 473094332d3Sopenharmony_ci * @tc.type: Function 474094332d3Sopenharmony_ci */ 475094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0220) 476094332d3Sopenharmony_ci{ 477094332d3Sopenharmony_ci std::cout << "==========[test log] DetachBufferQueue, normal input." << std::endl; 478094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 479094332d3Sopenharmony_ci // Create data stream 480094332d3Sopenharmony_ci std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue(); 481094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 482094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 483094332d3Sopenharmony_ci std::cout << "~~~~~~~" << std::endl; 484094332d3Sopenharmony_ci } 485094332d3Sopenharmony_ci auto callback = [this](std::shared_ptr<SurfaceBuffer> b) { 486094332d3Sopenharmony_ci cameraBase->BufferCallback(b, cameraBase->preview_mode); 487094332d3Sopenharmony_ci return; 488094332d3Sopenharmony_ci }; 489094332d3Sopenharmony_ci producer->SetCallback(callback); 490094332d3Sopenharmony_ci cameraBase->streamInfo = std::make_shared<StreamInfo>(); 491094332d3Sopenharmony_ci cameraBase->streamInfo->streamId_ = DEFAULT_STREAM_ID; 492094332d3Sopenharmony_ci cameraBase->streamInfo->width_ = 640; // 640:picture width 493094332d3Sopenharmony_ci cameraBase->streamInfo->height_ = 480; // 480:picture height 494094332d3Sopenharmony_ci cameraBase->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG; 495094332d3Sopenharmony_ci cameraBase->streamInfo->dataspace_ = 8; // 8:picture dataspace 496094332d3Sopenharmony_ci cameraBase->streamInfo->intent_ = PREVIEW; 497094332d3Sopenharmony_ci cameraBase->streamInfo->tunneledMode_ = 5; // 5:tunnel mode 498094332d3Sopenharmony_ci cameraBase->streamInfos.push_back(cameraBase->streamInfo); 499094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CreateStreams(cameraBase->streamInfos); 500094332d3Sopenharmony_ci std::cout << "==========[test log] streamOperator->CreateStreams's RetCode = "; 501094332d3Sopenharmony_ci std::cout << cameraBase->rc << std::endl; 502094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 503094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams success. " << std::endl; 504094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->AttachBufferQueue(cameraBase->streamInfo->streamId_, producer); 505094332d3Sopenharmony_ci std::cout << "==========[test log] streamOperator->AttachBufferQueue's RetCode = "; 506094332d3Sopenharmony_ci std::cout << cameraBase->rc << std::endl; 507094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 508094332d3Sopenharmony_ci sleep(3); // waiting 3s, prepare for attach bufferQueue. 509094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue success. " << std::endl; 510094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->DetachBufferQueue(cameraBase->streamInfo->streamId_); 511094332d3Sopenharmony_ci std::cout << "==========[test log] streamOperator->DetachBufferQueue's RetCode = "; 512094332d3Sopenharmony_ci std::cout << cameraBase->rc << std::endl; 513094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 514094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 515094332d3Sopenharmony_ci std::cout << "==========[test log] DetachBufferQueue success. " << std::endl; 516094332d3Sopenharmony_ci } else { 517094332d3Sopenharmony_ci std::cout << "==========[test log] DetachBufferQueue fail, rc = " << cameraBase->rc << std::endl; 518094332d3Sopenharmony_ci } 519094332d3Sopenharmony_ci // release stream 520094332d3Sopenharmony_ci cameraBase->streamIds = {DEFAULT_STREAM_ID}; 521094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 522094332d3Sopenharmony_ci} 523094332d3Sopenharmony_ci 524094332d3Sopenharmony_ci/** 525094332d3Sopenharmony_ci * @tc.name: DetachBufferQueue 526094332d3Sopenharmony_ci * @tc.desc: DetachBufferQueue, streamID is not exist. 527094332d3Sopenharmony_ci * @tc.level: Level2 528094332d3Sopenharmony_ci * @tc.size: MediumTest 529094332d3Sopenharmony_ci * @tc.type: Function 530094332d3Sopenharmony_ci */ 531094332d3Sopenharmony_ciTEST_F(UtestHdiFuncTest, camera_hdi_0221) 532094332d3Sopenharmony_ci{ 533094332d3Sopenharmony_ci std::cout << "==========[test log] DetachBufferQueue, streamID is not exist." << std::endl; 534094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 535094332d3Sopenharmony_ci // Create data stream 536094332d3Sopenharmony_ci std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue(); 537094332d3Sopenharmony_ci producer->SetQueueSize(8); // 8:set bufferQueue size 538094332d3Sopenharmony_ci if (producer->GetQueueSize() != 8) { // 8:get bufferQueue size 539094332d3Sopenharmony_ci std::cout << "~~~~~~~" << std::endl; 540094332d3Sopenharmony_ci } 541094332d3Sopenharmony_ci auto callback = [this](std::shared_ptr<SurfaceBuffer> b) { 542094332d3Sopenharmony_ci cameraBase->BufferCallback(b, cameraBase->preview_mode); 543094332d3Sopenharmony_ci return; 544094332d3Sopenharmony_ci }; 545094332d3Sopenharmony_ci producer->SetCallback(callback); 546094332d3Sopenharmony_ci cameraBase->streamInfo = std::make_shared<StreamInfo>(); 547094332d3Sopenharmony_ci cameraBase->streamInfo->streamId_ = DEFAULT_STREAM_ID; 548094332d3Sopenharmony_ci cameraBase->streamInfo->width_ = 640; // 640:picture width 549094332d3Sopenharmony_ci cameraBase->streamInfo->height_ = 480; // 480:picture height 550094332d3Sopenharmony_ci cameraBase->streamInfo->format_ = CAMERA_FORMAT_YUYV_422_PKG; 551094332d3Sopenharmony_ci cameraBase->streamInfo->dataspace_ = 8; // 8:picture dataspace 552094332d3Sopenharmony_ci cameraBase->streamInfo->intent_ = PREVIEW; 553094332d3Sopenharmony_ci cameraBase->streamInfo->tunneledMode_ = 5; // 5:tunnel mode 554094332d3Sopenharmony_ci cameraBase->streamInfos.push_back(cameraBase->streamInfo); 555094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CreateStreams(cameraBase->streamInfos); 556094332d3Sopenharmony_ci std::cout << "==========[test log] streamOperator->CreateStreams's RetCode = "; 557094332d3Sopenharmony_ci std::cout << cameraBase->rc << std::endl; 558094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 559094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams success. " << std::endl; 560094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->AttachBufferQueue(cameraBase->streamInfo->streamId_, producer); 561094332d3Sopenharmony_ci std::cout << "==========[test log] streamOperator->AttachBufferQueue's RetCode = " << cameraBase->rc << std::endl; 562094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 563094332d3Sopenharmony_ci std::cout << "==========[test log] AttachBufferQueue success. " << std::endl; 564094332d3Sopenharmony_ci sleep(3); // waiting 3s, prepare for detach bufferQueue. 565094332d3Sopenharmony_ci 566094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->DetachBufferQueue(0); 567094332d3Sopenharmony_ci std::cout << "==========[test log] streamOperator->DetachBufferQueue's RetCode = " << cameraBase->rc << std::endl; 568094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc != NO_ERROR); 569094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 570094332d3Sopenharmony_ci std::cout << "==========[test log] DetachBufferQueue success. " << std::endl; 571094332d3Sopenharmony_ci } else { 572094332d3Sopenharmony_ci std::cout << "==========[test log] DetachBufferQueue fail, rc = " << cameraBase->rc << std::endl; 573094332d3Sopenharmony_ci } 574094332d3Sopenharmony_ci // release stream 575094332d3Sopenharmony_ci cameraBase->streamIds = {DEFAULT_STREAM_ID}; 576094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 577094332d3Sopenharmony_ci} 578