1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file expected in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "logic_camera_test.h"
17 
18 constexpr int QUEUE_SIZE = 8;
19 constexpr int DEFAULT_TEST_DATASPACE_VALUE = 8;
20 constexpr int DEFAULT_TEST_TUNNELEDMODE_VALUE = 5;
21 
SetUpTestCase(void)22 void UtestLogicCameraTest::SetUpTestCase(void)
23 {}
TearDownTestCase(void)24 void UtestLogicCameraTest::TearDownTestCase(void)
25 {}
SetUp(void)26 void UtestLogicCameraTest::SetUp(void)
27 {
28     if (cameraBase == nullptr)
29     cameraBase = std::make_shared<TestCameraBase>();
30     cameraBase->FBInit();
31     cameraBase->Init();
32 }
TearDown(void)33 void UtestLogicCameraTest::TearDown(void)
34 {
35     cameraBase->Close();
36 }
37 
38 /**
39   * @tc.name: test logic csamera
40   * @tc.desc: single stream
41   * @tc.level: Level0
42   * @tc.size: MediumTest
43   * @tc.type: Function
44   */
TEST_F(UtestLogicCameraTest,camera_logic_0001)45 TEST_F(UtestLogicCameraTest, camera_logic_0001)
46 {
47     std::cout << "==========[test log] test single stream"<< std::endl;
48     // Get the stream manager
49     cameraBase->AchieveStreamOperator();
50     // Configure preview stream information
51     std::shared_ptr<IBufferProducer> producer = IBufferProducer::CreateBufferQueue();
52     producer->SetQueueSize(QUEUE_SIZE);
53     if (producer->GetQueueSize() != QUEUE_SIZE) {
54         std::cout << "~~~~~~~" << std::endl;
55     }
56     auto callback = [this](std::shared_ptr<SurfaceBuffer> b) {
57         cameraBase->BufferCallback(b, cameraBase->preview_mode);
58         return;
59     };
60     producer->SetCallback(callback);
61     std::shared_ptr<StreamInfo> streamInfoPre = std::make_shared<StreamInfo>();
62     streamInfoPre->streamId_ = cameraBase->STREAM_ID_PREVIEW;
63     streamInfoPre->width_ = DEFAULT_TEST_WIDTH_VALUE;
64     streamInfoPre->height_ = DEFAULT_TEST_HEIGHT_VALUE;
65     streamInfoPre->format_ = CAMERA_FORMAT_YUYV_422_PKG;
66     streamInfoPre->dataspace_ = DEFAULT_TEST_DATASPACE_VALUE;
67     streamInfoPre->intent_ = PREVIEW;
68     streamInfoPre->tunneledMode_ = DEFAULT_TEST_TUNNELEDMODE_VALUE;
69     streamInfoPre->bufferQueue_ = producer;
70     cameraBase->streamInfos.push_back(streamInfoPre);
71     cameraBase->rc = cameraBase->streamOperator->CreateStreams(cameraBase->streamInfos);
72     EXPECT_EQ(true, cameraBase->rc == NO_ERROR);
73     if (cameraBase->rc == NO_ERROR) {
74         std::cout << "==========[test log] CreateStreams success, streamId = ";
75         std::cout << cameraBase->STREAM_ID_CAPTURE, <<", intent = STILL_CAPTURE" << std::endl;
76     } else {
77         std::cout << "==========[test log] CreateStreams fail, rc = " << cameraBase->rc <<" , streamId = ";
78         std::cout << cameraBase->STREAM_ID_CAPTURE, <<", intent = STILL_CAPTURE" << std::endl;
79     }
80     // Submit stream information
81     cameraBase->rc = cameraBase->streamOperator->CommitStreams(DUAL, nullptr);
82     EXPECT_EQ(false, cameraBase->rc != NO_ERROR);
83     if (cameraBase->rc == NO_ERROR) {
84         std::cout << "==========[test log] CommitStreams DUAL success." << std::endl;
85     } else {
86         std::cout << "==========[test log] CommitStreams DUAL fail, rc = " << cameraBase->rc << std::endl;
87     }
88     // capture
89     cameraBase->StartCapture(cameraBase->STREAM_ID_PREVIEW, cameraBase->CAPTURE_ID_PREVIEW, false, true);
90     // post-processing
91     cameraBase->captureIds = {cameraBase->CAPTURE_ID_PREVIEW};
92     cameraBase->streamIds = {cameraBase->STREAM_ID_PREVIEW};
93     cameraBase->StopStream(cameraBase->captureIds, cameraBase->streamIds);
94 }