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 expected 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 16094332d3Sopenharmony_ci#include "logic_camera_test.h" 17094332d3Sopenharmony_ci 18094332d3Sopenharmony_ciconstexpr int QUEUE_SIZE = 8; 19094332d3Sopenharmony_ciconstexpr int DEFAULT_TEST_DATASPACE_VALUE = 8; 20094332d3Sopenharmony_ciconstexpr int DEFAULT_TEST_TUNNELEDMODE_VALUE = 5; 21094332d3Sopenharmony_ci 22094332d3Sopenharmony_civoid UtestLogicCameraTest::SetUpTestCase(void) 23094332d3Sopenharmony_ci{} 24094332d3Sopenharmony_civoid UtestLogicCameraTest::TearDownTestCase(void) 25094332d3Sopenharmony_ci{} 26094332d3Sopenharmony_civoid UtestLogicCameraTest::SetUp(void) 27094332d3Sopenharmony_ci{ 28094332d3Sopenharmony_ci if (cameraBase == nullptr) 29094332d3Sopenharmony_ci cameraBase = std::make_shared<TestCameraBase>(); 30094332d3Sopenharmony_ci cameraBase->FBInit(); 31094332d3Sopenharmony_ci cameraBase->Init(); 32094332d3Sopenharmony_ci} 33094332d3Sopenharmony_civoid UtestLogicCameraTest::TearDown(void) 34094332d3Sopenharmony_ci{ 35094332d3Sopenharmony_ci cameraBase->Close(); 36094332d3Sopenharmony_ci} 37094332d3Sopenharmony_ci 38094332d3Sopenharmony_ci/** 39094332d3Sopenharmony_ci * @tc.name: test logic csamera 40094332d3Sopenharmony_ci * @tc.desc: single stream 41094332d3Sopenharmony_ci * @tc.level: Level0 42094332d3Sopenharmony_ci * @tc.size: MediumTest 43094332d3Sopenharmony_ci * @tc.type: Function 44094332d3Sopenharmony_ci */ 45094332d3Sopenharmony_ciTEST_F(UtestLogicCameraTest, camera_logic_0001) 46094332d3Sopenharmony_ci{ 47094332d3Sopenharmony_ci std::cout << "==========[test log] test single stream"<< std::endl; 48094332d3Sopenharmony_ci // Get the stream manager 49094332d3Sopenharmony_ci cameraBase->AchieveStreamOperator(); 50094332d3Sopenharmony_ci // Configure preview stream information 51094332d3Sopenharmony_ci std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue(); 52094332d3Sopenharmony_ci producer->SetQueueSize(QUEUE_SIZE); 53094332d3Sopenharmony_ci if (producer->GetQueueSize() != QUEUE_SIZE) { 54094332d3Sopenharmony_ci std::cout << "~~~~~~~" << std::endl; 55094332d3Sopenharmony_ci } 56094332d3Sopenharmony_ci auto callback = [this](std::shared_ptr<SurfaceBuffer> b) { 57094332d3Sopenharmony_ci cameraBase->BufferCallback(b, cameraBase->preview_mode); 58094332d3Sopenharmony_ci return; 59094332d3Sopenharmony_ci }; 60094332d3Sopenharmony_ci producer->SetCallback(callback); 61094332d3Sopenharmony_ci std::shared_ptr<StreamInfo> streamInfoPre = std::make_shared<StreamInfo>(); 62094332d3Sopenharmony_ci streamInfoPre->streamId_ = cameraBase->STREAM_ID_PREVIEW; 63094332d3Sopenharmony_ci streamInfoPre->width_ = DEFAULT_TEST_WIDTH_VALUE; 64094332d3Sopenharmony_ci streamInfoPre->height_ = DEFAULT_TEST_HEIGHT_VALUE; 65094332d3Sopenharmony_ci streamInfoPre->format_ = CAMERA_FORMAT_YUYV_422_PKG; 66094332d3Sopenharmony_ci streamInfoPre->dataspace_ = DEFAULT_TEST_DATASPACE_VALUE; 67094332d3Sopenharmony_ci streamInfoPre->intent_ = PREVIEW; 68094332d3Sopenharmony_ci streamInfoPre->tunneledMode_ = DEFAULT_TEST_TUNNELEDMODE_VALUE; 69094332d3Sopenharmony_ci streamInfoPre->bufferQueue_ = producer; 70094332d3Sopenharmony_ci cameraBase->streamInfos.push_back(streamInfoPre); 71094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CreateStreams(cameraBase->streamInfos); 72094332d3Sopenharmony_ci EXPECT_EQ(true, cameraBase->rc == NO_ERROR); 73094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 74094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams success, streamId = "; 75094332d3Sopenharmony_ci std::cout << cameraBase->STREAM_ID_CAPTURE, <<", intent = STILL_CAPTURE" << std::endl; 76094332d3Sopenharmony_ci } else { 77094332d3Sopenharmony_ci std::cout << "==========[test log] CreateStreams fail, rc = " << cameraBase->rc <<" , streamId = "; 78094332d3Sopenharmony_ci std::cout << cameraBase->STREAM_ID_CAPTURE, <<", intent = STILL_CAPTURE" << std::endl; 79094332d3Sopenharmony_ci } 80094332d3Sopenharmony_ci // Submit stream information 81094332d3Sopenharmony_ci cameraBase->rc = cameraBase->streamOperator->CommitStreams(DUAL, nullptr); 82094332d3Sopenharmony_ci EXPECT_EQ(false, cameraBase->rc != NO_ERROR); 83094332d3Sopenharmony_ci if (cameraBase->rc == NO_ERROR) { 84094332d3Sopenharmony_ci std::cout << "==========[test log] CommitStreams DUAL success." << std::endl; 85094332d3Sopenharmony_ci } else { 86094332d3Sopenharmony_ci std::cout << "==========[test log] CommitStreams DUAL fail, rc = " << cameraBase->rc << std::endl; 87094332d3Sopenharmony_ci } 88094332d3Sopenharmony_ci // capture 89094332d3Sopenharmony_ci cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true); 90094332d3Sopenharmony_ci // post-processing 91094332d3Sopenharmony_ci cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW}; 92094332d3Sopenharmony_ci cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW}; 93094332d3Sopenharmony_ci cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds); 94094332d3Sopenharmony_ci}