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 }