• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except 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 "camera_framework_unittest.h"
17 
18 #include "gtest/gtest.h"
19 #include <cstdint>
20 #include <vector>
21 
22 #include "access_token.h"
23 #include "accesstoken_kit.h"
24 #include "camera_log.h"
25 #include "camera_manager.h"
26 #include "camera_output_capability.h"
27 #include "camera_util.h"
28 #include "capture_output.h"
29 #include "capture_scene_const.h"
30 #include "capture_session.h"
31 #include "gmock/gmock.h"
32 #include "hap_token_info.h"
33 #include "input/camera_input.h"
34 #include "ipc_skeleton.h"
35 #include "metadata_utils.h"
36 #include "nativetoken_kit.h"
37 #include "night_session.h"
38 #include "panorama_session.h"
39 #include "photo_output.h"
40 #include "photo_session.h"
41 #include "preview_output.h"
42 #include "scan_session.h"
43 #include "secure_camera_session.h"
44 #include "slow_motion_session.h"
45 #include "surface.h"
46 #include "test_common.h"
47 #include "token_setproc.h"
48 #include "video_session.h"
49 #include "os_account_manager.h"
50 #include "output/metadata_output.h"
51 
52 using namespace testing::ext;
53 using ::testing::A;
54 using ::testing::InSequence;
55 using ::testing::Mock;
56 using ::testing::Return;
57 using ::testing::_;
58 
59 bool g_mockFlagWithoutAbt = false;
60 bool g_getCameraAbilityerror = false;
61 bool g_openCameraDevicerror = false;
62 int g_num = 0;
63 
64 namespace OHOS {
65 namespace CameraStandard {
66 using namespace OHOS::HDI::Camera::V1_1;
67 constexpr static int32_t ARRAY_IDX = 2;
68 class MockStreamOperator : public OHOS::HDI::Camera::V1_1::IStreamOperator {
69 public:
MockStreamOperator()70     MockStreamOperator()
71     {
72         ON_CALL(*this, CreateStreams(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
73         ON_CALL(*this, CreateStreams_V1_1(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
74         ON_CALL(*this, ReleaseStreams(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
75         ON_CALL(*this, CommitStreams(_, _)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
76         ON_CALL(*this, CommitStreams_V1_1(_, _)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
77         ON_CALL(*this, Capture(_, _, _)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
78         ON_CALL(*this, CancelCapture(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
79         ON_CALL(*this, IsStreamsSupported(_, _, A<const std::shared_ptr<OHOS::HDI::Camera::V1_0::StreamInfo> &>(), _))
80             .WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
81         ON_CALL(*this, IsStreamsSupported(_, _, A<const std::vector<OHOS::HDI::Camera::V1_0::StreamInfo> &>(), _))
82             .WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
83         ON_CALL(*this, IsStreamsSupported_V1_1(_, _, A<const std::shared_ptr<StreamInfo> &>(), _))
84             .WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
85         ON_CALL(*this, IsStreamsSupported_V1_1(_, _, A<const std::vector<StreamInfo_V1_1> &>(), _))
86             .WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
87         ON_CALL(*this, GetStreamAttributes(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
88         ON_CALL(*this, AttachBufferQueue(_, _)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
89         ON_CALL(*this, DetachBufferQueue(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
90         ON_CALL(*this, ChangeToOfflineStream(_, _, _)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
91     }
~MockStreamOperator()92     ~MockStreamOperator() {}
93     MOCK_METHOD1(CreateStreams, int32_t(
94         const std::vector<OHOS::HDI::Camera::V1_0::StreamInfo>& streamInfos));
95     MOCK_METHOD1(CreateStreams_V1_1, int32_t(
96         const std::vector<StreamInfo_V1_1>& streamInfos));
97     MOCK_METHOD1(ReleaseStreams, int32_t(const std::vector<int32_t>& streamIds));
98     MOCK_METHOD1(CancelCapture, int32_t(int32_t captureId));
99     MOCK_METHOD1(GetStreamAttributes, int32_t(
100         std::vector<StreamAttribute>& attributes));
101     MOCK_METHOD1(DetachBufferQueue, int32_t(int32_t streamId));
102     MOCK_METHOD2(CommitStreams, int32_t(OperationMode mode, const std::vector<uint8_t>& modeSetting));
103     MOCK_METHOD2(CommitStreams_V1_1, int32_t(OHOS::HDI::Camera::V1_1::OperationMode_V1_1 mode,
104         const std::vector<uint8_t>& modeSetting));
105     MOCK_METHOD2(AttachBufferQueue, int32_t(int32_t streamId,
106         const sptr<BufferProducerSequenceable>& bufferProducer));
107     MOCK_METHOD3(Capture, int32_t(int32_t captureId, const CaptureInfo& info, bool isStreaming));
108     MOCK_METHOD3(ChangeToOfflineStream, int32_t(const std::vector<int32_t>& streamIds,
109                                             const sptr<HDI::Camera::V1_0::IStreamOperatorCallback>& callbackObj,
110                                             sptr<HDI::Camera::V1_0::IOfflineStreamOperator>& offlineOperator));
111     MOCK_METHOD4(IsStreamsSupported, int32_t(OperationMode mode,
112         const std::shared_ptr<OHOS::Camera::CameraMetadata> &modeSetting,
113         const std::shared_ptr<OHOS::HDI::Camera::V1_0::StreamInfo> &info, StreamSupportType &type));
114     MOCK_METHOD4(IsStreamsSupported, int32_t(OperationMode mode, const std::vector<uint8_t>& modeSetting,
115         const std::vector<OHOS::HDI::Camera::V1_0::StreamInfo>& infos, StreamSupportType& type));
116     MOCK_METHOD4(IsStreamsSupported_V1_1, int32_t(OHOS::HDI::Camera::V1_1::OperationMode_V1_1 mode,
117         const std::shared_ptr<OHOS::Camera::CameraMetadata> &modeSetting,
118         const std::shared_ptr<StreamInfo> &info, StreamSupportType &type));
119     MOCK_METHOD4(IsStreamsSupported_V1_1, int32_t(OHOS::HDI::Camera::V1_1::OperationMode_V1_1 mode,
120         const std::vector<uint8_t>& modeSetting,
121         const std::vector<StreamInfo_V1_1>& infos, StreamSupportType& type));
122 };
123 
124 class MockCameraDevice : public OHOS::HDI::Camera::V1_1::ICameraDevice {
125 public:
MockCameraDevice()126     MockCameraDevice()
127     {
128         streamOperator = new MockStreamOperator();
129         ON_CALL(*this, GetStreamOperator_V1_1).WillByDefault([this](
130             const OHOS::sptr<HDI::Camera::V1_0::IStreamOperatorCallback> &callback,
131             sptr<OHOS::HDI::Camera::V1_1::IStreamOperator>& pStreamOperator) {
132             pStreamOperator = streamOperator;
133             return HDI::Camera::V1_0::NO_ERROR;
134         });
135         ON_CALL(*this, GetStreamOperator).WillByDefault([this](
136             const OHOS::sptr<HDI::Camera::V1_0::IStreamOperatorCallback> &callback,
137             sptr<OHOS::HDI::Camera::V1_0::IStreamOperator>& pStreamOperator) {
138             pStreamOperator = streamOperator;
139             return HDI::Camera::V1_0::NO_ERROR;
140         });
141         ON_CALL(*this, UpdateSettings(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
142         ON_CALL(*this, SetResultMode(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
143         ON_CALL(*this, GetEnabledResults(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
144         ON_CALL(*this, EnableResult(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
145         ON_CALL(*this, DisableResult(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
146         ON_CALL(*this, Open()).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
147         ON_CALL(*this, Close()).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
148         ON_CALL(*this, GetDefaultSettings(_)).WillByDefault(Return(HDI::Camera::V1_0::NO_ERROR));
149     }
~MockCameraDevice()150     ~MockCameraDevice() {}
151     MOCK_METHOD0(Open, int32_t());
152     MOCK_METHOD0(Close, int32_t());
153     MOCK_METHOD1(GetDefaultSettings, int32_t(std::vector<uint8_t> &settings));
154     MOCK_METHOD1(UpdateSettings, int32_t(const std::vector<uint8_t>& settings));
155     MOCK_METHOD1(SetResultMode, int32_t(ResultCallbackMode mode));
156     MOCK_METHOD1(GetEnabledResults, int32_t(std::vector<int32_t>& results));
157     MOCK_METHOD1(EnableResult, int32_t(const std::vector<int32_t>& results));
158     MOCK_METHOD1(DisableResult, int32_t(const std::vector<int32_t>& results));
159     MOCK_METHOD2(GetStreamOperator, int32_t(const sptr<HDI::Camera::V1_0::IStreamOperatorCallback>& callbackObj,
160                                         sptr<OHOS::HDI::Camera::V1_0::IStreamOperator>& streamOperator));
161     MOCK_METHOD2(GetStreamOperator_V1_1, int32_t(const sptr<HDI::Camera::V1_0::IStreamOperatorCallback>& callbackObj,
162                                              sptr<OHOS::HDI::Camera::V1_1::IStreamOperator>& streamOperator));
163     sptr<MockStreamOperator> streamOperator;
164 };
165 
166 class MockHCameraHostManager : public HCameraHostManager {
167 public:
168     struct StreamFormatConfig {
169         camera_format_t cameraFormat;
170         int32_t streamWidth;
171         int32_t streamHeight;
172         int32_t fixedFrameRate;
173         int32_t minFrameRate;
174         int32_t maxFrameRate;
175         std::vector<int32_t> streamAbilities = {};
IntoVectorOHOS::CameraStandard::MockHCameraHostManager::StreamFormatConfig176         void IntoVector(std::vector<int32_t>& vector) const
177         {
178             static const int32_t ABILITY_FINISH = -1;
179             vector.emplace_back(cameraFormat);
180             vector.emplace_back(streamWidth);
181             vector.emplace_back(streamHeight);
182             vector.emplace_back(fixedFrameRate);
183             vector.emplace_back(minFrameRate);
184             vector.emplace_back(maxFrameRate);
185             vector.insert(vector.end(), streamAbilities.begin(), streamAbilities.end());
186             vector.emplace_back(ABILITY_FINISH);
187         }
188     };
189 
190     struct StreamConfig {
191         int32_t streamType;
192         std::vector<StreamFormatConfig> streamFormatConfigs;
193 
IntoVectorOHOS::CameraStandard::MockHCameraHostManager::StreamConfig194         void IntoVector(std::vector<int32_t>& vector) const
195         {
196             static const int32_t STREAM_FINISH = -1;
197             vector.emplace_back(streamType);
198             for (auto& formatConfig : streamFormatConfigs) {
199                 formatConfig.IntoVector(vector);
200             }
201             vector.emplace_back(STREAM_FINISH);
202         }
203     };
204 
205     struct ModeConfig {
206         int32_t modeName;
207         std::vector<StreamConfig> streams = {};
IntoVectorOHOS::CameraStandard::MockHCameraHostManager::ModeConfig208         void IntoVector(std::vector<int32_t>& vector) const
209         {
210             static const int32_t MODE_FINISH = -1;
211             vector.emplace_back(modeName);
212             for (auto& stream : streams) {
213                 stream.IntoVector(vector);
214             }
215             vector.emplace_back(MODE_FINISH);
216         }
217     };
218 
219     struct ModeConfigs {
220         std::vector<ModeConfig> configs = {};
ModeConfigsOHOS::CameraStandard::MockHCameraHostManager::ModeConfigs221         explicit ModeConfigs(std::vector<ModeConfig> modeConfigs) : configs(std::move(modeConfigs)) {}
222 
GetModesOHOS::CameraStandard::MockHCameraHostManager::ModeConfigs223         std::vector<uint8_t> GetModes() const
224         {
225             std::vector<uint8_t> modes = {};
226             for (auto& config : configs) {
227                 modes.emplace_back(config.modeName);
228             }
229             return modes;
230         }
231 
GetDatasOHOS::CameraStandard::MockHCameraHostManager::ModeConfigs232         std::vector<int32_t> GetDatas() const
233         {
234             std::vector<int32_t> datas = {};
235             for (auto& config : configs) {
236                 config.IntoVector(datas);
237             }
238             return datas;
239         }
240     };
241 
242     const ModeConfig DEFAULT_MODE_CONFIG = { CameraFrameworkUnitTest::DEFAULT_MODE, {
243         { CameraFrameworkUnitTest::PREVIEW_STREAM, { { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 480, 0, 0, 0 } } },
244         { CameraFrameworkUnitTest::VIDEO_STREAM, { { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 360, 30, 0, 0 } } },
245         { CameraFrameworkUnitTest::PHOTO_STREAM, { { OHOS_CAMERA_FORMAT_JPEG, 1280, 960, 0, 0, 0 } } } } };
246 
247     const ModeConfig PHOTO_MODE_CONFIG = { CameraFrameworkUnitTest::PHOTO_MODE,
248         {
249             { CameraFrameworkUnitTest::PREVIEW_STREAM,
250                 {
251                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 480, 0, 0, 0 },
252 
253                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 720, 720, 0, 0, 0 },
254                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1080, 1080, 0, 0, 0 },
255                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1440, 1440, 0, 0, 0 },
256 
257                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 960, 720, 0, 0, 0 },
258                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1440, 1080, 0, 0, 0 },
259                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1920, 1440, 0, 0, 0 },
260 
261                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1280, 720, 0, 0, 0 },
262                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1920, 1080, 0, 0, 0 },
263                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 2560, 1440, 0, 0, 0 },
264                 } },
265             { CameraFrameworkUnitTest::PHOTO_STREAM,
266                 {
267                     { OHOS_CAMERA_FORMAT_JPEG, 720, 720, 0, 0, 0 },
268                     { OHOS_CAMERA_FORMAT_JPEG, 1080, 1080, 0, 0, 0 },
269                     { OHOS_CAMERA_FORMAT_JPEG, 2160, 2160, 0, 0, 0 },
270                     { OHOS_CAMERA_FORMAT_JPEG, 3072, 3072, 0, 0, 0 },
271 
272                     { OHOS_CAMERA_FORMAT_JPEG, 960, 720, 0, 0, 0 },
273                     { OHOS_CAMERA_FORMAT_JPEG, 1440, 1080, 0, 0, 0 },
274                     { OHOS_CAMERA_FORMAT_JPEG, 2880, 2160, 0, 0, 0 },
275                     { OHOS_CAMERA_FORMAT_JPEG, 4096, 3072, 0, 0, 0 },
276 
277                     { OHOS_CAMERA_FORMAT_JPEG, 1280, 720, 0, 0, 0 },
278                     { OHOS_CAMERA_FORMAT_JPEG, 1920, 1080, 0, 0, 0 },
279                     { OHOS_CAMERA_FORMAT_JPEG, 3840, 2160, 0, 0, 0 },
280                     { OHOS_CAMERA_FORMAT_JPEG, 4096, 2304, 0, 0, 0 },
281 
282                     { OHOS_CAMERA_FORMAT_JPEG, 1280, 960, 0, 0, 0 },
283                 } },
284         } };
285 
286     const ModeConfig VIDEO_MODE_CONFIG = { CameraFrameworkUnitTest::VIDEO_MODE,
287         {
288             { CameraFrameworkUnitTest::PREVIEW_STREAM,
289                 {
290                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 720, 720, 0, 0, 0 },
291                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1080, 1080, 0, 0, 0 },
292                     { OHOS_CAMERA_FORMAT_YCRCB_P010, 1080, 1080, 0, 0, 0 },
293 
294                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 960, 720, 0, 0, 0 },
295                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1440, 1080, 0, 0, 0 },
296                     { OHOS_CAMERA_FORMAT_YCRCB_P010, 1440, 1080, 0, 0, 0 },
297 
298                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1280, 720, 0, 0, 0 },
299                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1920, 1080, 0, 0, 0 },
300                     { OHOS_CAMERA_FORMAT_YCRCB_P010, 1920, 1080, 0, 0, 0 },
301 
302                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 480, 0, 0, 0 },
303                 } },
304             { CameraFrameworkUnitTest::VIDEO_STREAM,
305                 {
306                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 720, 720, 30, 24, 30 },
307                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1080, 1080, 30, 24, 30 },
308                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 2160, 2160, 30, 24, 30 },
309                     { OHOS_CAMERA_FORMAT_YCRCB_P010, 2160, 2160, 30, 24, 30 },
310 
311                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 960, 720, 30, 24, 30 },
312                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1440, 1080, 30, 24, 30 },
313                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 2880, 2160, 30, 24, 30 },
314                     { OHOS_CAMERA_FORMAT_YCRCB_P010, 2880, 2160, 30, 24, 30 },
315 
316                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1280, 720, 30, 24, 30 },
317                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1920, 1080, 30, 24, 30 },
318                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 3840, 2160, 30, 24, 30 },
319                     { OHOS_CAMERA_FORMAT_YCRCB_P010, 3840, 2160, 30, 24, 30 },
320 
321                     { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 360, 30, 24, 30 },
322                 } },
323             { CameraFrameworkUnitTest::PHOTO_STREAM,
324                 {
325                     { OHOS_CAMERA_FORMAT_JPEG, 2304, 2304, 0, 0, 0 },
326                     { OHOS_CAMERA_FORMAT_JPEG, 3072, 2304, 0, 0, 0 },
327                     { OHOS_CAMERA_FORMAT_JPEG, 4096, 2304, 0, 0, 0 },
328 
329                     { OHOS_CAMERA_FORMAT_JPEG, 1280, 960, 0, 0, 0 },
330                     { OHOS_CAMERA_FORMAT_JPEG, 1280, 720, 0, 0, 0 },
331                     { OHOS_CAMERA_FORMAT_JPEG, 1920, 1080, 0, 0, 0 },
332                     { OHOS_CAMERA_FORMAT_JPEG, 3840, 2160, 0, 0, 0 },
333                 } },
334         } };
335 
336     const ModeConfig PORTRAIT_MODE_CONFIG = { CameraFrameworkUnitTest::PORTRAIT_MODE, {
337         { CameraFrameworkUnitTest::PREVIEW_STREAM, {
338             { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 480, 0, 0, 0, {
339                 CameraFrameworkUnitTest::ABILITY_ID_ONE,
340                 CameraFrameworkUnitTest::ABILITY_ID_TWO,
341                 CameraFrameworkUnitTest::ABILITY_ID_THREE,
342                 CameraFrameworkUnitTest::ABILITY_ID_FOUR } } } },
343         { CameraFrameworkUnitTest::VIDEO_STREAM, {
344             { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 360, 30, 0, 0, {
345                 CameraFrameworkUnitTest::ABILITY_ID_ONE,
346                 CameraFrameworkUnitTest::ABILITY_ID_TWO,
347                 CameraFrameworkUnitTest::ABILITY_ID_THREE,
348                 CameraFrameworkUnitTest::ABILITY_ID_FOUR } } } },
349         { CameraFrameworkUnitTest::PHOTO_STREAM, {
350             { OHOS_CAMERA_FORMAT_JPEG, 1280, 960, 0, 0, 0, {
351                 CameraFrameworkUnitTest::ABILITY_ID_ONE,
352                 CameraFrameworkUnitTest::ABILITY_ID_TWO,
353                 CameraFrameworkUnitTest::ABILITY_ID_THREE,
354                 CameraFrameworkUnitTest::ABILITY_ID_FOUR } } } } } };
355 
356     const ModeConfig NIGHT_MODE_CONFIG = { CameraFrameworkUnitTest::NIGHT_MODE, {
357         { CameraFrameworkUnitTest::PREVIEW_STREAM, {
358             { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 480, 0, 0, 0, {
359                 CameraFrameworkUnitTest::ABILITY_ID_ONE,
360                 CameraFrameworkUnitTest::ABILITY_ID_TWO,
361                 CameraFrameworkUnitTest::ABILITY_ID_THREE,
362                 CameraFrameworkUnitTest::ABILITY_ID_FOUR } } } },
363         { CameraFrameworkUnitTest::VIDEO_STREAM, {
364             { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 360, 30, 0, 0, {
365                 CameraFrameworkUnitTest::ABILITY_ID_ONE,
366                 CameraFrameworkUnitTest::ABILITY_ID_TWO,
367                 CameraFrameworkUnitTest::ABILITY_ID_THREE,
368                 CameraFrameworkUnitTest::ABILITY_ID_FOUR } } } },
369         { CameraFrameworkUnitTest::PHOTO_STREAM, {
370             { OHOS_CAMERA_FORMAT_JPEG, 1280, 960, 0, 0, 0, {
371                 CameraFrameworkUnitTest::ABILITY_ID_ONE,
372                 CameraFrameworkUnitTest::ABILITY_ID_TWO,
373                 CameraFrameworkUnitTest::ABILITY_ID_THREE,
374                 CameraFrameworkUnitTest::ABILITY_ID_FOUR } } } } } };
375 
376     const ModeConfig SCAN_MODE_CONFIG = { CameraFrameworkUnitTest::SCAN_MODE, {
377         { CameraFrameworkUnitTest::PREVIEW_STREAM, {
378             { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 480, 0, 0, 0, {
379                 CameraFrameworkUnitTest::ABILITY_ID_ONE,
380                 CameraFrameworkUnitTest::ABILITY_ID_TWO,
381                 CameraFrameworkUnitTest::ABILITY_ID_THREE,
382                 CameraFrameworkUnitTest::ABILITY_ID_FOUR } } } },
383         { CameraFrameworkUnitTest::VIDEO_STREAM, {
384             { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 640, 360, 30, 0, 0, {
385                 CameraFrameworkUnitTest::ABILITY_ID_ONE,
386                 CameraFrameworkUnitTest::ABILITY_ID_TWO,
387                 CameraFrameworkUnitTest::ABILITY_ID_THREE,
388                 CameraFrameworkUnitTest::ABILITY_ID_FOUR } } } },
389         { CameraFrameworkUnitTest::PHOTO_STREAM, {
390             { OHOS_CAMERA_FORMAT_JPEG, 1280, 960, 0, 0, 0, {
391                 CameraFrameworkUnitTest::ABILITY_ID_ONE,
392                 CameraFrameworkUnitTest::ABILITY_ID_TWO,
393                 CameraFrameworkUnitTest::ABILITY_ID_THREE,
394                 CameraFrameworkUnitTest::ABILITY_ID_FOUR, } } } } } };
395 
396     const ModeConfig SLOW_MODE_CONFIG = { CameraFrameworkUnitTest::SLOW_MODE, {
397         { CameraFrameworkUnitTest::PREVIEW_STREAM, {
398             { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1920, 1080, 0, 0, 0} } },
399         { CameraFrameworkUnitTest::VIDEO_STREAM, {
400             { OHOS_CAMERA_FORMAT_YCRCB_420_SP, 1920, 1080, 0, 0, 0} } }}};
401 
402     const ModeConfigs ABILITY_MODE_CONFIGS = ModeConfigs(std::vector<ModeConfig> { DEFAULT_MODE_CONFIG,
403         PHOTO_MODE_CONFIG, VIDEO_MODE_CONFIG, PORTRAIT_MODE_CONFIG, NIGHT_MODE_CONFIG, SCAN_MODE_CONFIG,
404         SLOW_MODE_CONFIG });
405 
406     uint8_t filterAbility[2] = {0, 1};
407     int32_t filterControl[2] = {0, 1};
408     uint8_t beautyAbility[5] = {OHOS_CAMERA_BEAUTY_TYPE_OFF, OHOS_CAMERA_BEAUTY_TYPE_AUTO,
409                                 OHOS_CAMERA_BEAUTY_TYPE_SKIN_SMOOTH, OHOS_CAMERA_BEAUTY_TYPE_FACE_SLENDER,
410                                 OHOS_CAMERA_BEAUTY_TYPE_SKIN_TONE};
411     uint8_t faceSlenderBeautyRange[2] = {2, 3};
412     int32_t faceSlenderBeautyControl[2] = {2, 3};
413     int32_t effectAbility[2] = {0, 1};
414     int32_t effectControl[2] = {0, 1};
415     int32_t photoFormats[2] = {OHOS_CAMERA_FORMAT_YCRCB_420_SP, OHOS_CAMERA_FORMAT_JPEG};
416     class MockStatusCallback : public StatusCallback {
417     public:
OnCameraStatus(const std::string & cameraId,CameraStatus status,CallbackInvoker invoker)418         void OnCameraStatus(const std::string& cameraId, CameraStatus status, CallbackInvoker invoker) override
419         {
420             MEDIA_DEBUG_LOG("MockStatusCallback::OnCameraStatus");
421             return;
422         }
OnFlashlightStatus(const std::string & cameraId,FlashStatus status)423         void OnFlashlightStatus(const std::string& cameraId, FlashStatus status) override
424         {
425             MEDIA_DEBUG_LOG("MockStatusCallback::OnFlashlightStatus");
426             return;
427         }
OnTorchStatus(TorchStatus status)428         void OnTorchStatus(TorchStatus status) override
429         {
430             MEDIA_DEBUG_LOG("MockStatusCallback::OnTorchStatus");
431             return;
432         }
433     };
434 
MockHCameraHostManager(std::shared_ptr<StatusCallback> statusCallback)435     explicit MockHCameraHostManager(std::shared_ptr<StatusCallback> statusCallback) : HCameraHostManager(statusCallback)
436     {
437         cameraDevice = new MockCameraDevice();
438         ON_CALL(*this, GetCameras).WillByDefault([](std::vector<std::string> &cameraIds) {
439             cameraIds.emplace_back("cam0");
440             return CAMERA_OK;
441         });
442         ON_CALL(*this, GetVersionByCamera).WillByDefault([](const std::string& cameraId) {
443             const uint32_t offset = 8;
444             uint32_t major = 1;
445             uint32_t minor = 1;
446             return static_cast<int32_t>((major << offset) | minor);
447         });
448         ON_CALL(*this, GetCameraAbility).WillByDefault([this](std::string &cameraId,
449                                                             std::shared_ptr<OHOS::Camera::CameraMetadata> &ability) {
450             int32_t itemCount = 10;
451             int32_t dataSize = 100;
452             auto streamsInfo = ABILITY_MODE_CONFIGS.GetDatas();
453             ability = std::make_shared<OHOS::Camera::CameraMetadata>(itemCount, dataSize);
454             ability->addEntry(
455                 OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS, streamsInfo.data(), streamsInfo.size());
456 
457             ability->addEntry(
458                 OHOS_ABILITY_STREAM_AVAILABLE_EXTEND_CONFIGURATIONS, streamsInfo.data(), streamsInfo.size());
459 
460             if (g_mockFlagWithoutAbt) {
461                 return CAMERA_OK;
462             }
463             if (g_getCameraAbilityerror) {
464                 g_getCameraAbilityerror = false;
465                 return CAMERA_ALLOC_ERROR;
466             }
467 
468             int32_t compensationRange[2] = {0, 0};
469             ability->addEntry(OHOS_ABILITY_AE_COMPENSATION_RANGE, compensationRange,
470                               sizeof(compensationRange) / sizeof(compensationRange[0]));
471             float focalLength = 1.5;
472             ability->addEntry(OHOS_ABILITY_FOCAL_LENGTH, &focalLength, sizeof(float));
473 
474             int32_t sensorOrientation = 0;
475             ability->addEntry(OHOS_SENSOR_ORIENTATION, &sensorOrientation, sizeof(int32_t));
476 
477             int32_t cameraPosition = 0;
478             ability->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, sizeof(int32_t));
479 
480             const camera_rational_t aeCompensationStep[] = {{0, 1}};
481             ability->addEntry(OHOS_ABILITY_AE_COMPENSATION_STEP, &aeCompensationStep,
482                               sizeof(aeCompensationStep) / sizeof(aeCompensationStep[0]));
483 
484             int32_t zoomCap[2] = {0, 10};
485             ability->addEntry(OHOS_ABILITY_ZOOM_CAP, &zoomCap,
486                               sizeof(zoomCap) / sizeof(zoomCap[0]));
487 
488             int32_t sceneZoomCap[2] = {1, 10};
489             ability->addEntry(OHOS_ABILITY_SCENE_ZOOM_CAP, &sceneZoomCap,
490                               sizeof(zoomCap) / sizeof(zoomCap[0]));
491 
492             float zoomRatio = 1.0;
493             ability->addEntry(OHOS_CONTROL_ZOOM_RATIO, &zoomRatio, sizeof(float));
494 
495             uint8_t flaMode = OHOS_CAMERA_FLASH_MODE_ALWAYS_OPEN;
496             ability->addEntry(OHOS_CONTROL_FLASH_MODE, &flaMode, sizeof(uint8_t));
497 
498             uint8_t flashstate = OHOS_CAMERA_FLASH_STATE_READY;
499             ability->addEntry(OHOS_CONTROL_FLASH_STATE, &flashstate, sizeof(uint8_t));
500 
501             uint8_t fMode = FOCUS_MODE_AUTO;
502             ability->addEntry(OHOS_CONTROL_FOCUS_MODE, &fMode, sizeof(uint8_t));
503 
504             uint8_t focusState = OHOS_CAMERA_FOCUS_STATE_SCAN;
505             ability->addEntry(OHOS_CONTROL_FOCUS_STATE, &focusState, sizeof(uint8_t));
506 
507             uint8_t exMode = 0;
508             ability->addEntry(OHOS_CONTROL_EXPOSURE_MODE, &exMode, sizeof(uint8_t));
509 
510             uint8_t muteMode = OHOS_CAMERA_MUTE_MODE_OFF;
511             ability->addEntry(OHOS_CONTROL_MUTE_MODE, &muteMode, sizeof(uint8_t));
512 
513             int32_t activeArraySize[] = {
514                 0, 0, CameraFrameworkUnitTest::PREVIEW_DEFAULT_WIDTH, CameraFrameworkUnitTest::PREVIEW_DEFAULT_HEIGHT
515             };
516             ability->addEntry(OHOS_SENSOR_INFO_ACTIVE_ARRAY_SIZE, &activeArraySize, sizeof(int32_t));
517 
518             uint8_t videoStabilizationMode = OHOS_CAMERA_VIDEO_STABILIZATION_OFF;
519             ability->addEntry(OHOS_CONTROL_VIDEO_STABILIZATION_MODE, &videoStabilizationMode, sizeof(uint8_t));
520 
521             uint8_t faceDetectMode = OHOS_CAMERA_FACE_DETECT_MODE_SIMPLE;
522             ability->addEntry(OHOS_STATISTICS_FACE_DETECT_MODE, &faceDetectMode, sizeof(uint8_t));
523 
524             uint8_t type = 5;
525             ability->addEntry(OHOS_ABILITY_CAMERA_TYPE, &type, sizeof(uint8_t));
526             uint8_t value_u8 = 0;
527             ability->addEntry(OHOS_ABILITY_CAMERA_CONNECTION_TYPE, &value_u8, sizeof(uint8_t));
528             ability->addEntry(OHOS_ABILITY_FLASH_MODES, &value_u8, sizeof(uint8_t));
529             ability->addEntry(OHOS_ABILITY_FOCUS_MODES, &value_u8, sizeof(uint8_t));
530             ability->addEntry(OHOS_ABILITY_EXPOSURE_MODES, &value_u8, sizeof(uint8_t));
531             ability->addEntry(OHOS_ABILITY_VIDEO_STABILIZATION_MODES, &value_u8, sizeof(uint8_t));
532             ability->addEntry(OHOS_ABILITY_PRELAUNCH_AVAILABLE, &value_u8, sizeof(uint8_t));
533             ability->addEntry(OHOS_ABILITY_STREAM_QUICK_THUMBNAIL_AVAILABLE, &value_u8, sizeof(uint8_t));
534             ability->addEntry(OHOS_ABILITY_MUTE_MODES, &value_u8, sizeof(uint8_t));
535 
536             uint32_t value_u32[2] = {0, 10};
537             ability->addEntry(OHOS_ABILITY_FPS_RANGES, &value_u32, sizeof(value_u32) / sizeof(value_u32[0]));
538 
539             float value_f[1] = {1.0};
540             ability->addEntry(OHOS_ABILITY_ZOOM_RATIO_RANGE, &value_f, sizeof(value_f) / sizeof(value_f[0]));
541 
542             int32_t aeRegions = 0;
543             ability->addEntry(OHOS_CONTROL_AE_REGIONS, &aeRegions, sizeof(int32_t));
544 
545             int32_t aeExposureCompensation = 0;
546             ability->addEntry(OHOS_CONTROL_AE_EXPOSURE_COMPENSATION, &aeExposureCompensation, sizeof(int32_t));
547 
548             uint8_t exposureState = 0;
549             ability->addEntry(OHOS_CONTROL_EXPOSURE_STATE, &exposureState, sizeof(uint8_t));
550 
551             uint8_t mirror = OHOS_CAMERA_MIRROR_OFF;
552             ability->addEntry(OHOS_CONTROL_CAPTURE_MIRROR, &mirror, sizeof(uint8_t));
553 
554             int32_t orientation = OHOS_CAMERA_JPEG_ROTATION_0;
555             ability->addEntry(OHOS_JPEG_ORIENTATION, &orientation, sizeof(int32_t));
556 
557             std::vector<uint8_t> modes = ABILITY_MODE_CONFIGS.GetModes();
558             ability->addEntry(OHOS_ABILITY_CAMERA_MODES, modes.data(), modes.size());
559 
560             ability->addEntry(OHOS_ABILITY_SCENE_FILTER_TYPES, &filterAbility,
561                               sizeof(filterAbility) / sizeof(filterAbility[0]));
562 
563             ability->addEntry(OHOS_CONTROL_FILTER_TYPE, &filterControl,
564                               sizeof(filterControl) / sizeof(filterControl[0]));
565 
566             ability->addEntry(OHOS_ABILITY_SCENE_BEAUTY_TYPES, beautyAbility,
567                               sizeof(beautyAbility) / sizeof(beautyAbility[0]));
568 
569             ability->addEntry(OHOS_ABILITY_BEAUTY_FACE_SLENDER_VALUES, &faceSlenderBeautyRange,
570                               sizeof(faceSlenderBeautyRange) / sizeof(faceSlenderBeautyRange[0]));
571 
572             ability->addEntry(OHOS_CONTROL_BEAUTY_FACE_SLENDER_VALUE, &faceSlenderBeautyControl,
573                               sizeof(faceSlenderBeautyControl) / sizeof(faceSlenderBeautyControl[0]));
574 
575             ability->addEntry(OHOS_ABILITY_SCENE_PORTRAIT_EFFECT_TYPES, &effectAbility,
576                               sizeof(effectAbility) / sizeof(effectAbility[0]));
577 
578             ability->addEntry(OHOS_CONTROL_PORTRAIT_EFFECT_TYPE, &effectControl,
579                               sizeof(effectControl) / sizeof(effectControl[0]));
580             ability->addEntry(OHOS_STREAM_AVAILABLE_FORMATS, &photoFormats,
581                               sizeof(photoFormats) / sizeof(photoFormats[0]));
582                         return CAMERA_OK;
583         });
584         ON_CALL(*this, OpenCameraDevice).WillByDefault([this](std::string &cameraId,
585                                                             const sptr<ICameraDeviceCallback> &callback,
586                                                             sptr<OHOS::HDI::Camera::V1_0::ICameraDevice> &pDevice,
587                                                             bool isEnableSecCam) {
588             pDevice = cameraDevice;
589             return CAMERA_OK;
590         });
591         ON_CALL(*this, SetFlashlight(_, _)).WillByDefault(Return(CAMERA_OK));
592         ON_CALL(*this, SetCallback(_)).WillByDefault(Return(CAMERA_OK));
593     }
~MockHCameraHostManager()594     ~MockHCameraHostManager() {}
595     MOCK_METHOD1(GetVersionByCamera, int32_t(const std::string& cameraId));
596     MOCK_METHOD1(GetCameras, int32_t(std::vector<std::string> &cameraIds));
597     MOCK_METHOD1(SetCallback, int32_t(sptr<ICameraHostCallback> &callback));
598     MOCK_METHOD2(GetCameraAbility, int32_t(std::string &cameraId,
599         std::shared_ptr<OHOS::Camera::CameraMetadata> &ability));
600     MOCK_METHOD2(SetFlashlight, int32_t(const std::string &cameraId, bool isEnable));
601     MOCK_METHOD4(OpenCameraDevice, int32_t(std::string &cameraId,
602         const sptr<ICameraDeviceCallback> &callback, sptr<OHOS::HDI::Camera::V1_0::ICameraDevice> &pDevice,
603         bool isEnableSecCam));
604     sptr<MockCameraDevice> cameraDevice;
605 };
606 
607 class MockCameraManager : public CameraManager {
608 public:
609     MOCK_METHOD0(GetIsFoldable, bool());
610     MOCK_METHOD0(GetFoldStatus, FoldStatus());
~MockCameraManager()611     ~MockCameraManager() {}
612 };
613 
614 class FakeHCameraService : public HCameraService {
615 public:
FakeHCameraService(sptr<HCameraHostManager> hostManager)616     explicit FakeHCameraService(sptr<HCameraHostManager> hostManager) : HCameraService(hostManager)
617     {
618         SetServiceStatus(CameraServiceStatus::SERVICE_READY);
619     }
~FakeHCameraService()620     ~FakeHCameraService() {}
621 };
622 
623 class FakeCameraManager : public CameraManager {
624 public:
FakeCameraManager(sptr<HCameraService> service)625     explicit FakeCameraManager(sptr<HCameraService> service) : CameraManager(service) {}
~FakeCameraManager()626     ~FakeCameraManager() {}
627 };
628 
629 class CallbackListener : public FocusCallback, public ExposureCallback {
630 public:
OnFocusState(FocusState state)631     void OnFocusState(FocusState state) override
632     {
633         MEDIA_DEBUG_LOG("CallbackListener::OnFocusState ");
634         return;
635     }
636 
OnExposureState(ExposureState state)637     void OnExposureState(ExposureState state) override
638     {
639         MEDIA_DEBUG_LOG("CallbackListener::OnExposureState ");
640         return;
641     }
642 };
643 
644 class AppSessionCallback : public SessionCallback {
645 public:
OnError(int32_t errorCode)646     void OnError(int32_t errorCode)
647     {
648         MEDIA_DEBUG_LOG("AppMetadataCallback::OnError %{public}d", errorCode);
649         return;
650     }
651 };
652 
653 class AppMacroStatusCallback : public MacroStatusCallback {
654 public:
OnMacroStatusChanged(MacroStatus status)655     void OnMacroStatusChanged(MacroStatus status)
656     {
657         MEDIA_DEBUG_LOG("AppMacroStatusCallback");
658     }
659 };
660 
661 class AppMetadataCallback : public MetadataObjectCallback, public MetadataStateCallback {
662 public:
OnMetadataObjectsAvailable(std::vector<sptr<MetadataObject>> metaObjects) const663     void OnMetadataObjectsAvailable(std::vector<sptr<MetadataObject>> metaObjects) const
664     {
665         MEDIA_DEBUG_LOG("AppMetadataCallback::OnMetadataObjectsAvailable received");
666     }
OnError(int32_t errorCode) const667     void OnError(int32_t errorCode) const
668     {
669         MEDIA_DEBUG_LOG("AppMetadataCallback::OnError %{public}d", errorCode);
670     }
671 };
672 
673 class TestSlowMotionStateCallback : public SlowMotionStateCallback {
674 public:
OnSlowMotionState(const SlowMotionState state)675     void OnSlowMotionState(const SlowMotionState state)
676     {
677         MEDIA_INFO_LOG("TestSlowMotionStateCallback OnSlowMotionState.");
678     }
679 };
680 
681 class TestExposureCallback : public ExposureCallback {
682 public:
OnExposureState(ExposureState state)683     void OnExposureState(ExposureState state)
684     {
685         MEDIA_INFO_LOG("TestExposureCallback OnExposureState.");
686     }
687 };
688 
689 class TestSmoothZoomCallback : public SmoothZoomCallback {
690 public:
OnSmoothZoom(int32_t duration)691     void OnSmoothZoom(int32_t duration)
692     {
693         MEDIA_INFO_LOG("TestSmoothZoomCallback OnSmoothZoom.");
694     }
695 };
696 
697 class TestAbilityCallback : public AbilityCallback {
698 public:
OnAbilityChange()699     void OnAbilityChange()
700     {
701         MEDIA_INFO_LOG("TestAbilityCallback OnAbilityChange.");
702     }
703 };
704 
705 class TestFocusCallback : public FocusCallback {
706 public:
OnFocusState(FocusState state)707     void OnFocusState(FocusState state)
708     {
709         MEDIA_INFO_LOG("TestFocusCallback OnFocusState.");
710     }
711 };
712 
713 class TestARCallback : public ARCallback {
714 public:
OnResult(const ARStatusInfo & arStatusInfo) const715     void OnResult(const ARStatusInfo &arStatusInfo) const
716     {
717         MEDIA_INFO_LOG("TestARCallback OnResult.");
718     }
719 };
720 
CreatePhotoOutput(int32_t width,int32_t height)721 sptr<CaptureOutput> CameraFrameworkUnitTest::CreatePhotoOutput(int32_t width, int32_t height)
722 {
723     sptr<IConsumerSurface> surface = IConsumerSurface::Create();
724     if (surface == nullptr) {
725         return nullptr;
726     }
727     CameraFormat photoFormat = CAMERA_FORMAT_JPEG;
728     Size photoSize;
729     photoSize.width = width;
730     photoSize.height = height;
731     Profile photoProfile = Profile(photoFormat, photoSize);
732     sptr<IBufferProducer> surfaceProducer = surface->GetProducer();
733     return cameraManager->CreatePhotoOutput(photoProfile, surfaceProducer);
734 }
735 
CreatePreviewOutput(int32_t width,int32_t height)736 sptr<CaptureOutput> CameraFrameworkUnitTest::CreatePreviewOutput(int32_t width, int32_t height)
737 {
738     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
739     if (surface == nullptr) {
740         return nullptr;
741     }
742     CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
743     Size previewSize;
744     previewSize.width = width;
745     previewSize.height = height;
746     Profile previewProfile = Profile(previewFormat, previewSize);
747     return cameraManager->CreatePreviewOutput(previewProfile, surface);
748 }
749 
CreateVideoOutput(int32_t width,int32_t height)750 sptr<CaptureOutput> CameraFrameworkUnitTest::CreateVideoOutput(int32_t width, int32_t height)
751 {
752     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
753     if (surface == nullptr) {
754         return nullptr;
755     }
756     CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
757     Size videoSize;
758     videoSize.width = width;
759     videoSize.height = height;
760     std::vector<int32_t> videoFramerates = {30, 30};
761     VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
762     return cameraManager->CreateVideoOutput(videoProfile, surface);
763 }
764 
SessionCommit(sptr<CaptureSession> session)765 void CameraFrameworkUnitTest::SessionCommit(sptr<CaptureSession> session)
766 {
767     int32_t ret = session->CommitConfig();
768     EXPECT_EQ(ret, 0);
769     int32_t captureId = 3;
770     EXPECT_CALL(*mockStreamOperator, Capture(captureId, _, true));
771     ret = session->Start();
772     EXPECT_EQ(ret, 0);
773 }
774 
SessionControlParams(sptr<CaptureSession> session)775 void CameraFrameworkUnitTest::SessionControlParams(sptr<CaptureSession> session)
776 {
777     session->LockForControl();
778 
779     std::vector<float> zoomRatioRange = session->GetZoomRatioRange();
780     if (!zoomRatioRange.empty()) {
781         session->SetZoomRatio(zoomRatioRange[0]);
782     }
783 
784     std::vector<float> exposurebiasRange = session->GetExposureBiasRange();
785     if (!exposurebiasRange.empty()) {
786         session->SetExposureBias(exposurebiasRange[0]);
787     }
788 
789     FlashMode flash = FLASH_MODE_ALWAYS_OPEN;
790     bool flashSupported = session->IsFlashModeSupported(flash);
791     if (flashSupported) {
792         session->SetFlashMode(flash);
793     }
794 
795     FocusMode focus = FOCUS_MODE_AUTO;
796     bool focusSupported = session->IsFocusModeSupported(focus);
797     if (focusSupported) {
798         session->SetFocusMode(focus);
799     }
800 
801     ExposureMode exposure = EXPOSURE_MODE_AUTO;
802     bool exposureSupported = session->IsExposureModeSupported(exposure);
803     if (exposureSupported) {
804         session->SetExposureMode(exposure);
805     }
806 
807     session->UnlockForControl();
808 
809     if (!exposurebiasRange.empty()) {
810         EXPECT_EQ(session->GetExposureValue(), exposurebiasRange[0]);
811     }
812 
813     if (flashSupported) {
814         EXPECT_EQ(session->GetFlashMode(), flash);
815     }
816 
817     if (focusSupported) {
818         EXPECT_EQ(session->GetFocusMode(), focus);
819     }
820 
821     if (exposureSupported) {
822         EXPECT_EQ(session->GetExposureMode(), exposure);
823     }
824 }
825 
PortraitSessionControlParams(sptr<PortraitSession> portraitSession)826 void CameraFrameworkUnitTest::PortraitSessionControlParams(sptr<PortraitSession> portraitSession)
827 {
828     portraitSession->LockForControl();
829 
830     std::vector<PortraitEffect> effects= portraitSession->GetSupportedPortraitEffects();
831     ASSERT_TRUE(effects.size() != 0);
832 
833     if (!effects.empty()) {
834         portraitSession->SetPortraitEffect(effects[0]);
835     }
836 
837     std::vector<FilterType> filterLists= portraitSession->GetSupportedFilters();
838     ASSERT_TRUE(filterLists.size() != 0);
839 
840     if (!filterLists.empty()) {
841         portraitSession->SetFilter(filterLists[0]);
842     }
843 
844     std::vector<BeautyType> beautyLists= portraitSession->GetSupportedBeautyTypes();
845     ASSERT_TRUE(beautyLists.size() != 0);
846 
847     std::vector<int32_t> rangeLists= portraitSession->GetSupportedBeautyRange(beautyLists[ARRAY_IDX]);
848     ASSERT_TRUE(rangeLists.size() != 0);
849 
850     if (!beautyLists.empty()) {
851         portraitSession->SetBeauty(beautyLists[ARRAY_IDX], rangeLists[0]);
852     }
853 
854     portraitSession->UnlockForControl();
855     ASSERT_EQ(portraitSession->GetPortraitEffect(), effects[0]);
856     ASSERT_EQ(portraitSession->GetFilter(), filterLists[0]);
857     ASSERT_EQ(portraitSession->GetBeauty(beautyLists[ARRAY_IDX]), rangeLists[0]);
858 }
859 
PortraitSessionEffectParams(sptr<PortraitSession> portraitSession)860 void CameraFrameworkUnitTest::PortraitSessionEffectParams(sptr<PortraitSession> portraitSession)
861 {
862     std::vector<PortraitEffect> effects= portraitSession->GetSupportedPortraitEffects();
863     ASSERT_TRUE(effects.size() != 0);
864 
865     if (!effects.empty()) {
866         portraitSession->LockForControl();
867         portraitSession->SetPortraitEffect(effects[0]);
868         portraitSession->UnlockForControl();
869     }
870     ASSERT_EQ(portraitSession->GetPortraitEffect(), effects[0]);
871 }
872 
PortraitSessionFilterParams(sptr<PortraitSession> portraitSession)873 void CameraFrameworkUnitTest::PortraitSessionFilterParams(sptr<PortraitSession> portraitSession)
874 {
875     std::vector<FilterType> filterLists= portraitSession->GetSupportedFilters();
876     ASSERT_TRUE(filterLists.size() != 0);
877 
878     if (!filterLists.empty()) {
879         portraitSession->LockForControl();
880         portraitSession->SetFilter(filterLists[0]);
881         portraitSession->UnlockForControl();
882     }
883     ASSERT_EQ(portraitSession->GetFilter(), filterLists[0]);
884 }
885 
PortraitSessionBeautyParams(sptr<PortraitSession> portraitSession)886 void CameraFrameworkUnitTest::PortraitSessionBeautyParams(sptr<PortraitSession> portraitSession)
887 {
888     std::vector<BeautyType> beautyLists= portraitSession->GetSupportedBeautyTypes();
889     ASSERT_TRUE(beautyLists.size() != 0);
890 
891     std::vector<int32_t> rangeLists= portraitSession->GetSupportedBeautyRange(beautyLists[ARRAY_IDX]);
892     ASSERT_TRUE(rangeLists.size() != 0);
893 
894     if (!beautyLists.empty()) {
895         portraitSession->LockForControl();
896         portraitSession->SetBeauty(beautyLists[ARRAY_IDX], rangeLists[0]);
897         portraitSession->UnlockForControl();
898     }
899     ASSERT_EQ(portraitSession->GetBeauty(beautyLists[ARRAY_IDX]), rangeLists[0]);
900 }
901 
SetUpTestCase(void)902 void CameraFrameworkUnitTest::SetUpTestCase(void) {}
903 
TearDownTestCase(void)904 void CameraFrameworkUnitTest::TearDownTestCase(void)
905 {
906     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
907     SceneMode mode = PORTRAIT;
908     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
909     camSession->Release();
910 }
911 
SetUp()912 void CameraFrameworkUnitTest::SetUp()
913 {
914     // set native token
915     g_num++;
916     MEDIA_DEBUG_LOG("CameraFrameworkUnitTest::SetUp num:%{public}d", g_num);
917     NativeAuthorization();
918     g_mockFlagWithoutAbt = false;
919     mockCameraHostManager = new MockHCameraHostManager(nullptr);
920     mockCameraDevice = mockCameraHostManager->cameraDevice;
921     mockStreamOperator = mockCameraDevice->streamOperator;
922     cameraManager = new FakeCameraManager(new FakeHCameraService(mockCameraHostManager));
923     mockCameraManager = new MockCameraManager();
924 }
925 
NativeAuthorization()926 void CameraFrameworkUnitTest::NativeAuthorization()
927 {
928     const char *perms[2];
929     perms[0] = "ohos.permission.DISTRIBUTED_DATASYNC";
930     perms[1] = "ohos.permission.CAMERA";
931     NativeTokenInfoParams infoInstance = {
932         .dcapsNum = 0,
933         .permsNum = 2,
934         .aclsNum = 0,
935         .dcaps = NULL,
936         .perms = perms,
937         .acls = NULL,
938         .processName = "native_camera_tdd",
939         .aplStr = "system_basic",
940     };
941     g_tokenId_ = GetAccessTokenId(&infoInstance);
942     g_uid_ = IPCSkeleton::GetCallingUid();
943     AccountSA::OsAccountManager::GetOsAccountLocalIdFromUid(g_uid_, g_userId_);
944     MEDIA_DEBUG_LOG("CameraFrameworkUnitTest::NativeAuthorization g_uid:%{public}d", g_uid_);
945     SetSelfTokenID(g_tokenId_);
946     OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
947 }
948 
TearDown()949 void CameraFrameworkUnitTest::TearDown()
950 {
951     Mock::AllowLeak(mockCameraHostManager);
952     Mock::AllowLeak(mockCameraDevice);
953     Mock::AllowLeak(mockStreamOperator);
954     Mock::AllowLeak(mockCameraManager);
955     MEDIA_DEBUG_LOG("CameraFrameworkUnitTest::TearDown num:%{public}d", g_num);
956 }
957 
958 MATCHER_P(matchCaptureSetting, captureSetting, "Match Capture Setting")
959 {
960     std::vector<uint8_t> result;
961     OHOS::Camera::MetadataUtils::ConvertMetadataToVec(captureSetting, result);
962     return (arg.captureSetting_ == result);
963 }
964 
965 /*
966  * Feature: Framework
967  * Function: Test get HostName
968  * SubFunction: NA
969  * FunctionPoints: NA
970  * EnvConditions: NA
971  * CaseDescription: Test get HostName
972  */
973 HWTEST_F(CameraFrameworkUnitTest, Camera_fwInfoManager_unittest_001, TestSize.Level0)
974 {
975     InSequence s;
976     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
977     ASSERT_NE(static_cast<int>(cameras.size()), 0);
978     std::string hostName = cameras[0]->GetHostName();
979     ASSERT_EQ(hostName, "");
980 }
981 
982 /*
983  * Feature: Framework
984  * Function: Test get DeviceType
985  * SubFunction: NA
986  * FunctionPoints: NA
987  * EnvConditions: NA
988  * CaseDescription: Test get DeviceType
989  */
990 HWTEST_F(CameraFrameworkUnitTest, Camera_fwInfoManager_unittest_002, TestSize.Level0)
991 {
992     InSequence s;
993     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
994     ASSERT_NE(static_cast<int>(cameras.size()), 0);
__anon2f8e288d0702() 995     auto judgeDeviceType = [&cameras] () -> bool {
996         bool isOk = false;
997         uint16_t deviceType = cameras[0]->GetDeviceType();
998         switch (deviceType) {
999             case UNKNOWN:
1000             case PHONE:
1001             case TABLET:
1002                 isOk = true;
1003                 break;
1004             default:
1005                 isOk = false;
1006                 break;
1007         }
1008         return isOk;
1009     };
1010     ASSERT_NE(judgeDeviceType(), false);
1011 }
1012 
1013 /*
1014  * Feature: Framework
1015  * Function: Test result callback
1016  * SubFunction: NA
1017  * FunctionPoints: NA
1018  * EnvConditions: NA
1019  * CaseDescription: Test result callback
1020  */
1021 HWTEST_F(CameraFrameworkUnitTest, Camera_ResultCallback_unittest, TestSize.Level0)
1022 {
1023     InSequence s;
1024     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1025 
1026     sptr<CameraInput> input = cameraManager->CreateCameraInput(cameras[0]);
1027     ASSERT_NE(input, nullptr);
1028 
1029     std::shared_ptr<TestOnResultCallback> setResultCallback =
1030     std::make_shared<TestOnResultCallback>("OnResultCallback");
1031 
1032     input->SetResultCallback(setResultCallback);
1033     std::shared_ptr<ResultCallback> getResultCallback = input->GetResultCallback();
1034     ASSERT_EQ(getResultCallback, setResultCallback);
1035 }
1036 
1037 /*
1038  * Feature: Framework
1039  * Function: Test get cameras
1040  * SubFunction: NA
1041  * FunctionPoints: NA
1042  * EnvConditions: NA
1043  * CaseDescription: Test get cameras
1044  */
1045 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_001, TestSize.Level0)
1046 {
1047     InSequence s;
1048     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1049     ASSERT_TRUE(cameras.size() != 0);
1050 }
1051 
1052 /*
1053  * Feature: Framework
1054  * Function: Test create input
1055  * SubFunction: NA
1056  * FunctionPoints: NA
1057  * EnvConditions: NA
1058  * CaseDescription: Test create input
1059  */
1060 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_002, TestSize.Level0)
1061 {
1062     InSequence s;
1063     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1064     ASSERT_TRUE(cameras.size() != 0);
1065     sptr<CameraInput> input = cameraManager->CreateCameraInput(cameras[0]);
1066     ASSERT_NE(input, nullptr);
1067 
1068     ASSERT_NE(input->GetCameraDevice(), nullptr);
1069 
1070     input->Release();
1071 }
1072 
1073 /*
1074  * Feature: Framework
1075  * Function: Test create session
1076  * SubFunction: NA
1077  * FunctionPoints: NA
1078  * EnvConditions: NA
1079  * CaseDescription: Test create session
1080  */
1081 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_003, TestSize.Level0)
1082 {
1083     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1084     ASSERT_NE(session, nullptr);
1085     EXPECT_EQ(session->Release(), 0);
1086 }
1087 
1088 /*
1089  * Feature: Framework
1090  * Function: Test create preview output
1091  * SubFunction: NA
1092  * FunctionPoints: NA
1093  * EnvConditions: NA
1094  * CaseDescription: Test create preview output
1095  */
1096 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_004, TestSize.Level0)
1097 {
1098     int32_t width = PREVIEW_DEFAULT_WIDTH;
1099     int32_t height = PREVIEW_DEFAULT_HEIGHT;
1100     CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
1101     Size previewSize;
1102     previewSize.width = width;
1103     previewSize.height = height;
1104     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
1105     Profile previewProfile = Profile(previewFormat, previewSize);
1106     sptr<CaptureOutput> preview = cameraManager->CreatePreviewOutput(previewProfile, surface);
1107     ASSERT_NE(preview, nullptr);
1108     preview->Release();
1109 }
1110 
1111 /*
1112  * Feature: Framework
1113  * Function: Test create preview output with surface as null
1114  * SubFunction: NA
1115  * FunctionPoints: NA
1116  * EnvConditions: NA
1117  * CaseDescription: Test create preview output with surface as null
1118  */
1119 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_005, TestSize.Level0)
1120 {
1121     int32_t width = PREVIEW_DEFAULT_WIDTH;
1122     int32_t height = PREVIEW_DEFAULT_HEIGHT;
1123     CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
1124     Size previewSize;
1125     previewSize.width = width;
1126     previewSize.height = height;
1127     Profile previewProfile = Profile(previewFormat, previewSize);
1128     sptr<Surface> surface = nullptr;
1129     sptr<CaptureOutput> preview = cameraManager->CreatePreviewOutput(previewProfile, surface);
1130     ASSERT_EQ(preview, nullptr);
1131 }
1132 
1133 
1134 /*
1135  * Feature: Framework
1136  * Function: Test create photo output
1137  * SubFunction: NA
1138  * FunctionPoints: NA
1139  * EnvConditions: NA
1140  * CaseDescription: Test create photo output
1141  */
1142 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_011, TestSize.Level0)
1143 {
1144     int32_t width = PHOTO_DEFAULT_WIDTH;
1145     int32_t height = PHOTO_DEFAULT_HEIGHT;
1146     sptr<IConsumerSurface> surface = IConsumerSurface::Create();
1147     CameraFormat photoFormat = CAMERA_FORMAT_JPEG;
1148     Size photoSize;
1149     photoSize.width = width;
1150     photoSize.height = height;
1151     Profile photoProfile = Profile(photoFormat, photoSize);
1152     sptr<IBufferProducer> surfaceProducer = surface->GetProducer();
1153     sptr<PhotoOutput> photo = cameraManager->CreatePhotoOutput(photoProfile, surfaceProducer);
1154     ASSERT_NE(photo, nullptr);
1155     photo->Release();
1156 }
1157 
1158 /*
1159  * Feature: Framework
1160  * Function: Test create photo output with surface as null
1161  * SubFunction: NA
1162  * FunctionPoints: NA
1163  * EnvConditions: NA
1164  * CaseDescription: Test create photo output with surface as null
1165  */
1166 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_012, TestSize.Level0)
1167 {
1168     int32_t width = PHOTO_DEFAULT_WIDTH;
1169     int32_t height = PHOTO_DEFAULT_HEIGHT;
1170     CameraFormat photoFormat = CAMERA_FORMAT_JPEG;
1171     Size photoSize;
1172     photoSize.width = width;
1173     photoSize.height = height;
1174     Profile photoProfile = Profile(photoFormat, photoSize);
1175     sptr<IBufferProducer> surfaceProducer = nullptr;
1176     sptr<PhotoOutput> photo = cameraManager->CreatePhotoOutput(photoProfile, surfaceProducer);
1177     ASSERT_EQ(photo, nullptr);
1178 }
1179 
1180 /*
1181  * Feature: Framework
1182  * Function: Test create video output
1183  * SubFunction: NA
1184  * FunctionPoints: NA
1185  * EnvConditions: NA
1186  * CaseDescription: Test create video output
1187  */
1188 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_015, TestSize.Level0)
1189 {
1190     int32_t width = VIDEO_DEFAULT_WIDTH;
1191     int32_t height = VIDEO_DEFAULT_HEIGHT;
1192     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
1193     CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
1194     Size videoSize;
1195     videoSize.width = width;
1196     videoSize.height = height;
1197     std::vector<int32_t> videoFramerates = {30, 30};
1198     VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
1199     sptr<VideoOutput> video = cameraManager->CreateVideoOutput(videoProfile, surface);
1200     ASSERT_NE(video, nullptr);
1201     video->Release();
1202 }
1203 
1204 /*
1205  * Feature: Framework
1206  * Function: Test create video output with surface as null
1207  * SubFunction: NA
1208  * FunctionPoints: NA
1209  * EnvConditions: NA
1210  * CaseDescription: Test create video output with surface as null
1211  */
1212 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_016, TestSize.Level0)
1213 {
1214     int32_t width = VIDEO_DEFAULT_WIDTH;
1215     int32_t height = VIDEO_DEFAULT_HEIGHT;
1216     CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
1217     sptr<Surface> surface = nullptr;
1218     Size videoSize;
1219     videoSize.width = width;
1220     videoSize.height = height;
1221     std::vector<int32_t> videoFramerates = {30, 30};
1222     VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
1223     sptr<VideoOutput> video = cameraManager->CreateVideoOutput(videoProfile, surface);
1224     ASSERT_EQ(video, nullptr);
1225 }
1226 
1227 /*
1228  * Feature: Framework
1229  * Function: Test manager callback
1230  * SubFunction: NA
1231  * FunctionPoints: NA
1232  * EnvConditions: NA
1233  * CaseDescription: Test manager callback
1234  */
1235 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_019, TestSize.Level0)
1236 {
1237     std::shared_ptr<TestCameraMngerCallback> setCallback = std::make_shared<TestCameraMngerCallback>("MgrCallback");
1238     cameraManager->SetCallback(setCallback);
1239     std::shared_ptr<CameraManagerCallback> getCallback = cameraManager->GetApplicationCallback();
1240     ASSERT_EQ(setCallback, getCallback);
1241 }
1242 
1243 /*
1244  * Feature: Framework
1245  * Function: Test set camera parameters
1246  * SubFunction: NA
1247  * FunctionPoints: NA
1248  * EnvConditions: NA
1249  * CaseDescription: Test set camera parameters zoom, focus, flash & exposure
1250  */
1251 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_020, TestSize.Level0)
1252 {
1253     InSequence s;
1254     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1255 
1256     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1257     ASSERT_NE(input, nullptr);
1258 
1259     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
1260     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
1261     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
1262     std::string cameraSettings = camInput->GetCameraSettings();
1263     camInput->SetCameraSettings(cameraSettings);
1264     camInput->GetCameraDevice()->Open();
1265 
1266     sptr<CaptureOutput> photo = CreatePhotoOutput();
1267     ASSERT_NE(photo, nullptr);
1268 
1269     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1270     ASSERT_NE(session, nullptr);
1271 
1272     int32_t ret = session->BeginConfig();
1273     EXPECT_EQ(ret, 0);
1274     ret = session->AddInput(input);
1275     EXPECT_EQ(ret, 0);
1276 
1277     ret = session->AddOutput(photo);
1278     EXPECT_EQ(ret, 0);
1279 
1280     ret = session->CommitConfig();
1281     EXPECT_EQ(ret, 0);
1282 
1283     SessionControlParams(session);
1284 
1285     session->RemoveOutput(photo);
1286     session->RemoveInput(input);
1287     photo->Release();
1288     input->Release();
1289     EXPECT_EQ(session->Release(), 0);
1290 }
1291 
1292 /*
1293  * Feature: Framework
1294  * Function: Test input callback
1295  * SubFunction: NA
1296  * FunctionPoints: NA
1297  * EnvConditions: NA
1298  * CaseDescription: Test input callback
1299  */
1300 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_021, TestSize.Level0)
1301 {
1302     InSequence s;
1303     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1304 
1305     sptr<CameraInput> input = cameraManager->CreateCameraInput(cameras[0]);
1306     ASSERT_NE(input, nullptr);
1307 
1308     std::shared_ptr<TestDeviceCallback> setCallback = std::make_shared<TestDeviceCallback>("InputCallback");
1309     input->SetErrorCallback(setCallback);
1310     std::shared_ptr<ErrorCallback> getCallback = input->GetErrorCallback();
1311     ASSERT_EQ(setCallback, getCallback);
1312 }
1313 
1314 /*
1315  * Feature: Framework
1316  * Function: Test preview callback
1317  * SubFunction: NA
1318  * FunctionPoints: NA
1319  * EnvConditions: NA
1320  * CaseDescription: Test preview callback
1321  */
1322 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_022, TestSize.Level0)
1323 {
1324     sptr<CaptureOutput> preview = CreatePreviewOutput();
1325     ASSERT_NE(preview, nullptr);
1326 
1327     std::shared_ptr<PreviewStateCallback> setCallback =
1328         std::make_shared<TestPreviewOutputCallback>("PreviewStateCallback");
1329     ((sptr<PreviewOutput> &)preview)->SetCallback(setCallback);
1330     std::shared_ptr<PreviewStateCallback> getCallback = ((sptr<PreviewOutput> &)preview)->GetApplicationCallback();
1331     ASSERT_EQ(setCallback, getCallback);
1332 }
1333 
1334 /*
1335  * Feature: Framework
1336  * Function: Test photo callback
1337  * SubFunction: NA
1338  * FunctionPoints: NA
1339  * EnvConditions: NA
1340  * CaseDescription: Test photo callback
1341  */
1342 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_023, TestSize.Level0)
1343 {
1344     sptr<CaptureOutput> photo = CreatePhotoOutput();
1345     ASSERT_NE(photo, nullptr);
1346 
1347     std::shared_ptr<PhotoStateCallback> setCallback = std::make_shared<TestPhotoOutputCallback>("PhotoStateCallback");
1348     ((sptr<PhotoOutput> &)photo)->SetCallback(setCallback);
1349     std::shared_ptr<PhotoStateCallback> getCallback = ((sptr<PhotoOutput> &)photo)->GetApplicationCallback();
1350     ASSERT_EQ(setCallback, getCallback);
1351 }
1352 
1353 /*
1354  * Feature: Framework
1355  * Function: Test video callback
1356  * SubFunction: NA
1357  * FunctionPoints: NA
1358  * EnvConditions: NA
1359  * CaseDescription: Test video callback
1360  */
1361 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_024, TestSize.Level0)
1362 {
1363     sptr<CaptureOutput> video = CreateVideoOutput();
1364     ASSERT_NE(video, nullptr);
1365 
1366     std::shared_ptr<VideoStateCallback> setCallback = std::make_shared<TestVideoOutputCallback>("VideoStateCallback");
1367     ((sptr<VideoOutput> &)video)->SetCallback(setCallback);
1368     std::shared_ptr<VideoStateCallback> getCallback = ((sptr<VideoOutput> &)video)->GetApplicationCallback();
1369     ASSERT_EQ(setCallback, getCallback);
1370 }
1371 
1372 /*
1373  * Feature: Framework
1374  * Function: Test capture session add input with invalid value
1375  * SubFunction: NA
1376  * FunctionPoints: NA
1377  * EnvConditions: NA
1378  * CaseDescription: Test capture session add input with invalid value
1379  */
1380 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_025, TestSize.Level0)
1381 {
1382     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1383     ASSERT_NE(session, nullptr);
1384 
1385     int32_t ret = session->BeginConfig();
1386     EXPECT_EQ(ret, 0);
1387 
1388     sptr<CaptureInput> input = nullptr;
1389     ret = session->AddInput(input);
1390     EXPECT_NE(ret, 0);
1391     EXPECT_EQ(session->Release(), 0);
1392 }
1393 
1394 /*
1395  * Feature: Framework
1396  * Function: Test capture session add output with invalid value
1397  * SubFunction: NA
1398  * FunctionPoints: NA
1399  * EnvConditions: NA
1400  * CaseDescription: Test capture session add output with invalid value
1401  */
1402 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_026, TestSize.Level0)
1403 {
1404     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1405     ASSERT_NE(session, nullptr);
1406 
1407     int32_t ret = session->BeginConfig();
1408     EXPECT_EQ(ret, 0);
1409 
1410     sptr<CaptureOutput> preview = nullptr;
1411     ret = session->AddOutput(preview);
1412     EXPECT_NE(ret, 0);
1413     EXPECT_EQ(session->Release(), 0);
1414 }
1415 
1416 /*
1417  * Feature: Framework
1418  * Function: Test capture session commit config without adding input
1419  * SubFunction: NA
1420  * FunctionPoints: NA
1421  * EnvConditions: NA
1422  * CaseDescription: Test capture session commit config without adding input
1423  */
1424 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_027, TestSize.Level0)
1425 {
1426     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1427     ASSERT_NE(session, nullptr);
1428 
1429     int32_t ret = session->BeginConfig();
1430     EXPECT_EQ(ret, 0);
1431 
1432     sptr<CaptureOutput> preview = CreatePreviewOutput();
1433     ASSERT_NE(preview, nullptr);
1434 
1435     ret = session->AddOutput(preview);
1436     EXPECT_EQ(ret, 7400201);
1437 
1438     ret = session->CommitConfig();
1439     EXPECT_NE(ret, 0);
1440     session->RemoveOutput(preview);
1441     preview->Release();
1442     EXPECT_EQ(session->Release(), 0);
1443 }
1444 
1445 /*
1446  * Feature: Framework
1447  * Function: Test capture session commit config without adding output
1448  * SubFunction: NA
1449  * FunctionPoints: NA
1450  * EnvConditions: NA
1451  * CaseDescription: Test capture session commit config without adding output
1452  */
1453 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_028, TestSize.Level0)
1454 {
1455     InSequence s;
1456     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1457 
1458     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1459     ASSERT_NE(input, nullptr);
1460 
1461     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
1462     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
1463     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
1464     std::string cameraSettings = camInput->GetCameraSettings();
1465     camInput->SetCameraSettings(cameraSettings);
1466     camInput->GetCameraDevice()->Open();
1467 
1468     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1469     ASSERT_NE(session, nullptr);
1470 
1471     int32_t ret = session->BeginConfig();
1472     EXPECT_EQ(ret, 0);
1473 
1474     ret = session->AddInput(input);
1475     EXPECT_EQ(ret, 0);
1476 
1477     ret = session->CommitConfig();
1478     EXPECT_NE(ret, 0);
1479     session->RemoveInput(input);
1480     input->Release();
1481     EXPECT_EQ(session->Release(), 0);
1482 }
1483 
1484 /*
1485  * Feature: Framework
1486  * Function: Test capture session without begin config
1487  * SubFunction: NA
1488  * FunctionPoints: NA
1489  * EnvConditions: NA
1490  * CaseDescription: Test capture session without begin config
1491  */
1492 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_029, TestSize.Level0)
1493 {
1494     InSequence s;
1495     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1496 
1497     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1498     ASSERT_NE(input, nullptr);
1499 
1500     sptr<CaptureOutput> photo = CreatePhotoOutput();
1501     ASSERT_NE(photo, nullptr);
1502 
1503     sptr<CaptureOutput> preview = CreatePreviewOutput();
1504     ASSERT_NE(preview, nullptr);
1505 
1506     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1507     ASSERT_NE(session, nullptr);
1508 
1509     int32_t ret = session->AddInput(input);
1510     EXPECT_NE(ret, 0);
1511 
1512     ret = session->AddOutput(preview);
1513     EXPECT_NE(ret, 0);
1514 
1515     ret = session->AddOutput(photo);
1516     EXPECT_NE(ret, 0);
1517 
1518     ret = session->CommitConfig();
1519     EXPECT_NE(ret, 0);
1520 
1521     ret = session->Start();
1522     EXPECT_NE(ret, 0);
1523 
1524     ret = ((sptr<PreviewOutput> &)preview)->Start();
1525     EXPECT_NE(ret, 0);
1526 
1527     ret = ((sptr<PhotoOutput> &)photo)->Capture();
1528     EXPECT_NE(ret, 0);
1529 
1530     ret = ((sptr<PreviewOutput> &)preview)->Stop();
1531     EXPECT_NE(ret, 0);
1532 
1533     ret = session->Stop();
1534     EXPECT_NE(ret, 0);
1535     session->RemoveInput(input);
1536     session->RemoveOutput(preview);
1537     session->RemoveOutput(photo);
1538     preview->Release();
1539     photo->Release();
1540     input->Release();
1541     session->Release();
1542 }
1543 
1544 /*
1545  * Feature: Framework
1546  * Function: Test capture session start and stop without adding preview output
1547  * SubFunction: NA
1548  * FunctionPoints: NA
1549  * EnvConditions: NA
1550  * CaseDescription: Test capture session start and stop without adding preview output
1551  */
1552 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_030, TestSize.Level0)
1553 {
1554     InSequence s;
1555     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1556 
1557     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1558     ASSERT_NE(input, nullptr);
1559 
1560     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
1561     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
1562     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
1563     std::string cameraSettings = camInput->GetCameraSettings();
1564     camInput->SetCameraSettings(cameraSettings);
1565     camInput->GetCameraDevice()->Open();
1566 
1567     sptr<CaptureOutput> photo = CreatePhotoOutput();
1568     ASSERT_NE(photo, nullptr);
1569 
1570     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1571     ASSERT_NE(session, nullptr);
1572 
1573     int32_t ret = session->BeginConfig();
1574     EXPECT_EQ(ret, 0);
1575 
1576     ret = session->AddInput(input);
1577     EXPECT_EQ(ret, 0);
1578 
1579     ret = session->AddOutput(photo);
1580     EXPECT_EQ(ret, 0);
1581 
1582     ret = session->CommitConfig();
1583     EXPECT_EQ(ret, 0);
1584 
1585     EXPECT_CALL(*mockStreamOperator, Capture(_, _, true)).Times(0);
1586     ret = session->Start();
1587     EXPECT_EQ(ret, 0);
1588 
1589     EXPECT_CALL(*mockStreamOperator, CancelCapture(_)).Times(0);
1590 
1591     ret = session->Stop();
1592     EXPECT_EQ(ret, 0);
1593 
1594     session->Release();
1595     input->Release();
1596 }
1597 
1598 /*
1599  * Feature: Framework
1600  * Function: Test session with preview + photo
1601  * SubFunction: NA
1602  * FunctionPoints: NA
1603  * EnvConditions: NA
1604  * CaseDescription: Test session with preview + photo
1605  */
1606 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_031, TestSize.Level0)
1607 {
1608     InSequence s;
1609     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1610 
1611     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1612     ASSERT_NE(input, nullptr);
1613 
1614     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
1615     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
1616     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
1617     std::string cameraSettings = camInput->GetCameraSettings();
1618     camInput->SetCameraSettings(cameraSettings);
1619     camInput->GetCameraDevice()->Open();
1620 
1621     sptr<CaptureOutput> preview = CreatePreviewOutput();
1622     ASSERT_NE(preview, nullptr);
1623 
1624     sptr<CaptureOutput> photo = CreatePhotoOutput();
1625     ASSERT_NE(photo, nullptr);
1626 
1627     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1628     ASSERT_NE(session, nullptr);
1629 
1630     int32_t ret = session->BeginConfig();
1631     EXPECT_EQ(ret, 0);
1632 
1633     ret = session->AddInput(input);
1634     EXPECT_EQ(ret, 0);
1635 
1636     ret = session->AddOutput(preview);
1637     EXPECT_EQ(ret, 0);
1638 
1639     ret = session->AddOutput(photo);
1640     EXPECT_EQ(ret, 0);
1641 
1642     ret = session->CommitConfig();
1643     EXPECT_EQ(ret, 0);
1644 
1645     EXPECT_CALL(*mockStreamOperator, Capture(1, _, true));
1646     ret = session->Start();
1647     EXPECT_EQ(ret, 0);
1648 
1649     EXPECT_CALL(*mockStreamOperator, Capture(2, _, false));
1650     ret = ((sptr<PhotoOutput> &)photo)->Capture();
1651     EXPECT_EQ(ret, 0);
1652 
1653     EXPECT_CALL(*mockStreamOperator, CancelCapture(1));
1654     ret = ((sptr<PreviewOutput> &)preview)->Stop();
1655     EXPECT_EQ(ret, 0);
1656 
1657     session->Release();
1658     input->Release();
1659 }
1660 
1661 /*
1662  * Feature: Framework
1663  * Function: Test session with preview + photo with camera configuration
1664  * SubFunction: NA
1665  * FunctionPoints: NA
1666  * EnvConditions: NA
1667  * CaseDescription: Test session with preview + photo with camera configuration
1668  */
1669 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_032, TestSize.Level0)
1670 {
1671     InSequence s;
1672     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1673 
1674     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1675     ASSERT_NE(input, nullptr);
1676 
1677     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
1678     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
1679     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
1680     std::string cameraSettings = camInput->GetCameraSettings();
1681     camInput->SetCameraSettings(cameraSettings);
1682     camInput->GetCameraDevice()->Open();
1683 
1684     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1685     ASSERT_NE(session, nullptr);
1686 
1687     std::vector<float> zoomRatioRange = session->GetZoomRatioRange();
1688     if (!zoomRatioRange.empty()) {
1689         session->LockForControl();
1690         session->SetZoomRatio(zoomRatioRange[0]);
1691         session->UnlockForControl();
1692     }
1693 
1694     sptr<CaptureOutput> preview = CreatePreviewOutput();
1695     ASSERT_NE(preview, nullptr);
1696 
1697     sptr<CaptureOutput> photo = CreatePhotoOutput();
1698     ASSERT_NE(photo, nullptr);
1699 
1700     int32_t ret = session->BeginConfig();
1701     EXPECT_EQ(ret, 0);
1702 
1703     ret = session->AddInput(input);
1704     EXPECT_EQ(ret, 0);
1705 
1706     ret = session->AddOutput(preview);
1707     EXPECT_EQ(ret, 0);
1708 
1709     ret = session->AddOutput(photo);
1710     EXPECT_EQ(ret, 0);
1711 
1712     if (!zoomRatioRange.empty()) {
1713         EXPECT_CALL(*mockCameraDevice, UpdateSettings(_));
1714     }
1715     ret = session->CommitConfig();
1716     EXPECT_EQ(ret, 0);
1717 
1718     session->Release();
1719     input->Release();
1720 }
1721 
1722 /*
1723  * Feature: Framework
1724  * Function: Test session with preview + video
1725  * SubFunction: NA
1726  * FunctionPoints: NA
1727  * EnvConditions: NA
1728  * CaseDescription: Test session with preview + video
1729  */
1730 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_033, TestSize.Level0)
1731 {
1732     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1733 
1734     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1735     ASSERT_NE(input, nullptr);
1736 
1737     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
1738     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
1739     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
1740     std::string cameraSettings = camInput->GetCameraSettings();
1741     camInput->SetCameraSettings(cameraSettings);
1742     camInput->GetCameraDevice()->Open();
1743 
1744     sptr<CaptureOutput> preview = CreatePreviewOutput();
1745     ASSERT_NE(preview, nullptr);
1746 
1747     sptr<CaptureOutput> video = CreateVideoOutput();
1748     ASSERT_NE(video, nullptr);
1749 
1750     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1751     ASSERT_NE(session, nullptr);
1752 
1753     int32_t ret = session->BeginConfig();
1754     EXPECT_EQ(ret, 0);
1755 
1756     ret = session->AddInput(input);
1757     EXPECT_EQ(ret, 0);
1758 
1759     ret = session->AddOutput(preview);
1760     EXPECT_EQ(ret, 0);
1761 
1762     ret = session->AddOutput(video);
1763     EXPECT_EQ(ret, 0);
1764 
1765     SessionCommit(session);
1766 
1767     EXPECT_CALL(*mockStreamOperator, Capture(4, _, true));
1768     ret = ((sptr<VideoOutput> &)video)->Start();
1769     EXPECT_EQ(ret, 0);
1770 
1771     EXPECT_CALL(*mockStreamOperator, CancelCapture(4));
1772     ret = ((sptr<VideoOutput> &)video)->Stop();
1773     EXPECT_EQ(ret, 0);
1774 
1775     EXPECT_CALL(*mockStreamOperator, CancelCapture(3));
1776     ret = ((sptr<PreviewOutput> &)preview)->Stop();
1777     EXPECT_EQ(ret, 0);
1778 
1779     ((sptr<VideoOutput> &)video)->Release();
1780     session->Release();
1781     input->Release();
1782 }
1783 
1784 /*
1785  * Feature: Framework
1786  * Function: Test capture session remove output with null
1787  * SubFunction: NA
1788  * FunctionPoints: NA
1789  * EnvConditions: NA
1790  * CaseDescription: Test capture session remove output with null
1791  */
1792 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_034, TestSize.Level0)
1793 {
1794     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1795     ASSERT_NE(session, nullptr);
1796 
1797     int32_t ret = session->BeginConfig();
1798     EXPECT_EQ(ret, 0);
1799 
1800     sptr<CaptureOutput> output = nullptr;
1801     ret = session->RemoveOutput(output);
1802     EXPECT_NE(ret, 0);
1803     session->Release();
1804 }
1805 
1806 /*
1807  * Feature: Framework
1808  * Function: Test capture session remove output
1809  * SubFunction: NA
1810  * FunctionPoints: NA
1811  * EnvConditions: NA
1812  * CaseDescription: Test capture session remove output
1813  */
1814 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_035, TestSize.Level0)
1815 {
1816     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1817     ASSERT_NE(session, nullptr);
1818 
1819     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1820 
1821     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1822     ASSERT_NE(input, nullptr);
1823 
1824     sptr<CaptureOutput> video = CreateVideoOutput();
1825     ASSERT_NE(video, nullptr);
1826 
1827     int32_t ret = session->BeginConfig();
1828     EXPECT_EQ(ret, 0);
1829 
1830     ret = session->AddInput(input);
1831     EXPECT_EQ(ret, 0);
1832 
1833     ret = session->AddOutput(video);
1834     EXPECT_EQ(ret, 0);
1835 
1836     ret = session->RemoveOutput(video);
1837     EXPECT_EQ(ret, 0);
1838     input->Release();
1839     video->Release();
1840     session->Release();
1841 }
1842 
1843 /*
1844  * Feature: Framework
1845  * Function: Test capture session remove input with null
1846  * SubFunction: NA
1847  * FunctionPoints: NA
1848  * EnvConditions: NA
1849  * CaseDescription: Test capture session remove input with null
1850  */
1851 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_036, TestSize.Level0)
1852 {
1853     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1854     ASSERT_NE(session, nullptr);
1855 
1856     int32_t ret = session->BeginConfig();
1857     EXPECT_EQ(ret, 0);
1858 
1859     sptr<CaptureInput> input = nullptr;
1860     ret = session->RemoveInput(input);
1861     EXPECT_NE(ret, 0);
1862     session->Release();
1863 }
1864 
1865 /*
1866  * Feature: Framework
1867  * Function: Test capture session remove input
1868  * SubFunction: NA
1869  * FunctionPoints: NA
1870  * EnvConditions: NA
1871  * CaseDescription: Test capture session remove input
1872  */
1873 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_037, TestSize.Level0)
1874 {
1875     InSequence s;
1876     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1877 
1878     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1879     ASSERT_NE(input, nullptr);
1880 
1881     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
1882     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
1883     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
1884     std::string cameraSettings = camInput->GetCameraSettings();
1885     camInput->SetCameraSettings(cameraSettings);
1886     camInput->GetCameraDevice()->Open();
1887 
1888     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1889     ASSERT_NE(session, nullptr);
1890 
1891     int32_t ret = session->BeginConfig();
1892     EXPECT_EQ(ret, 0);
1893 
1894     ret = session->AddInput(input);
1895     EXPECT_EQ(ret, 0);
1896 
1897     ret = session->RemoveInput(input);
1898     EXPECT_EQ(ret, 0);
1899     input->Release();
1900     session->Release();
1901 }
1902 
1903 /*
1904  * Feature: Framework
1905  * Function: Test photo capture with photo settings
1906  * SubFunction: NA
1907  * FunctionPoints: NA
1908  * EnvConditions: NA
1909  * CaseDescription: Test photo capture with photo settings
1910  */
1911 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_038, TestSize.Level0)
1912 {
1913     InSequence s;
1914     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1915 
1916     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1917     ASSERT_NE(input, nullptr);
1918 
1919     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
1920     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
1921     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
1922     std::string cameraSettings = camInput->GetCameraSettings();
1923     camInput->SetCameraSettings(cameraSettings);
1924     camInput->GetCameraDevice()->Open();
1925 
1926     sptr<CaptureOutput> photo = CreatePhotoOutput();
1927     ASSERT_NE(photo, nullptr);
1928 
1929     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1930     ASSERT_NE(session, nullptr);
1931 
1932     int32_t ret = session->BeginConfig();
1933     EXPECT_EQ(ret, 0);
1934 
1935     ret = session->AddInput(input);
1936     EXPECT_EQ(ret, 0);
1937 
1938     ret = session->AddOutput(photo);
1939     EXPECT_EQ(ret, 0);
1940 
1941     ret = session->CommitConfig();
1942     EXPECT_EQ(ret, 0);
1943 
1944     std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
1945     photoSetting->SetRotation(PhotoCaptureSetting::Rotation_90);
1946     photoSetting->SetQuality(PhotoCaptureSetting::QUALITY_LEVEL_MEDIUM);
1947     EXPECT_EQ(photoSetting->GetRotation(), PhotoCaptureSetting::Rotation_90);
1948     EXPECT_EQ(photoSetting->GetQuality(), PhotoCaptureSetting::QUALITY_LEVEL_MEDIUM);
1949 
1950     EXPECT_CALL(*mockStreamOperator, Capture(_,
1951         matchCaptureSetting(photoSetting->GetCaptureMetadataSetting()), false));
1952     ret = ((sptr<PhotoOutput> &)photo)->Capture(photoSetting);
1953     EXPECT_EQ(ret, 0);
1954 
1955     session->Release();
1956     input->Release();
1957 }
1958 
1959 /*
1960  * Feature: Framework
1961  * Function: Test GetFocalLength
1962  * SubFunction: NA
1963  * FunctionPoints: NA
1964  * EnvConditions: NA
1965  * CaseDescription: Test GetFocalLength
1966  */
1967 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_040, TestSize.Level0)
1968 {
1969     InSequence s;
1970     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
1971 
1972     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
1973     ASSERT_NE(input, nullptr);
1974 
1975     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
1976     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
1977     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
1978     std::string cameraSettings = camInput->GetCameraSettings();
1979     camInput->SetCameraSettings(cameraSettings);
1980     camInput->GetCameraDevice()->Open();
1981 
1982     sptr<CaptureOutput> photo = CreatePhotoOutput();
1983     ASSERT_NE(photo, nullptr);
1984 
1985     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
1986     ASSERT_NE(session, nullptr);
1987 
1988     int32_t ret = session->BeginConfig();
1989     EXPECT_EQ(ret, 0);
1990 
1991     ret = session->AddInput(input);
1992     EXPECT_EQ(ret, 0);
1993 
1994     ret = session->AddOutput(photo);
1995     EXPECT_EQ(ret, 0);
1996 
1997     ret = session->CommitConfig();
1998     EXPECT_EQ(ret, 0);
1999 
2000     double focalLength = session->GetFocalLength();
2001     ASSERT_EQ(focalLength, 1.5);
2002 
2003     session->RemoveInput(input);
2004     session->RemoveOutput(photo);
2005     photo->Release();
2006     input->Release();
2007     session->Release();
2008 }
2009 
2010 
2011 /*
2012  * Feature: Framework
2013  * Function: Test SetMeteringPoint & GetMeteringPoint
2014  * SubFunction: NA
2015  * FunctionPoints: NA
2016  * EnvConditions: NA
2017  * CaseDescription: Test SetMeteringPoint & GetMeteringPoint
2018  */
2019 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_041, TestSize.Level0)
2020 {
2021     InSequence s;
2022     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2023 
2024     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2025     ASSERT_NE(input, nullptr);
2026 
2027     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2028     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2029     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2030     std::string cameraSettings = camInput->GetCameraSettings();
2031     camInput->SetCameraSettings(cameraSettings);
2032     camInput->GetCameraDevice()->Open();
2033 
2034     sptr<CaptureOutput> photo = CreatePhotoOutput();
2035     ASSERT_NE(photo, nullptr);
2036 
2037     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
2038     ASSERT_NE(session, nullptr);
2039 
2040     int32_t ret = session->BeginConfig();
2041     EXPECT_EQ(ret, 0);
2042 
2043     ret = session->AddInput(input);
2044     EXPECT_EQ(ret, 0);
2045 
2046     ret = session->AddOutput(photo);
2047     EXPECT_EQ(ret, 0);
2048 
2049     ret = session->CommitConfig();
2050     EXPECT_EQ(ret, 0);
2051 
2052     Point exposurePoint = {1.0, 2.0};
2053     session->LockForControl();
2054     session->SetMeteringPoint(exposurePoint);
2055     session->UnlockForControl();
2056     ASSERT_EQ((session->GetMeteringPoint().x), exposurePoint.x > 1 ? 1 : exposurePoint.x);
2057     ASSERT_EQ((session->GetMeteringPoint().y), exposurePoint.y > 1 ? 1 : exposurePoint.y);
2058 
2059     session->RemoveInput(input);
2060     session->RemoveOutput(photo);
2061     photo->Release();
2062     input->Release();
2063     session->Release();
2064 }
2065 
2066 
2067 /*
2068  * Feature: Framework
2069  * Function: Test SetFocusPoint & GetFousPoint
2070  * SubFunction: NA
2071  * FunctionPoints: NA
2072  * EnvConditions: NA
2073  * CaseDescription: Test SetFocusPoint & GetFousPoint
2074  */
2075 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_042, TestSize.Level0)
2076 {
2077     InSequence s;
2078     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2079 
2080     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2081     ASSERT_NE(input, nullptr);
2082 
2083     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2084     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2085     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2086     std::string cameraSettings = camInput->GetCameraSettings();
2087     camInput->SetCameraSettings(cameraSettings);
2088     camInput->GetCameraDevice()->Open();
2089 
2090     sptr<CaptureOutput> photo = CreatePhotoOutput();
2091     ASSERT_NE(photo, nullptr);
2092 
2093     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
2094     ASSERT_NE(session, nullptr);
2095 
2096     int32_t ret = session->BeginConfig();
2097     EXPECT_EQ(ret, 0);
2098 
2099     ret = session->AddInput(input);
2100     EXPECT_EQ(ret, 0);
2101 
2102     ret = session->AddOutput(photo);
2103     EXPECT_EQ(ret, 0);
2104 
2105     ret = session->CommitConfig();
2106     EXPECT_EQ(ret, 0);
2107 
2108     Point FocusPoint = {1.0, 2.0};
2109     session->LockForControl();
2110     session->SetFocusPoint(FocusPoint);
2111     session->UnlockForControl();
2112     ASSERT_EQ((session->GetFocusPoint().x), FocusPoint.x > 1 ? 1 : FocusPoint.x);
2113     ASSERT_EQ((session->GetFocusPoint().y), FocusPoint.y > 1 ? 1 : FocusPoint.y);
2114 
2115     session->RemoveInput(input);
2116     session->RemoveOutput(photo);
2117     photo->Release();
2118     input->Release();
2119     session->Release();
2120 }
2121 
2122 /*
2123  * Feature: Framework
2124  * Function: Test GetExposureValue and SetExposureBias
2125  * SubFunction: NA
2126  * FunctionPoints: NA
2127  * EnvConditions: NA
2128  * CaseDescription: Test GetExposureValue and SetExposureBias with value less then the range
2129  */
2130 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_043, TestSize.Level0)
2131 {
2132     InSequence s;
2133     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2134 
2135     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2136     ASSERT_NE(input, nullptr);
2137 
2138     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2139     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2140     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2141     std::string cameraSettings = camInput->GetCameraSettings();
2142     camInput->SetCameraSettings(cameraSettings);
2143     camInput->GetCameraDevice()->Open();
2144 
2145     sptr<CaptureOutput> photo = CreatePhotoOutput();
2146     ASSERT_NE(photo, nullptr);
2147 
2148     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
2149     ASSERT_NE(session, nullptr);
2150 
2151     int32_t ret = session->BeginConfig();
2152     EXPECT_EQ(ret, 0);
2153 
2154     ret = session->AddInput(input);
2155     EXPECT_EQ(ret, 0);
2156 
2157     ret = session->AddOutput(photo);
2158     EXPECT_EQ(ret, 0);
2159 
2160     ret = session->CommitConfig();
2161     EXPECT_EQ(ret, 0);
2162 
2163     std::vector<float> exposurebiasRange = session->GetExposureBiasRange();
2164     if (!exposurebiasRange.empty()) {
2165         session->LockForControl();
2166         session->SetExposureBias(exposurebiasRange[0]-1.0);
2167         session->UnlockForControl();
2168         ASSERT_EQ(session->GetExposureValue(), exposurebiasRange[0]);
2169     }
2170 
2171     session->RemoveInput(input);
2172     session->RemoveOutput(photo);
2173     photo->Release();
2174     input->Release();
2175     session->Release();
2176 }
2177 
2178 /*
2179  * Feature: Framework
2180  * Function: Test GetExposureValue and SetExposureBias
2181  * SubFunction: NA
2182  * FunctionPoints: NA
2183  * EnvConditions: NA
2184  * CaseDescription: Test GetExposureValue and SetExposureBias with value between the range
2185  */
2186 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_044, TestSize.Level0)
2187 {
2188     InSequence s;
2189     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2190 
2191     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2192     ASSERT_NE(input, nullptr);
2193 
2194     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2195     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2196     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2197     std::string cameraSettings = camInput->GetCameraSettings();
2198     camInput->SetCameraSettings(cameraSettings);
2199     camInput->GetCameraDevice()->Open();
2200 
2201     sptr<CaptureOutput> photo = CreatePhotoOutput();
2202     ASSERT_NE(photo, nullptr);
2203 
2204     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
2205     ASSERT_NE(session, nullptr);
2206 
2207     int32_t ret = session->BeginConfig();
2208     EXPECT_EQ(ret, 0);
2209 
2210     ret = session->AddInput(input);
2211     EXPECT_EQ(ret, 0);
2212 
2213     ret = session->AddOutput(photo);
2214     EXPECT_EQ(ret, 0);
2215 
2216     ret = session->CommitConfig();
2217     EXPECT_EQ(ret, 0);
2218 
2219     std::vector<float> exposurebiasRange = session->GetExposureBiasRange();
2220     if (!exposurebiasRange.empty()) {
2221         session->LockForControl();
2222         session->SetExposureBias(exposurebiasRange[0]+1.0);
2223         session->UnlockForControl();
2224         EXPECT_TRUE((session->GetExposureValue()>=exposurebiasRange[0] &&
2225                 session->GetExposureValue()<=exposurebiasRange[1]));
2226     }
2227     session->RemoveInput(input);
2228     session->RemoveOutput(photo);
2229     photo->Release();
2230     input->Release();
2231     session->Release();
2232 }
2233 
2234 
2235 /*
2236  * Feature: Framework
2237  * Function: Test GetExposureValue and SetExposureBias
2238  * SubFunction: NA
2239  * FunctionPoints: NA
2240  * EnvConditions: NA
2241  * CaseDescription: Test GetExposureValue and SetExposureBias with value more then the range
2242  */
2243 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_045, TestSize.Level0)
2244 {
2245     InSequence s;
2246     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2247 
2248     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2249     ASSERT_NE(input, nullptr);
2250 
2251     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2252     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2253     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2254     std::string cameraSettings = camInput->GetCameraSettings();
2255     camInput->SetCameraSettings(cameraSettings);
2256     camInput->GetCameraDevice()->Open();
2257 
2258     sptr<CaptureOutput> photo = CreatePhotoOutput();
2259     ASSERT_NE(photo, nullptr);
2260     SceneMode mode = CAPTURE;
2261     sptr<CaptureSession> session = cameraManager->CreateCaptureSession(mode);
2262     ASSERT_NE(session, nullptr);
2263 
2264     int32_t ret = session->BeginConfig();
2265     EXPECT_EQ(ret, 0);
2266 
2267     ret = session->AddInput(input);
2268     EXPECT_EQ(ret, 0);
2269 
2270     ret = session->AddOutput(photo);
2271     EXPECT_EQ(ret, 0);
2272 
2273     ret = session->CommitConfig();
2274     EXPECT_EQ(ret, 0);
2275 
2276     std::vector<float> exposurebiasRange = session->GetExposureBiasRange();
2277     if (!exposurebiasRange.empty()) {
2278         session->LockForControl();
2279         session->SetExposureBias(exposurebiasRange[1]+1.0);
2280         session->UnlockForControl();
2281     }
2282     ASSERT_EQ(session->GetExposureValue(), exposurebiasRange[1]);
2283     session->Release();
2284 }
2285 
2286 /*
2287  * Feature: Framework
2288  * Function: Test cameraManager and portrait session with beauty/filter/portrait effects
2289  * SubFunction: NA
2290  * FunctionPoints: NA
2291  * EnvConditions: NA
2292  * CaseDescription: Test cameraManager and portrait session with beauty/filter/portrait effects
2293  */
2294 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_046, TestSize.Level0)
2295 {
2296     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2297 
2298     SceneMode mode = PORTRAIT;
2299     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
2300     ASSERT_TRUE(modes.size() != 0);
2301 
2302     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
2303     ASSERT_NE(ability, nullptr);
2304 
2305     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2306     ASSERT_NE(input, nullptr);
2307 
2308     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2309     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2310     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2311     std::string cameraSettings = camInput->GetCameraSettings();
2312     camInput->SetCameraSettings(cameraSettings);
2313     camInput->GetCameraDevice()->Open();
2314     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
2315     ASSERT_NE(captureSession, nullptr);
2316     sptr<PortraitSession> portraitSession = nullptr;
2317     portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
2318     ASSERT_NE(portraitSession, nullptr);
2319 
2320     sptr<CaptureOutput> preview = CreatePreviewOutput();
2321     ASSERT_NE(preview, nullptr);
2322 
2323     sptr<CaptureOutput> photo = CreatePhotoOutput();
2324     ASSERT_NE(photo, nullptr);
2325 
2326     int32_t ret = portraitSession->BeginConfig();
2327     EXPECT_EQ(ret, 0);
2328 
2329     ret = portraitSession->AddInput(input);
2330     EXPECT_EQ(ret, 0);
2331 
2332     ret = portraitSession->AddOutput(preview);
2333     EXPECT_EQ(ret, 0);
2334 
2335     ret = portraitSession->AddOutput(photo);
2336     EXPECT_EQ(ret, 0);
2337 
2338     ret = portraitSession->CommitConfig();
2339     EXPECT_EQ(ret, 0);
2340 
2341     PortraitSessionControlParams(portraitSession);
2342 
2343     portraitSession->Release();
2344 }
2345 
2346 /*
2347  * Feature: Framework
2348  * Function: Test cameraManager with GetSupportedModes
2349  * SubFunction: NA
2350  * FunctionPoints: NA
2351  * EnvConditions: NA
2352  * CaseDescription: Test GetSupportedModes to get modes
2353  */
2354 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_047, TestSize.Level0)
2355 {
2356     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2357 
2358     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
2359     ASSERT_TRUE(modes.size() != 0);
2360 }
2361 
2362 /*
2363  * Feature: Framework
2364  * Function: Test cameraManager with GetSupportedOutputCapability
2365  * SubFunction: NA
2366  * FunctionPoints: NA
2367  * EnvConditions: NA
2368  * CaseDescription: Test GetSupportedOutputCapability to get capability
2369  */
2370 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_048, TestSize.Level0)
2371 {
2372     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2373 
2374     SceneMode mode = PORTRAIT;
2375     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
2376     ASSERT_TRUE(modes.size() != 0);
2377 
2378     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
2379     ASSERT_NE(ability, nullptr);
2380 }
2381 
2382 /*
2383  * Feature: Framework
2384  * Function: Test cameraManager with CreateCaptureSession and CommitConfig
2385  * SubFunction: NA
2386  * FunctionPoints: NA
2387  * EnvConditions: NA
2388  * CaseDescription: Test cameraManager to CreateCaptureSession
2389  */
2390 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_049, TestSize.Level0)
2391 {
2392     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2393 
2394     SceneMode mode = PORTRAIT;
2395     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
2396     ASSERT_TRUE(modes.size() != 0);
2397 
2398     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
2399     ASSERT_NE(ability, nullptr);
2400 
2401     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2402     ASSERT_NE(input, nullptr);
2403 
2404     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2405     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2406     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2407     std::string cameraSettings = camInput->GetCameraSettings();
2408     camInput->SetCameraSettings(cameraSettings);
2409     camInput->GetCameraDevice()->Open();
2410 
2411     sptr<CaptureOutput> preview = CreatePreviewOutput();
2412     ASSERT_NE(preview, nullptr);
2413 
2414     sptr<CaptureOutput> photo = CreatePhotoOutput();
2415     ASSERT_NE(photo, nullptr);
2416 
2417 
2418     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
2419     ASSERT_NE(captureSession, nullptr);
2420     sptr<PortraitSession> portraitSession = nullptr;
2421     portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
2422     ASSERT_NE(portraitSession, nullptr);
2423 
2424 
2425     int32_t ret = portraitSession->BeginConfig();
2426     EXPECT_EQ(ret, 0);
2427 
2428     ret = portraitSession->AddInput(input);
2429     EXPECT_EQ(ret, 0);
2430 
2431     ret = portraitSession->AddOutput(preview);
2432     EXPECT_EQ(ret, 0);
2433 
2434     ret = portraitSession->AddOutput(photo);
2435     EXPECT_EQ(ret, 0);
2436 
2437     ret = portraitSession->CommitConfig();
2438     EXPECT_EQ(ret, 0);
2439     portraitSession->Release();
2440 }
2441 
2442 /*
2443  * Feature: Framework
2444  * Function: Test GetSupportedPortraitEffects / GetPortraitEffect / SetPortraitEffect
2445  * SubFunction: NA
2446  * FunctionPoints: NA
2447  * EnvConditions: NA
2448  * CaseDescription: Test GetPortraitEffect and SetPortraitEffect with value
2449  */
2450 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_050, TestSize.Level0)
2451 {
2452     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2453     SceneMode mode = PORTRAIT;
2454     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
2455     ASSERT_TRUE(modes.size() != 0);
2456 
2457     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
2458     ASSERT_NE(ability, nullptr);
2459 
2460     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2461     ASSERT_NE(input, nullptr);
2462 
2463     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2464     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2465     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2466     std::string cameraSettings = camInput->GetCameraSettings();
2467     camInput->SetCameraSettings(cameraSettings);
2468     camInput->GetCameraDevice()->Open();
2469 
2470 
2471     sptr<CaptureOutput> preview = CreatePreviewOutput();
2472     ASSERT_NE(preview, nullptr);
2473 
2474     sptr<CaptureOutput> photo = CreatePhotoOutput();
2475     ASSERT_NE(photo, nullptr);
2476 
2477     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
2478     ASSERT_NE(captureSession, nullptr);
2479     sptr<PortraitSession> portraitSession = nullptr;
2480     portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
2481     ASSERT_NE(portraitSession, nullptr);
2482 
2483     int32_t ret = portraitSession->BeginConfig();
2484     EXPECT_EQ(ret, 0);
2485 
2486     ret = portraitSession->AddInput(input);
2487     EXPECT_EQ(ret, 0);
2488 
2489     ret = portraitSession->AddOutput(preview);
2490     EXPECT_EQ(ret, 0);
2491 
2492     ret = portraitSession->AddOutput(photo);
2493     EXPECT_EQ(ret, 0);
2494 
2495     ret = portraitSession->CommitConfig();
2496     EXPECT_EQ(ret, 0);
2497 
2498     PortraitSessionEffectParams(portraitSession);
2499 
2500     portraitSession->Release();
2501 }
2502 
2503 /*
2504  * Feature: Framework
2505  * Function: Test GetSupportedFilters / GetFilter / SetFilter
2506  * SubFunction: NA
2507  * FunctionPoints: NA
2508  * EnvConditions: NA
2509  * CaseDescription: Test GetFilter and SetFilter with value
2510  */
2511 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_051, TestSize.Level0)
2512 {
2513     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2514     SceneMode mode = PORTRAIT;
2515     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
2516     ASSERT_TRUE(modes.size() != 0);
2517 
2518     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
2519     ASSERT_NE(ability, nullptr);
2520 
2521     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2522     ASSERT_NE(input, nullptr);
2523 
2524     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2525     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2526     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2527     std::string cameraSettings = camInput->GetCameraSettings();
2528     camInput->SetCameraSettings(cameraSettings);
2529     camInput->GetCameraDevice()->Open();
2530 
2531     sptr<CaptureOutput> preview = CreatePreviewOutput();
2532     ASSERT_NE(preview, nullptr);
2533 
2534     sptr<CaptureOutput> photo = CreatePhotoOutput();
2535     ASSERT_NE(photo, nullptr);
2536 
2537     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
2538     ASSERT_NE(captureSession, nullptr);
2539     sptr<PortraitSession> portraitSession = nullptr;
2540     portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
2541     ASSERT_NE(portraitSession, nullptr);
2542 
2543     int32_t ret = portraitSession->BeginConfig();
2544     EXPECT_EQ(ret, 0);
2545 
2546     ret = portraitSession->AddInput(input);
2547     EXPECT_EQ(ret, 0);
2548 
2549     ret = portraitSession->AddOutput(preview);
2550     EXPECT_EQ(ret, 0);
2551 
2552     ret = portraitSession->AddOutput(photo);
2553     EXPECT_EQ(ret, 0);
2554 
2555     ret = portraitSession->CommitConfig();
2556     EXPECT_EQ(ret, 0);
2557 
2558     PortraitSessionFilterParams(portraitSession);
2559 
2560     portraitSession->Release();
2561 }
2562 
2563 /*
2564  * Feature: Framework
2565  * Function: Test GetSupportedBeautyTypes / GetSupportedBeautyRange / GetBeauty / SetBeauty
2566  * SubFunction: NA
2567  * FunctionPoints: NA
2568  * EnvConditions: NA
2569  * CaseDescription: Test GetBeauty and SetBeauty with value
2570  */
2571 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_052, TestSize.Level0)
2572 {
2573     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2574     SceneMode mode = PORTRAIT;
2575     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
2576     ASSERT_TRUE(modes.size() != 0);
2577 
2578     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
2579     ASSERT_NE(ability, nullptr);
2580 
2581     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2582     ASSERT_NE(input, nullptr);
2583 
2584     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2585     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2586     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2587     std::string cameraSettings = camInput->GetCameraSettings();
2588     camInput->SetCameraSettings(cameraSettings);
2589     camInput->GetCameraDevice()->Open();
2590 
2591 
2592     sptr<CaptureOutput> preview = CreatePreviewOutput();
2593     ASSERT_NE(preview, nullptr);
2594 
2595     sptr<CaptureOutput> photo = CreatePhotoOutput();
2596     ASSERT_NE(photo, nullptr);
2597 
2598     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
2599     ASSERT_NE(captureSession, nullptr);
2600     sptr<PortraitSession> portraitSession = nullptr;
2601     portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
2602     ASSERT_NE(portraitSession, nullptr);
2603 
2604     int32_t ret = portraitSession->BeginConfig();
2605     EXPECT_EQ(ret, 0);
2606 
2607     ret = portraitSession->AddInput(input);
2608     EXPECT_EQ(ret, 0);
2609 
2610     ret = portraitSession->AddOutput(preview);
2611     EXPECT_EQ(ret, 0);
2612 
2613     ret = portraitSession->AddOutput(photo);
2614     EXPECT_EQ(ret, 0);
2615 
2616     ret = portraitSession->CommitConfig();
2617     EXPECT_EQ(ret, 0);
2618 
2619     PortraitSessionBeautyParams(portraitSession);
2620 
2621     portraitSession->Release();
2622 }
2623 
2624 /*
2625  * Feature: Framework
2626  * Function: Test anomalous branch
2627  * SubFunction: NA
2628  * FunctionPoints: NA
2629  * EnvConditions: NA
2630  * CaseDescription: Test HCameraDevice with anomalous branch
2631  */
2632 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_001, TestSize.Level0)
2633 {
2634     InSequence s;
2635     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2636 
2637     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2638     ASSERT_NE(input, nullptr);
2639 
2640     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2641     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2642     std::string cameraSettings = camInput->GetCameraSettings();
2643     camInput->SetCameraSettings(cameraSettings);
2644 
2645     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
2646     std::string cameraId = cameras[0]->GetID();
2647     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
2648     sptr<HCameraDevice> camDevice = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken);
2649     ASSERT_NE(camDevice, nullptr);
2650 
2651     int32_t ret = camDevice->HCameraDevice::Open();
2652     EXPECT_EQ(ret, 0);
2653 
2654     std::vector<int32_t> result;
2655     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
2656 
2657     ret = camDevice->HCameraDevice::EnableResult(result);
2658     EXPECT_EQ(ret, 0);
2659 
2660     ret = camDevice->HCameraDevice::DisableResult(result);
2661     EXPECT_EQ(ret, 0);
2662 
2663     sptr<OHOS::HDI::Camera::V1_0::IStreamOperator> streamOperator = camDevice->HCameraDevice::GetStreamOperator();
2664     EXPECT_TRUE(streamOperator != nullptr);
2665 
2666     ret = camDevice->HCameraDevice::OnError(REQUEST_TIMEOUT, 0);
2667     EXPECT_EQ(ret, 0);
2668 
2669     ret = camDevice->HCameraDevice::Close();
2670     EXPECT_EQ(ret, 0);
2671 }
2672 
2673 /*
2674  * Feature: Framework
2675  * Function: Test anomalous branch
2676  * SubFunction: NA
2677  * FunctionPoints: NA
2678  * EnvConditions: NA
2679  * CaseDescription: Test dump with args empty
2680  */
2681 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_002, TestSize.Level0)
2682 {
2683     InSequence s;
2684     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2685 
2686     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2687     ASSERT_NE(input, nullptr);
2688 
2689     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2690     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2691     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2692     std::string cameraSettings = camInput->GetCameraSettings();
2693     camInput->SetCameraSettings(cameraSettings);
2694     camInput->GetCameraDevice()->Open();
2695 
2696     sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
2697     sptr<HCameraService> camService = (sptr<HCameraService> &)mockHCameraService;
2698     ASSERT_NE(camService, nullptr);
2699 
2700     std::vector<std::string> cameraIds = {};
2701     std::vector<std::shared_ptr<OHOS::Camera::CameraMetadata>> cameraAbilityList = {};
2702     int32_t ret = camService->GetCameras(cameraIds, cameraAbilityList);
2703 
2704     int fd = 0;
2705     std::vector<std::u16string> args = {};
2706     ret = camService->Dump(fd, args);
2707     EXPECT_EQ(ret, 0);
2708 
2709     input->Close();
2710 }
2711 
2712 /*
2713  * Feature: Framework
2714  * Function: Test anomalous branch
2715  * SubFunction: NA
2716  * FunctionPoints: NA
2717  * EnvConditions: NA
2718  * CaseDescription: Test HCaptureSession with anomalous branch
2719  */
2720 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_003, TestSize.Level0)
2721 {
2722     InSequence s;
2723     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2724 
2725     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2726     ASSERT_NE(input, nullptr);
2727 
2728     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2729     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2730     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2731     std::string cameraSettings = camInput->GetCameraSettings();
2732     camInput->SetCameraSettings(cameraSettings);
2733     camInput->GetCameraDevice()->Open();
2734 
2735     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
2736     sptr<StreamOperatorCallback> streamOperatorCb = nullptr;
2737     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
2738     SceneMode mode = PORTRAIT;
2739     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
2740     ASSERT_NE(camSession, nullptr);
2741 
2742     sptr<ICameraDeviceService> cameraDevice = camInput->GetCameraDevice();
2743     int32_t ret = camSession->AddInput(cameraDevice);
2744     EXPECT_EQ(ret, 10);
2745 
2746     ret = camSession->RemoveInput(cameraDevice);
2747     EXPECT_EQ(ret, 10);
2748 
2749     ret = camSession->BeginConfig();
2750     EXPECT_EQ(ret, 0);
2751 
2752     ret = camSession->BeginConfig();
2753     EXPECT_EQ(ret, 10);
2754 
2755     cameraDevice = nullptr;
2756     ret = camSession->AddInput(cameraDevice);
2757     EXPECT_EQ(ret, 2);
2758 
2759     ret = camSession->RemoveInput(cameraDevice);
2760     EXPECT_EQ(ret, 2);
2761 
2762     sptr<IStreamCommon> stream_2 = nullptr;
2763     ret = camSession->AddOutput(StreamType::CAPTURE, stream_2);
2764     EXPECT_EQ(ret, 2);
2765 
2766     ret = camSession->RemoveOutput(StreamType::CAPTURE, stream_2);
2767     EXPECT_EQ(ret, 2);
2768 
2769     input->Close();
2770     camSession->Release();
2771 }
2772 
2773 /*
2774  * Feature: Framework
2775  * Function: Test anomalous branch
2776  * SubFunction: NA
2777  * FunctionPoints: NA
2778  * EnvConditions: NA
2779  * CaseDescription: Test HCameraService with anomalous branch
2780  */
2781 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_004, TestSize.Level0)
2782 {
2783     InSequence s;
2784     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2785 
2786     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2787     ASSERT_NE(input, nullptr);
2788 
2789     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2790     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2791     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2792     std::string cameraSettings = camInput->GetCameraSettings();
2793     camInput->SetCameraSettings(cameraSettings);
2794     camInput->GetCameraDevice()->Open();
2795 
2796     sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
2797     sptr<HCameraService> cameraService = (sptr<HCameraService> &)mockHCameraService;
2798     ASSERT_NE(cameraService, nullptr);
2799 
2800     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
2801     sptr<IBufferProducer> Producer = Surface->GetProducer();
2802 
2803     int32_t height = 0;
2804     int32_t width = PHOTO_DEFAULT_WIDTH;
2805     sptr<IStreamRepeat> output = nullptr;
2806     int32_t intResult = cameraService->CreateDeferredPreviewOutput(0, width, height, output);
2807     EXPECT_EQ(intResult, 2);
2808 
2809     width = 0;
2810     intResult = cameraService->CreateDeferredPreviewOutput(0, width, height, output);
2811     EXPECT_EQ(intResult, 2);
2812 
2813     Producer = nullptr;
2814     intResult = cameraService->CreatePreviewOutput(Producer, 0, width, height, output);
2815     EXPECT_EQ(intResult, 2);
2816 
2817     Producer = Surface->GetProducer();
2818     intResult = cameraService->CreatePreviewOutput(Producer, 0, width, height, output);
2819     EXPECT_EQ(intResult, 2);
2820 
2821     width = PREVIEW_DEFAULT_WIDTH;
2822     intResult = cameraService->CreatePreviewOutput(Producer, 0, width, height, output);
2823     EXPECT_EQ(intResult, 2);
2824 
2825     intResult = cameraService->CreateVideoOutput(Producer, 0, width, height, output);
2826     EXPECT_EQ(intResult, 2);
2827 
2828     width = 0;
2829     intResult = cameraService->CreateVideoOutput(Producer, 0, width, height, output);
2830     EXPECT_EQ(intResult, 2);
2831 
2832     Producer = nullptr;
2833     intResult = cameraService->CreateVideoOutput(Producer, 0, width, height, output);
2834     EXPECT_EQ(intResult, 2);
2835 
2836     input->Close();
2837 }
2838 
2839 /*
2840  * Feature: Framework
2841  * Function: Test anomalous branch
2842  * SubFunction: NA
2843  * FunctionPoints: NA
2844  * EnvConditions: NA
2845  * CaseDescription: Test HCameraService with anomalous branch
2846  */
2847 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_005, TestSize.Level0)
2848 {
2849     InSequence s;
2850     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2851 
2852     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2853     ASSERT_NE(input, nullptr);
2854 
2855     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2856     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2857     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2858     std::string cameraSettings = camInput->GetCameraSettings();
2859     camInput->SetCameraSettings(cameraSettings);
2860     camInput->GetCameraDevice()->Open();
2861 
2862     sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
2863     sptr<HCameraService> cameraService = (sptr<HCameraService> &)mockHCameraService;
2864     ASSERT_NE(cameraService, nullptr);
2865 
2866     int32_t width = 0;
2867     int32_t height = 0;
2868 
2869     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
2870     sptr<IBufferProducer> Producer = Surface->GetProducer();
2871 
2872     sptr<IStreamCapture> output_1 = nullptr;
2873     int32_t intResult = cameraService->CreatePhotoOutput(Producer, 0, width, height, output_1);
2874     EXPECT_EQ(intResult, 2);
2875 
2876     width = PHOTO_DEFAULT_WIDTH;
2877     intResult = cameraService->CreatePhotoOutput(Producer, 0, width, height, output_1);
2878     EXPECT_EQ(intResult, 2);
2879 
2880     Producer = nullptr;
2881     intResult = cameraService->CreatePhotoOutput(Producer, 0, width, height, output_1);
2882     EXPECT_EQ(intResult, 2);
2883 
2884     sptr<IStreamMetadata> output_2 = nullptr;
2885     intResult = cameraService->CreateMetadataOutput(Producer, 0, {1}, output_2);
2886     EXPECT_EQ(intResult, 2);
2887 
2888     input->Close();
2889 }
2890 
2891 /*
2892  * Feature: Framework
2893  * Function: Test anomalous branch
2894  * SubFunction: NA
2895  * FunctionPoints: NA
2896  * EnvConditions: NA
2897  * CaseDescription: Test HCameraService with anomalous branch
2898  */
2899 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_006, TestSize.Level0)
2900 {
2901     InSequence s;
2902     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2903 
2904     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2905     ASSERT_NE(input, nullptr);
2906 
2907     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2908     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2909     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2910     std::string cameraSettings = camInput->GetCameraSettings();
2911     camInput->SetCameraSettings(cameraSettings);
2912     camInput->GetCameraDevice()->Open();
2913 
2914     sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
2915     sptr<HCameraService> cameraService = (sptr<HCameraService> &)mockHCameraService;
2916     ASSERT_NE(cameraService, nullptr);
2917 
2918     sptr<ICameraServiceCallback> callback = nullptr;
2919     int32_t intResult = cameraService->SetCameraCallback(callback);
2920     EXPECT_EQ(intResult, 2);
2921 
2922     callback = new(std::nothrow) CameraStatusServiceCallback(cameraManager);
2923     ASSERT_NE(callback, nullptr);
2924     intResult = cameraService->SetCameraCallback(callback);
2925     EXPECT_EQ(intResult, 0);
2926 
2927     sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
2928     ASSERT_NE(deviceObj, nullptr);
2929 
2930     sptr<ICameraMuteServiceCallback> callback_2 = nullptr;
2931     intResult = cameraService->SetMuteCallback(callback_2);
2932     EXPECT_EQ(intResult, 2);
2933 
2934     callback_2 = new(std::nothrow) CameraMuteServiceCallback(cameraManager);
2935     ASSERT_NE(callback_2, nullptr);
2936     intResult = cameraService->SetMuteCallback(callback_2);
2937     EXPECT_EQ(intResult, 0);
2938 
2939     std::string cameraId = camInput->GetCameraId();
2940     int activeTime = 15;
2941     EffectParam effectParam = {0, 0, 0};
2942     intResult = cameraService->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::PERSISTENT_DEFAULT_PARAM_OHOS,
2943         activeTime, effectParam);
2944     EXPECT_EQ(intResult, 2);
2945 
2946     cameraId = "";
2947     intResult = cameraService->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::TRANSIENT_ACTIVE_PARAM_OHOS,
2948         activeTime, effectParam);
2949     EXPECT_EQ(intResult, 2);
2950 
2951     intResult = cameraService->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::PERSISTENT_DEFAULT_PARAM_OHOS,
2952         activeTime, effectParam);
2953     EXPECT_EQ(intResult, 2);
2954 
2955     cameraId = "";
2956     intResult = cameraService->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::PERSISTENT_DEFAULT_PARAM_OHOS,
2957         activeTime, effectParam);
2958     EXPECT_EQ(intResult, 2);
2959 
2960     input->Close();
2961 }
2962 
2963 /*
2964  * Feature: Framework
2965  * Function: Test anomalous branch
2966  * SubFunction: NA
2967  * FunctionPoints: NA
2968  * EnvConditions: NA
2969  * CaseDescription: Test different status with OnReceive
2970  */
2971 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_007, TestSize.Level0)
2972 {
2973     InSequence s;
2974     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
2975 
2976     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
2977     ASSERT_NE(input, nullptr);
2978 
2979     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
2980     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
2981     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
2982     std::string cameraSettings = camInput->GetCameraSettings();
2983     camInput->SetCameraSettings(cameraSettings);
2984     camInput->GetCameraDevice()->Open();
2985 
2986     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
2987     cameraHostManager->Init();
2988     HDI::ServiceManager::V1_0::ServiceStatus status;
2989 
2990     status.serviceName = "1";
2991     cameraHostManager->GetRegisterServStatListener()->OnReceive(status);
2992 
2993     status.deviceClass = DEVICE_CLASS_CAMERA;
2994     status.serviceName = "distributed_camera_service";
2995     status.status = HDI::ServiceManager::V1_0::SERVIE_STATUS_START;
2996     cameraHostManager->GetRegisterServStatListener()->OnReceive(status);
2997     cameraHostManager->GetRegisterServStatListener()->OnReceive(status);
2998 
2999     status.status = HDI::ServiceManager::V1_0::SERVIE_STATUS_STOP;
3000     cameraHostManager->GetRegisterServStatListener()->OnReceive(status);
3001 
3002     status.status = 4;
3003     cameraHostManager->GetRegisterServStatListener()->OnReceive(status);
3004     cameraHostManager->DeInit();
3005     input->Close();
3006 }
3007 
3008 /*
3009  * Feature: Framework
3010  * Function: Test anomalous branch
3011  * SubFunction: NA
3012  * FunctionPoints: NA
3013  * EnvConditions: NA
3014  * CaseDescription: Test CaptureSession with no static capability.
3015  */
3016 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_008, TestSize.Level0)
3017 {
3018     g_mockFlagWithoutAbt = true;
3019     sptr<CameraManager> camManager = new FakeCameraManager(new FakeHCameraService(mockCameraHostManager));
3020 
3021     std::vector<sptr<CameraDevice>> cameras = camManager->GetSupportedCameras();
3022     sptr<CaptureInput> input = camManager->CreateCameraInput(cameras[0]);
3023     ASSERT_NE(input, nullptr);
3024 
3025     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3026     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3027     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3028     std::string cameraSettings = camInput->GetCameraSettings();
3029     camInput->SetCameraSettings(cameraSettings);
3030     camInput->GetCameraDevice()->Open();
3031 
3032     sptr<CaptureOutput> photo = CreatePhotoOutput();
3033     ASSERT_NE(photo, nullptr);
3034 
3035     sptr<CaptureSession> session = camManager->CreateCaptureSession();
3036     ASSERT_NE(session, nullptr);
3037 
3038     EXPECT_EQ(session->BeginConfig(), 0);
3039 
3040     EXPECT_EQ(session->AddInput(input), 0);
3041     EXPECT_EQ(session->AddOutput(photo), 0);
3042 
3043     EXPECT_EQ(session->CommitConfig(), 0);
3044 
3045     sptr<CameraOutputCapability> cameraOutputCapability = camManager->GetSupportedOutputCapability(cameras[0]);
3046 
3047     std::vector<VideoStabilizationMode> videoStabilizationMode = session->GetSupportedStabilizationMode();
3048     EXPECT_EQ(videoStabilizationMode.empty(), true);
3049 
3050     int32_t intResult = session->GetSupportedStabilizationMode(videoStabilizationMode);
3051     EXPECT_EQ(intResult, 0);
3052 
3053     std::vector<ExposureMode> getSupportedExpModes = session->GetSupportedExposureModes();
3054     EXPECT_EQ(getSupportedExpModes.empty(), true);
3055 
3056     EXPECT_EQ(session->GetSupportedExposureModes(getSupportedExpModes), 0);
3057 
3058     EXPECT_EQ(session->GetExposureMode(), -1);
3059     EXPECT_EQ((session->GetMeteringPoint().x), 0);
3060     EXPECT_EQ((session->GetMeteringPoint().y), 0);
3061 
3062     float exposureValue = session->GetExposureValue();
3063     EXPECT_EQ(exposureValue, 0);
3064     int32_t exposureValueGet = session->GetExposureValue(exposureValue);
3065     EXPECT_EQ(exposureValueGet, 0);
3066 
3067     input->Close();
3068     session->Release();
3069 }
3070 
3071 /*
3072  * Feature: Framework
3073  * Function: Test anomalous branch
3074  * SubFunction: NA
3075  * FunctionPoints: NA
3076  * EnvConditions: NA
3077  * CaseDescription: Test CaptureSession with no static capability.
3078  */
3079 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_009, TestSize.Level0)
3080 {
3081     g_mockFlagWithoutAbt = true;
3082     sptr<CameraManager> camManager = new FakeCameraManager(new FakeHCameraService(mockCameraHostManager));
3083 
3084     std::vector<sptr<CameraDevice>> cameras = camManager->GetSupportedCameras();
3085 
3086     sptr<CaptureInput> input = camManager->CreateCameraInput(cameras[0]);
3087     ASSERT_NE(input, nullptr);
3088 
3089     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3090     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3091     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3092     std::string cameraSettings = camInput->GetCameraSettings();
3093     camInput->SetCameraSettings(cameraSettings);
3094     camInput->GetCameraDevice()->Open();
3095 
3096     sptr<CaptureOutput> photo = CreatePhotoOutput();
3097     ASSERT_NE(photo, nullptr);
3098 
3099     sptr<CaptureSession> session = camManager->CreateCaptureSession();
3100     ASSERT_NE(session, nullptr);
3101 
3102     EXPECT_EQ(session->BeginConfig(), 0);
3103 
3104     EXPECT_EQ(session->AddInput(input), 0);
3105     EXPECT_EQ(session->AddOutput(photo), 0);
3106 
3107     EXPECT_EQ(session->CommitConfig(), 0);
3108 
3109     sptr<CameraOutputCapability> cameraOutputCapability = camManager->GetSupportedOutputCapability(cameras[0]);
3110 
3111     std::vector<FocusMode> supportedFocusModes = session->GetSupportedFocusModes();
3112     EXPECT_EQ(supportedFocusModes.empty(), true);
3113     EXPECT_EQ(session->GetSupportedFocusModes(supportedFocusModes), 0);
3114 
3115     EXPECT_EQ(session->GetFocusMode(), 0);
3116 
3117     float focalLength = session->GetFocalLength();
3118     EXPECT_EQ(focalLength, 0);
3119     EXPECT_EQ(session->GetFocalLength(focalLength), 0);
3120 
3121     std::vector<FlashMode> supportedFlashModes = session->GetSupportedFlashModes();
3122     EXPECT_EQ(supportedFlashModes.empty(), true);
3123     EXPECT_EQ(session->GetSupportedFlashModes(supportedFlashModes), 0);
3124     EXPECT_EQ(session->GetFlashMode(), 0);
3125     EXPECT_EQ(session->GetZoomRatio(), 0);
3126 
3127     bool isSupported;
3128     EXPECT_EQ(session->IsVideoStabilizationModeSupported(MIDDLE, isSupported), 0);
3129     if (isSupported) {
3130         EXPECT_EQ(session->SetVideoStabilizationMode(MIDDLE), 0);
3131     } else {
3132         EXPECT_EQ(session->SetVideoStabilizationMode(MIDDLE), 7400102);
3133     }
3134     EXPECT_EQ(session->IsFlashModeSupported(FLASH_MODE_AUTO), false);
3135     EXPECT_EQ(session->IsFlashModeSupported(FLASH_MODE_AUTO, isSupported), 0);
3136 
3137     sptr<PhotoOutput> photoOutput = (sptr<PhotoOutput> &)photo;
3138     EXPECT_EQ(photoOutput->IsMirrorSupported(), false);
3139 
3140     input->Close();
3141     session->Release();
3142 }
3143 
3144 /*
3145  * Feature: Framework
3146  * Function: Test anomalous branch
3147  * SubFunction: NA
3148  * FunctionPoints: NA
3149  * EnvConditions: NA
3150  * CaseDescription: Test dump with no static capability.
3151  */
3152 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_010, TestSize.Level0)
3153 {
3154     g_mockFlagWithoutAbt = true;
3155     sptr<CameraManager> camManager = new FakeCameraManager(new FakeHCameraService(mockCameraHostManager));
3156     std::vector<sptr<CameraDevice>> cameras = camManager->GetSupportedCameras();
3157 
3158     sptr<CaptureInput> input = camManager->CreateCameraInput(cameras[0]);
3159     ASSERT_NE(input, nullptr);
3160 
3161     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3162     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3163     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3164     std::string cameraSettings = camInput->GetCameraSettings();
3165     camInput->SetCameraSettings(cameraSettings);
3166     camInput->GetCameraDevice()->Open();
3167 
3168     sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
3169     sptr<HCameraService> camService = (sptr<HCameraService> &)mockHCameraService;
3170     ASSERT_NE(camService, nullptr);
3171 
3172     camService->OnStart();
3173 
3174     std::vector<std::string> cameraIds = {};
3175     std::vector<std::shared_ptr<OHOS::Camera::CameraMetadata>> cameraAbilityList = {};
3176     int32_t ret = camService->GetCameras(cameraIds, cameraAbilityList);
3177 
3178     int fd = 0;
3179     std::vector<std::u16string> args = {};
3180     ret = camService->Dump(fd, args);
3181     EXPECT_EQ(ret, 0);
3182 
3183     std::u16string cameraServiceInfo = u"";
3184     args.push_back(cameraServiceInfo);
3185     ret = camService->Dump(fd, args);
3186     EXPECT_EQ(ret, 0);
3187 
3188     input->Close();
3189 }
3190 
3191 /*
3192  * Feature: Framework
3193  * Function: Test anomalous branch
3194  * SubFunction: NA
3195  * FunctionPoints: NA
3196  * EnvConditions: NA
3197  * CaseDescription: Test dump with no static capability.
3198  */
3199 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_dump_001, TestSize.Level0)
3200 {
3201     g_mockFlagWithoutAbt = true;
3202     sptr<CameraManager> camManager = new FakeCameraManager(new FakeHCameraService(mockCameraHostManager));
3203     std::vector<sptr<CameraDevice>> cameras = camManager->GetSupportedCameras();
3204 
3205     sptr<CaptureInput> input = camManager->CreateCameraInput(cameras[0]);
3206     ASSERT_NE(input, nullptr);
3207 
3208     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3209     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3210     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3211     std::string cameraSettings = camInput->GetCameraSettings();
3212     camInput->SetCameraSettings(cameraSettings);
3213     camInput->GetCameraDevice()->Open();
3214 
3215     sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
3216     sptr<HCameraService> camService = (sptr<HCameraService> &)mockHCameraService;
3217     ASSERT_NE(camService, nullptr);
3218 
3219     camService->OnStart();
3220 
3221     std::vector<std::string> cameraIds = {};
3222     std::vector<std::shared_ptr<OHOS::Camera::CameraMetadata>> cameraAbilityList = {};
3223     int32_t ret = camService->GetCameras(cameraIds, cameraAbilityList);
3224 
3225     int fd = 0;
3226     std::vector<std::u16string> args = {};
3227     ret = camService->Dump(fd, args);
3228     EXPECT_EQ(ret, 0);
3229 
3230     std::u16string cameraServiceInfo = u"";
3231     args.push_back(cameraServiceInfo);
3232     cameraServiceInfo = u"debugOn";
3233     args.push_back(cameraServiceInfo);
3234     ret = camService->Dump(fd, args);
3235     EXPECT_EQ(ret, 0);
3236 
3237     input->Close();
3238 }
3239 
3240 /*
3241  * Feature: coverage
3242  * Function: Test anomalous branch
3243  * SubFunction: NA
3244  * FunctionPoints: NA
3245  * EnvConditions: NA
3246  * CaseDescription: Test HStreamCapture SetRotation with no static capability.
3247  */
3248 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_011, TestSize.Level0)
3249 {
3250     g_mockFlagWithoutAbt = true;
3251     sptr<CameraManager> camManager = new FakeCameraManager(new FakeHCameraService(mockCameraHostManager));
3252     std::vector<sptr<CameraDevice>> cameras = camManager->GetSupportedCameras();
3253 
3254     sptr<CaptureInput> input = camManager->CreateCameraInput(cameras[0]);
3255     ASSERT_NE(input, nullptr);
3256 
3257     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3258     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3259     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3260     std::string cameraSettings = camInput->GetCameraSettings();
3261     camInput->SetCameraSettings(cameraSettings);
3262     camInput->GetCameraDevice()->Open();
3263 
3264     sptr<CaptureOutput> photo = CreatePhotoOutput();
3265     ASSERT_NE(photo, nullptr);
3266 
3267     sptr<CaptureSession> session = camManager->CreateCaptureSession();
3268     ASSERT_NE(session, nullptr);
3269 
3270     int32_t ret = session->BeginConfig();
3271     EXPECT_EQ(ret, 0);
3272 
3273     ret = session->AddInput(input);
3274     EXPECT_EQ(ret, 0);
3275 
3276     ret = session->AddOutput(photo);
3277     EXPECT_EQ(ret, 0);
3278 
3279     ret = session->CommitConfig();
3280     EXPECT_EQ(ret, 0);
3281 
3282     std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
3283     photoSetting->SetRotation(PhotoCaptureSetting::Rotation_90);
3284     photoSetting->SetQuality(PhotoCaptureSetting::QUALITY_LEVEL_MEDIUM);
3285     EXPECT_EQ(photoSetting->GetRotation(), PhotoCaptureSetting::Rotation_90);
3286     EXPECT_EQ(photoSetting->GetQuality(), PhotoCaptureSetting::QUALITY_LEVEL_MEDIUM);
3287 
3288     EXPECT_CALL(*mockStreamOperator, Capture(_,
3289         matchCaptureSetting(photoSetting->GetCaptureMetadataSetting()), false));
3290     ret = ((sptr<PhotoOutput> &)photo)->Capture(photoSetting);
3291     EXPECT_EQ(ret, 0);
3292 
3293     input->Close();
3294     session->Release();
3295     input->Release();
3296 }
3297 
3298 /*
3299  * Feature: coverage
3300  * Function: Test anomalous branch
3301  * SubFunction: NA
3302  * FunctionPoints: NA
3303  * EnvConditions: NA
3304  * CaseDescription: Test HStreamRepeat with no static capability.
3305  */
3306 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_012, TestSize.Level0)
3307 {
3308     g_mockFlagWithoutAbt = true;
3309     sptr<CameraManager> camManager = new FakeCameraManager(new FakeHCameraService(mockCameraHostManager));
3310     int32_t format = CAMERA_FORMAT_YUV_420_SP;
3311     int32_t width = PHOTO_DEFAULT_WIDTH;
3312     int32_t height = PHOTO_DEFAULT_HEIGHT;
3313 
3314     std::vector<sptr<CameraDevice>> cameras = camManager->GetSupportedCameras();
3315 
3316     sptr<CaptureInput> input = camManager->CreateCameraInput(cameras[0]);
3317     ASSERT_NE(input, nullptr);
3318 
3319     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3320     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3321     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3322     std::string cameraSettings = camInput->GetCameraSettings();
3323     camInput->SetCameraSettings(cameraSettings);
3324     camInput->GetCameraDevice()->Open();
3325 
3326     sptr<CaptureOutput> photo = CreatePhotoOutput();
3327     ASSERT_NE(photo, nullptr);
3328 
3329     sptr<CaptureOutput> metadatOutput = camManager->CreateMetadataOutput();
3330     ASSERT_NE(metadatOutput, nullptr);
3331 
3332     sptr<CaptureSession> session = camManager->CreateCaptureSession();
3333     ASSERT_NE(session, nullptr);
3334 
3335     EXPECT_EQ(session->BeginConfig(), 0);
3336 
3337     EXPECT_EQ(session->AddInput(input), 0);
3338     EXPECT_EQ(session->AddOutput(photo), 0);
3339     EXPECT_EQ(session->AddOutput(metadatOutput), 0);
3340 
3341     EXPECT_EQ(session->CommitConfig(), 0);
3342 
3343     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
3344     sptr<IBufferProducer> producer1 = Surface->GetProducer();
3345     auto streamRepeat = new (std::nothrow) HStreamRepeat(producer1, format, width, height, RepeatStreamType::PREVIEW);
3346     ASSERT_NE(streamRepeat, nullptr);
3347 
3348     std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
3349     photoSetting->SetRotation(PhotoCaptureSetting::Rotation_90);
3350     photoSetting->SetQuality(PhotoCaptureSetting::QUALITY_LEVEL_MEDIUM);
3351     EXPECT_EQ(photoSetting->GetRotation(), PhotoCaptureSetting::Rotation_90);
3352     EXPECT_EQ(photoSetting->GetQuality(), PhotoCaptureSetting::QUALITY_LEVEL_MEDIUM);
3353     if (streamRepeat->LinkInput(mockStreamOperator, photoSetting->GetCaptureMetadataSetting()) != 0) {
3354         EXPECT_EQ(streamRepeat->Stop(), CAMERA_INVALID_STATE);
3355         EXPECT_EQ(streamRepeat->Start(), CAMERA_INVALID_STATE);
3356 
3357         EXPECT_EQ(streamRepeat->AddDeferredSurface(producer1), CAMERA_INVALID_STATE);
3358 
3359         EXPECT_EQ(streamRepeat->Start(), CAMERA_INVALID_STATE);
3360         EXPECT_EQ(streamRepeat->Stop(), CAMERA_INVALID_STATE);
3361     }
3362     input->Close();
3363     session->Release();
3364 }
3365 
3366 /*
3367  * Feature: coverage
3368  * Function: Test anomalous branch
3369  * SubFunction: NA
3370  * FunctionPoints: NA
3371  * EnvConditions: NA
3372  * CaseDescription: Test HCaptureSession with anomalous branch.
3373  */
3374 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_014, TestSize.Level0)
3375 {
3376     InSequence s;
3377     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3378     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3379     ASSERT_NE(input, nullptr);
3380 
3381     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3382     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3383     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3384     std::string cameraSettings = camInput->GetCameraSettings();
3385     camInput->SetCameraSettings(cameraSettings);
3386     camInput->GetCameraDevice()->Open();
3387 
3388     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
3389     SceneMode mode = PORTRAIT;
3390     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
3391     ASSERT_NE(camSession, nullptr);
3392 
3393     camSession->BeginConfig();
3394     camSession->Start();
3395 
3396     sptr<ICameraDeviceService> cameraDevice = camInput->GetCameraDevice();
3397     EXPECT_EQ(camSession->AddInput(cameraDevice), 0);
3398 
3399     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
3400     sptr<IBufferProducer> producer = Surface->GetProducer();
3401 
3402     auto streamRepeat = new (std::nothrow) HStreamRepeat(producer, 4, 1280, 960, RepeatStreamType::PREVIEW);
3403     ASSERT_NE(streamRepeat, nullptr);
3404     auto streamRepeat1 = new (std::nothrow) HStreamRepeat(producer, 3, 640, 480, RepeatStreamType::PREVIEW);
3405     ASSERT_NE(streamRepeat1, nullptr);
3406     sptr<HStreamCapture> streamCapture = new (std::nothrow) HStreamCapture(producer, 4, 1280, 960);
3407     ASSERT_NE(streamCapture, nullptr);
3408 
3409     EXPECT_EQ(camSession->AddOutput(StreamType::REPEAT, streamRepeat), 0);
3410     EXPECT_EQ(camSession->AddOutput(StreamType::REPEAT, streamRepeat1), 0);
3411     EXPECT_EQ(camSession->AddOutput(StreamType::CAPTURE, streamCapture), 0);
3412 
3413     CaptureErrorInfo it1;
3414     it1.streamId_ = 2;
3415     it1.error_ = BUFFER_LOST;
3416     CaptureErrorInfo it2;
3417     it2.streamId_ = 1;
3418     it2.error_ =  BUFFER_LOST;
3419     std::vector<CaptureErrorInfo> info = {};
3420     info.push_back(it1);
3421     info.push_back(it2);
3422     camSession->OnCaptureError(0, info);
3423 
3424     std::vector<int32_t> streamIds = {1, 2};
3425     camSession->OnFrameShutter(0, streamIds, 0);
3426     camSession->OnFrameShutterEnd(0, streamIds, 0);
3427     camSession->OnCaptureReady(0, streamIds, 0);
3428     input->Close();
3429     camSession->Release();
3430 }
3431 
3432 /*
3433  * Feature: coverage
3434  * Function: Test anomalous branch
3435  * SubFunction: NA
3436  * FunctionPoints: NA
3437  * EnvConditions: NA
3438  * CaseDescription: Test HCaptureSession with anomalous branch.
3439  */
3440 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_015, TestSize.Level0)
3441 {
3442     InSequence s;
3443     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3444     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3445     ASSERT_NE(input, nullptr);
3446 
3447     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3448     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3449     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3450     std::string cameraSettings = camInput->GetCameraSettings();
3451     camInput->SetCameraSettings(cameraSettings);
3452     camInput->GetCameraDevice()->Open();
3453 
3454     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
3455     SceneMode mode = PORTRAIT;
3456     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
3457     ASSERT_NE(camSession, nullptr);
3458 
3459     camSession->BeginConfig();
3460     camSession->Start();
3461 
3462     sptr<ICameraDeviceService> cameraDevice = camInput->GetCameraDevice();
3463     EXPECT_EQ(camSession->AddInput(cameraDevice), 0);
3464 
3465     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
3466     sptr<IBufferProducer> producer = Surface->GetProducer();
3467     sptr<HStreamCapture> streamCapture = new (std::nothrow) HStreamCapture(producer, 4, 1280, 960);
3468     sptr<HStreamCapture> streamCapture1 = new (std::nothrow) HStreamCapture(producer, 3, 640, 480);
3469     sptr<HStreamRepeat> streamRepeat =
3470         new (std::nothrow) HStreamRepeat(producer, 4, 1280, 960, RepeatStreamType::PREVIEW);
3471     ASSERT_NE(streamRepeat, nullptr);
3472 
3473     EXPECT_EQ(camSession->AddOutput(StreamType::CAPTURE, streamCapture), 0);
3474     EXPECT_EQ(camSession->AddOutput(StreamType::CAPTURE, streamCapture1), 0);
3475     EXPECT_EQ(camSession->AddOutput(StreamType::REPEAT, streamRepeat), 0);
3476 
3477     CaptureErrorInfo it1;
3478     it1.streamId_ = 2;
3479     it1.error_ = BUFFER_LOST;
3480     CaptureErrorInfo it2;
3481     it2.streamId_ = 1;
3482     it2.error_ =  BUFFER_LOST;
3483     std::vector<CaptureErrorInfo> info = {};
3484     info.push_back(it1);
3485     info.push_back(it2);
3486     camSession->OnCaptureError(0, info);
3487 
3488     std::vector<int32_t> streamIds = {1, 2};
3489     camSession->OnFrameShutter(0, streamIds, 0);
3490     camSession->OnFrameShutterEnd(0, streamIds, 0);
3491     camSession->OnCaptureReady(0, streamIds, 0);
3492 
3493     input->Close();
3494     camSession->Release();
3495 }
3496 
3497 /*
3498  * Feature: coverage
3499  * Function: Test anomalous branch
3500  * SubFunction: NA
3501  * FunctionPoints: NA
3502  * EnvConditions: NA
3503  * CaseDescription: Test HCaptureSession with anomalous branch.
3504  */
3505 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_016, TestSize.Level0)
3506 {
3507     InSequence s;
3508     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3509 
3510     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3511     ASSERT_NE(input, nullptr);
3512 
3513     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3514     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3515     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3516     std::string cameraSettings = camInput->GetCameraSettings();
3517     camInput->SetCameraSettings(cameraSettings);
3518     camInput->GetCameraDevice()->Open();
3519 
3520     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
3521     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, PORTRAIT);
3522 
3523     EXPECT_EQ(camSession->CommitConfig(), CAMERA_INVALID_STATE);
3524     camSession->BeginConfig();
3525     camSession->Start();
3526 
3527     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
3528     sptr<IBufferProducer> producer = Surface->GetProducer();
3529     sptr<HStreamCapture> streamCapture= new(std::nothrow) HStreamCapture(producer, 0, 0, 0);
3530     ASSERT_NE(streamCapture, nullptr);
3531 
3532     sptr<ICameraDeviceService> cameraDevice = camInput->GetCameraDevice();
3533     EXPECT_EQ(camSession->AddInput(cameraDevice), 0);
3534     EXPECT_EQ(camSession->AddOutput(StreamType::CAPTURE, streamCapture), 0);
3535 
3536     camSession->CommitConfig();
3537 
3538     CaptureErrorInfo it1;
3539     it1.streamId_ = 0;
3540     it1.error_ = BUFFER_LOST;
3541     CaptureErrorInfo it2;
3542     it2.streamId_ = 1;
3543     it2.error_ =  BUFFER_LOST;
3544     std::vector<CaptureErrorInfo> info = {};
3545     info.push_back(it1);
3546     info.push_back(it2);
3547     camSession->OnCaptureError(0, info);
3548 
3549     std::vector<int32_t> streamIds = {0, 1, 2};
3550     camSession->OnFrameShutter(0, streamIds, 0);
3551     camSession->OnFrameShutterEnd(0, streamIds, 0);
3552     camSession->OnCaptureReady(0, streamIds, 0);
3553     camSession->BeginConfig();
3554 
3555     input->Close();
3556     camSession->Release();
3557 }
3558 
3559 /*
3560  * Feature: coverage
3561  * Function: Test anomalous branch
3562  * SubFunction: NA
3563  * FunctionPoints: NA
3564  * EnvConditions: NA
3565  * CaseDescription: Test HCaptureSession with anomalous branch.
3566  */
3567 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_017, TestSize.Level0)
3568 {
3569     InSequence s;
3570     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3571 
3572     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3573     ASSERT_NE(input, nullptr);
3574 
3575     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3576     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3577     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3578     std::string cameraSettings = camInput->GetCameraSettings();
3579     camInput->SetCameraSettings(cameraSettings);
3580     camInput->GetCameraDevice()->Open();
3581 
3582     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
3583     sptr<StreamOperatorCallback> streamOperatorCb = nullptr;
3584     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
3585     SceneMode mode = PORTRAIT;
3586     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
3587     sptr<HCaptureSession> camSession1 = new (std::nothrow) HCaptureSession(12, mode);
3588     ASSERT_NE(camSession, nullptr);
3589     ASSERT_NE(camSession1, nullptr);
3590     EXPECT_EQ(camSession->Start(), CAMERA_INVALID_STATE);
3591     camSession1->Start();
3592 
3593     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
3594     sptr<IBufferProducer> producer = Surface->GetProducer();
3595     sptr<HStreamRepeat> streamRepeat = new (std::nothrow) HStreamRepeat(producer, 0, 0, 0, RepeatStreamType::PREVIEW);
3596     ASSERT_NE(streamRepeat, nullptr);
3597     sptr<HStreamMetadata> streamMetadata= new(std::nothrow) HStreamMetadata(producer, 0, {1});
3598     ASSERT_NE(streamMetadata, nullptr);
3599     EXPECT_EQ(camSession->AddOutput(StreamType::REPEAT, streamRepeat), CAMERA_INVALID_STATE);
3600     EXPECT_EQ(camSession->RemoveOutput(StreamType::REPEAT, streamRepeat), CAMERA_INVALID_STATE);
3601 
3602     sptr<ICameraDeviceService> cameraDevice = camInput->GetCameraDevice();
3603     camSession->BeginConfig();
3604     camSession->Start();
3605     camSession->AddOutput(StreamType::METADATA, streamMetadata);
3606     camSession->AddOutput(StreamType::METADATA, streamMetadata);
3607     camSession->RemoveOutput(StreamType::METADATA, streamMetadata);
3608     camSession->AddInput(cameraDevice);
3609 
3610     camSession->AddInput(cameraDevice);
3611 
3612     sptr<ICaptureSessionCallback> callback1 = nullptr;
3613     camSession->SetCallback(callback1);
3614 
3615     CameraInfoDumper infoDumper(0);
3616     camSession->DumpSessionInfo(infoDumper);
3617     camSession->DumpSessions(infoDumper);
3618 
3619     input->Close();
3620     camSession->Release();
3621 }
3622 
3623 /*
3624  * Feature: Framework
3625  * Function: Test anomalous branch
3626  * SubFunction: NA
3627  * FunctionPoints: NA
3628  * EnvConditions: NA
3629  * CaseDescription: Test GetExposureValue and SetExposureBias with anomalous branch.
3630  */
3631 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_018, TestSize.Level0)
3632 {
3633     InSequence s;
3634     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3635 
3636     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3637     ASSERT_NE(input, nullptr);
3638 
3639     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3640     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3641     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3642     std::string cameraSettings = camInput->GetCameraSettings();
3643     camInput->SetCameraSettings(cameraSettings);
3644     camInput->GetCameraDevice()->Open();
3645 
3646     sptr<CaptureOutput> photo = CreatePhotoOutput();
3647     ASSERT_NE(photo, nullptr);
3648 
3649     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
3650     ASSERT_NE(session, nullptr);
3651 
3652     int32_t ret = session->BeginConfig();
3653     EXPECT_EQ(ret, 0);
3654 
3655     ret = session->AddInput(input);
3656     EXPECT_EQ(ret, 0);
3657 
3658     ret = session->AddOutput(photo);
3659     EXPECT_EQ(ret, 0);
3660 
3661     ret = session->CommitConfig();
3662     EXPECT_EQ(ret, 0);
3663 
3664     session->LockForControl();
3665 
3666     Point exposurePoint = {1.0, 2.0};
3667     session->SetMeteringPoint(exposurePoint);
3668     session->SetMeteringPoint(exposurePoint);
3669 
3670     ExposureMode exposure = EXPOSURE_MODE_AUTO;
3671     bool exposureSupported = session->IsExposureModeSupported(exposure);
3672     if (exposureSupported) {
3673         session->SetExposureMode(exposure);
3674     }
3675 
3676     ret = session->GetExposureMode(exposure);
3677     EXPECT_EQ(ret, 0);
3678 
3679     ExposureMode exposureMode = session->GetExposureMode();
3680     exposureSupported = session->IsExposureModeSupported(exposureMode);
3681     if (exposureSupported) {
3682         int32_t setExposureMode = session->SetExposureMode(exposureMode);
3683         EXPECT_EQ(setExposureMode, 0);
3684     }
3685     session->UnlockForControl();
3686     input->Close();
3687     session->Release();
3688 }
3689 
3690 /*
3691  * Feature: Framework
3692  * Function: Test anomalous branch
3693  * SubFunction: NA
3694  * FunctionPoints: NA
3695  * EnvConditions: NA
3696  * CaseDescription: Test GetMeteringPoint and GetMeteringPoint with anomalous branch.
3697  */
3698 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_019, TestSize.Level0)
3699 {
3700     InSequence s;
3701     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3702 
3703     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3704     ASSERT_NE(input, nullptr);
3705 
3706     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3707     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3708     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3709     std::string cameraSettings = camInput->GetCameraSettings();
3710     camInput->SetCameraSettings(cameraSettings);
3711     camInput->GetCameraDevice()->Open();
3712 
3713     sptr<CaptureOutput> photo = CreatePhotoOutput();
3714     ASSERT_NE(photo, nullptr);
3715 
3716     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
3717     ASSERT_NE(session, nullptr);
3718 
3719     int32_t ret = session->BeginConfig();
3720     EXPECT_EQ(ret, 0);
3721 
3722     ret = session->AddInput(input);
3723     EXPECT_EQ(ret, 0);
3724 
3725     ret = session->AddOutput(photo);
3726     EXPECT_EQ(ret, 0);
3727 
3728     ret = session->CommitConfig();
3729     EXPECT_EQ(ret, 0);
3730 
3731     session->LockForControl();
3732 
3733     Point exposurePointGet = session->GetMeteringPoint();
3734     int32_t getMeteringPoint = session->GetMeteringPoint(exposurePointGet);
3735     EXPECT_EQ(getMeteringPoint, 0);
3736 
3737     float exposureValue = session->GetExposureValue();
3738     int32_t exposureValueGet = session->GetExposureValue(exposureValue);
3739     EXPECT_EQ(exposureValueGet, 0);
3740 
3741     int32_t setExposureBias = session->SetExposureBias(exposureValue);
3742     EXPECT_EQ(setExposureBias, 0);
3743 
3744     input->Close();
3745     session->Release();
3746 }
3747 
3748 /*
3749  * Feature: Framework
3750  * Function: Test anomalous branch
3751  * SubFunction: NA
3752  * FunctionPoints: NA
3753  * EnvConditions: NA
3754  * CaseDescription: Test CaptureSession with anomalous branch
3755  */
3756 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_020, TestSize.Level0)
3757 {
3758     InSequence s;
3759     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3760 
3761     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3762     ASSERT_NE(input, nullptr);
3763 
3764     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3765     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3766     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3767     std::string cameraSettings = camInput->GetCameraSettings();
3768     camInput->SetCameraSettings(cameraSettings);
3769     camInput->GetCameraDevice()->Open();
3770 
3771     sptr<CaptureOutput> photo = CreatePhotoOutput();
3772     ASSERT_NE(photo, nullptr);
3773 
3774     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
3775     ASSERT_NE(session, nullptr);
3776 
3777     int32_t ret = session->BeginConfig();
3778     EXPECT_EQ(ret, 0);
3779 
3780     ret = session->AddInput(input);
3781     EXPECT_EQ(ret, 0);
3782 
3783     ret = session->AddOutput(photo);
3784     EXPECT_EQ(ret, 0);
3785 
3786     ret = session->CommitConfig();
3787     EXPECT_EQ(ret, 0);
3788 
3789     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
3790     std::shared_ptr<ExposureCallback> exposureCallback = std::make_shared<CallbackListener>();
3791     session->SetExposureCallback(exposureCallback);
3792     session->ProcessAutoExposureUpdates(metadata);
3793 
3794     std::shared_ptr<FocusCallback> focusCallback = std::make_shared<CallbackListener>();
3795     session->SetFocusCallback(focusCallback);
3796     session->ProcessAutoFocusUpdates(metadata);
3797 
3798     std::vector<FocusMode> getSupportedFocusModes = session->GetSupportedFocusModes();
3799     EXPECT_EQ(getSupportedFocusModes.empty(), false);
3800     int32_t supportedFocusModesGet = session->GetSupportedFocusModes(getSupportedFocusModes);
3801     EXPECT_EQ(supportedFocusModesGet, 0);
3802 
3803     input->Close();
3804     session->Release();
3805 }
3806 
3807 /*
3808  * Feature: Framework
3809  * Function: Test anomalous branch
3810  * SubFunction: NA
3811  * FunctionPoints: NA
3812  * EnvConditions: NA
3813  * CaseDescription: Test CaptureSession with anomalous branch.
3814  */
3815 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_021, TestSize.Level0)
3816 {
3817     InSequence s;
3818     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3819 
3820     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3821     ASSERT_NE(input, nullptr);
3822 
3823     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3824     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3825     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3826     std::string cameraSettings = camInput->GetCameraSettings();
3827     camInput->SetCameraSettings(cameraSettings);
3828     camInput->GetCameraDevice()->Open();
3829 
3830     sptr<CaptureOutput> photo = CreatePhotoOutput();
3831     ASSERT_NE(photo, nullptr);
3832 
3833     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
3834     ASSERT_NE(session, nullptr);
3835 
3836     int32_t ret = session->BeginConfig();
3837     EXPECT_EQ(ret, 0);
3838 
3839     ret = session->AddInput(input);
3840     EXPECT_EQ(ret, 0);
3841 
3842     ret = session->AddOutput(photo);
3843     EXPECT_EQ(ret, 0);
3844 
3845     ret = session->CommitConfig();
3846     EXPECT_EQ(ret, 0);
3847 
3848     std::vector<FlashMode> getSupportedFlashModes = session->GetSupportedFlashModes();
3849     EXPECT_EQ(getSupportedFlashModes.empty(), false);
3850     int32_t getSupportedFlashMode = session->GetSupportedFlashModes(getSupportedFlashModes);
3851     EXPECT_EQ(getSupportedFlashMode, 0);
3852 
3853     FlashMode flashMode = session->GetFlashMode();
3854     int32_t flashModeGet = session->GetFlashMode(flashMode);
3855     EXPECT_EQ(flashModeGet, 0);
3856     int32_t setFlashMode = session->SetFlashMode(flashMode);
3857     EXPECT_EQ(setFlashMode, 0);
3858 
3859     input->Close();
3860     session->Release();
3861 }
3862 
3863 /*
3864  * Feature: Framework
3865  * Function: Test anomalous branch
3866  * SubFunction: NA
3867  * FunctionPoints: NA
3868  * EnvConditions: NA
3869  * CaseDescription: Test SetFocusPoint & GetFousPoint with anomalous branch.
3870  */
3871 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_022, TestSize.Level0)
3872 {
3873     InSequence s;
3874     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3875 
3876     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3877     ASSERT_NE(input, nullptr);
3878 
3879     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3880     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3881     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3882     std::string cameraSettings = camInput->GetCameraSettings();
3883     camInput->SetCameraSettings(cameraSettings);
3884     camInput->GetCameraDevice()->Open();
3885 
3886     sptr<CaptureOutput> photo = CreatePhotoOutput();
3887     ASSERT_NE(photo, nullptr);
3888 
3889     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
3890     ASSERT_NE(session, nullptr);
3891 
3892     int32_t ret = session->BeginConfig();
3893     EXPECT_EQ(ret, 0);
3894 
3895     ret = session->AddInput(input);
3896     EXPECT_EQ(ret, 0);
3897 
3898     ret = session->AddOutput(photo);
3899     EXPECT_EQ(ret, 0);
3900 
3901     ret = session->CommitConfig();
3902     EXPECT_EQ(ret, 0);
3903 
3904     Point FocusPoint = {1.0, 2.0};
3905     session->LockForControl();
3906     session->SetFocusPoint(FocusPoint);
3907     session->UnlockForControl();
3908 
3909     session->GetFocusPoint(FocusPoint);
3910 
3911     session->RemoveInput(input);
3912     session->RemoveOutput(photo);
3913     photo->Release();
3914     input->Close();
3915     input->Release();
3916     session->Release();
3917 }
3918 
3919 /*
3920  * Feature: Framework
3921  * Function: Test anomalous branch.
3922  * SubFunction: NA
3923  * FunctionPoints: NA
3924  * EnvConditions: NA
3925  * CaseDescription: Test CaptureSession with anomalous branch.
3926  */
3927 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_023, TestSize.Level0)
3928 {
3929     InSequence s;
3930     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
3931 
3932     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
3933     ASSERT_NE(input, nullptr);
3934 
3935     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
3936     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
3937     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
3938     std::string cameraSettings = camInput->GetCameraSettings();
3939     camInput->SetCameraSettings(cameraSettings);
3940     camInput->GetCameraDevice()->Open();
3941 
3942     sptr<CaptureOutput> photo = CreatePhotoOutput();
3943     ASSERT_NE(photo, nullptr);
3944 
3945     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
3946     ASSERT_NE(session, nullptr);
3947 
3948     EXPECT_EQ(session->BeginConfig(), 0);
3949 
3950     EXPECT_EQ(session->AddInput(input), 0);
3951     EXPECT_EQ(session->AddOutput(photo), 0);
3952 
3953     EXPECT_EQ(session->CommitConfig(), 0);
3954 
3955     EXPECT_EQ(session->GetFocusMode(), 2);
3956 
3957     session->LockForControl();
3958 
3959     FlashMode flash = FLASH_MODE_ALWAYS_OPEN;
3960     session->SetFlashMode(flash);
3961     session->SetFlashMode(flash);
3962 
3963     FocusMode focus = FOCUS_MODE_CONTINUOUS_AUTO;
3964     session->SetFocusMode(focus);
3965     session->SetFocusMode(focus);
3966 
3967     ExposureMode exposure = EXPOSURE_MODE_AUTO;
3968     session->SetExposureMode(exposure);
3969 
3970     float zoomRatioRange = session->GetZoomRatio();
3971     session->SetZoomRatio(zoomRatioRange);
3972     session->SetZoomRatio(zoomRatioRange);
3973 
3974     session->UnlockForControl();
3975 
3976     EXPECT_EQ(session->GetFocusMode(focus), 0);
3977 
3978     cameraManager->GetSupportedOutputCapability(cameras[0], 0);
3979 
3980     VideoStabilizationMode stabilizationMode = MIDDLE;
3981     session->GetActiveVideoStabilizationMode();
3982     session->GetActiveVideoStabilizationMode(stabilizationMode);
3983     session->SetVideoStabilizationMode(stabilizationMode);
3984 
3985     input->Close();
3986     input->Release();
3987     session->Release();
3988 }
3989 
3990 /*
3991  * Feature: Framework
3992  * Function: Test IsCameraNeedClose & CheckPermission
3993  * SubFunction: NA
3994  * FunctionPoints: NA
3995  * EnvConditions: NA
3996  * CaseDescription: Test IsCameraNeedClose & CheckPermission
3997  */
3998 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_024, TestSize.Level0)
3999 {
4000     CamRetCode rc1 = HDI::Camera::V1_0::CAMERA_BUSY;
4001     EXPECT_EQ(HdiToServiceError(rc1), CAMERA_DEVICE_BUSY);
4002     CamRetCode rc2 = HDI::Camera::V1_0::INVALID_ARGUMENT;
4003     EXPECT_EQ(HdiToServiceError(rc2), CAMERA_INVALID_ARG);
4004     CamRetCode rc3 = HDI::Camera::V1_0::CAMERA_CLOSED;
4005     EXPECT_EQ(HdiToServiceError(rc3), CAMERA_DEVICE_CLOSED);
4006     CreateMsg(NULL);
4007 
4008     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
4009     pid_t pid = IPCSkeleton::GetCallingPid();
4010     IsCameraNeedClose(callerToken, pid, pid);
4011     IsCameraNeedClose(123, pid, pid);
4012     CheckPermission("unittest", 0);
4013 }
4014 
4015 /*
4016  * Feature: Framework
4017  * Function: Test anomalous branch
4018  * SubFunction: NA
4019  * FunctionPoints: NA
4020  * EnvConditions: NA
4021  * CaseDescription: Test HCameraDevice with anomalous branch.
4022  */
4023 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_025, TestSize.Level0)
4024 {
4025     std::vector<int32_t> result;
4026     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
4027     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
4028 
4029     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4030 
4031     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
4032     std::string cameraId = cameras[0]->GetID();
4033     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
4034     sptr<HCameraDevice> camDevice = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken);
4035     ASSERT_NE(camDevice, nullptr);
4036 
4037     sptr<OHOS::HDI::Camera::V1_0::IStreamOperator> streamOperator = nullptr;
4038     sptr<CameraInput> input = cameraManager->CreateCameraInput(cameras[0]);
4039     sptr<ICameraDeviceServiceCallback> callback1 = new(std::nothrow) CameraDeviceServiceCallback(input);
4040     ASSERT_NE(callback1, nullptr);
4041 
4042     camDevice->EnableResult(result);
4043     camDevice->DisableResult(result);
4044 
4045     int32_t ret = camDevice->Open();
4046     EXPECT_EQ(ret, 0);
4047     camDevice->UpdateSetting(nullptr);
4048     sptr<ICameraDeviceServiceCallback> callback = nullptr;
4049     camDevice->SetCallback(callback);
4050     camDevice->GetDeviceAbility();
4051     camDevice->SetCallback(callback1);
4052     camDevice->OnError(REQUEST_TIMEOUT, 0) ;
4053     camDevice->OnError(DEVICE_PREEMPT, 0) ;
4054     camDevice->OnError(DRIVER_ERROR, 0) ;
4055 
4056     EXPECT_EQ(camDevice->Close(), 0);
4057     EXPECT_EQ(camDevice->GetEnabledResults(result), 11);
4058     EXPECT_EQ(camDevice->Close(), 0);
4059 }
4060 
4061 /*
4062  * Feature: Framework
4063  * Function: Test HStreamRepeat & HStreamCommon
4064  * SubFunction: NA
4065  * FunctionPoints: NA
4066  * EnvConditions: NA
4067  * CaseDescription: Test HStreamRepeat & HStreamCommon
4068  */
4069 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_026, TestSize.Level0)
4070 {
4071     int32_t format = 0;
4072     int32_t width = 0;
4073     int32_t height = 0;
4074     CameraInfoDumper infoDumper(0);
4075     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4076     sptr<IStreamRepeatCallback> callback = nullptr;
4077     sptr<OHOS::IBufferProducer> producer = nullptr;
4078     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
4079     sptr<IBufferProducer> producer1 = Surface->GetProducer();
4080     sptr<HStreamRepeat> streamRepeat =
4081         new (std::nothrow) HStreamRepeat(nullptr, format, width, height, RepeatStreamType::PREVIEW);
4082     ASSERT_NE(streamRepeat, nullptr);
4083 
4084     EXPECT_EQ(streamRepeat->Start(), CAMERA_INVALID_STATE);
4085     EXPECT_EQ(streamRepeat->SetCallback(callback), CAMERA_INVALID_ARG);
4086     EXPECT_EQ(streamRepeat->OnFrameError(BUFFER_LOST), 0);
4087     EXPECT_EQ(streamRepeat->AddDeferredSurface(producer), CAMERA_INVALID_ARG);
4088     streamRepeat->DumpStreamInfo(infoDumper);
4089     EXPECT_EQ(streamRepeat->AddDeferredSurface(producer1), CAMERA_INVALID_STATE);
4090     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
4091     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata1 = nullptr;
4092     EXPECT_EQ(streamRepeat->LinkInput(mockStreamOperator, metadata), CAMERA_OK);
4093     streamRepeat->LinkInput(mockStreamOperator, metadata1);
4094     mockStreamOperator = nullptr;
4095     streamRepeat->LinkInput(mockStreamOperator, metadata);
4096     streamRepeat->DumpStreamInfo(infoDumper);
4097     EXPECT_EQ(streamRepeat->Stop(), CAMERA_INVALID_STATE);
4098 }
4099 
4100 /*
4101  * Feature: Framework
4102  * Function: Test HStreamMetadata & HStreamCommon
4103  * SubFunction: NA
4104  * FunctionPoints: NA
4105  * EnvConditions: NA
4106  * CaseDescription: Test HStreamMetadata & HStreamCommon
4107  */
4108 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_027, TestSize.Level0)
4109 {
4110     int32_t format = 0;
4111     CameraInfoDumper infoDumper(0);
4112     std::string  dumpString ="HStreamMetadata";
4113     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4114     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
4115     sptr<IBufferProducer> producer = Surface->GetProducer();
4116     sptr<HStreamMetadata> streamMetadata= new(std::nothrow) HStreamMetadata(producer, format, {1});
4117     ASSERT_NE(streamMetadata, nullptr);
4118     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
4119     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata1 = nullptr;
4120     streamMetadata->LinkInput(mockStreamOperator, metadata);
4121     streamMetadata->LinkInput(mockStreamOperator, metadata1);
4122     mockStreamOperator = nullptr;
4123     streamMetadata->LinkInput(mockStreamOperator, metadata);
4124     streamMetadata->Stop();
4125     streamMetadata->Start();
4126     streamMetadata->DumpStreamInfo(infoDumper);
4127     streamMetadata->Start();
4128     streamMetadata->Stop();
4129 }
4130 
4131 /*
4132  * Feature: Framework
4133  * Function: Test HStreamMetadata & HStreamCommon
4134  * SubFunction: NA
4135  * FunctionPoints: NA
4136  * EnvConditions: NA
4137  * CaseDescription: Test HStreamMetadata & HStreamCommon
4138  */
4139 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_028, TestSize.Level0)
4140 {
4141     int32_t format = 0;
4142     std::string  dumpString ="HStreamMetadata";
4143     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4144     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
4145     sptr<IBufferProducer> producer = Surface->GetProducer();
4146     sptr<HStreamMetadata> streamMetadata= new(std::nothrow) HStreamMetadata(producer, format, {1});
4147     ASSERT_NE(streamMetadata, nullptr);
4148     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
4149     streamMetadata->Start();
4150     streamMetadata->LinkInput(mockStreamOperator, metadata);
4151     streamMetadata->Stop();
4152 }
4153 
4154 /*
4155  * Feature: Framework
4156  * Function: Test HStreamCapture & HStreamCommon
4157  * SubFunction: NA
4158  * FunctionPoints: NA
4159  * EnvConditions: NA
4160  * CaseDescription: Test HStreamCapture & HStreamCommon
4161  */
4162 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_029, TestSize.Level0)
4163 {
4164     int32_t format = 0;
4165     int32_t width = 0;
4166     int32_t height = 0;
4167     int32_t captureId = 0;
4168     int32_t frameCount = 0;
4169     uint64_t timestamp = 0;
4170     CameraInfoDumper infoDumper(0);
4171     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4172     sptr<IStreamCaptureCallback> callback = nullptr;
4173     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
4174     sptr<IBufferProducer> producer = Surface->GetProducer();
4175     sptr<OHOS::IBufferProducer> producer1 = nullptr;
4176     sptr<HStreamCapture> streamCapture= new(std::nothrow) HStreamCapture(producer, format, width, height);
4177     ASSERT_NE(streamCapture, nullptr);
4178     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
4179     EXPECT_EQ(streamCapture->SetThumbnail(false, producer1), CAMERA_OK);
4180     EXPECT_EQ(streamCapture->SetThumbnail(false, producer), CAMERA_OK);
4181     EXPECT_EQ(streamCapture->SetThumbnail(true, producer1), CAMERA_OK);
4182     streamCapture->DumpStreamInfo(infoDumper);
4183     EXPECT_EQ(streamCapture->SetThumbnail(true, producer), CAMERA_OK);
4184     streamCapture->SetRotation(metadata, captureId);
4185     mockStreamOperator = nullptr;
4186     streamCapture->LinkInput(mockStreamOperator, metadata);
4187     EXPECT_EQ(streamCapture->Capture(metadata),  CAMERA_INVALID_STATE);
4188     EXPECT_EQ(streamCapture->SetCallback(callback), CAMERA_INVALID_ARG);
4189     EXPECT_EQ(streamCapture->OnCaptureEnded(captureId, frameCount), CAMERA_OK);
4190     EXPECT_EQ(streamCapture->OnCaptureError(captureId, frameCount), CAMERA_OK);
4191     EXPECT_EQ(streamCapture->OnCaptureError(captureId, BUFFER_LOST), CAMERA_OK);
4192     EXPECT_EQ(streamCapture->OnFrameShutter(captureId, timestamp), CAMERA_OK);
4193     EXPECT_EQ(streamCapture->OnFrameShutterEnd(captureId, timestamp), CAMERA_OK);
4194     EXPECT_EQ(streamCapture->OnCaptureReady(captureId, timestamp), CAMERA_OK);
4195     streamCapture->DumpStreamInfo(infoDumper);
4196 
4197     EXPECT_EQ(streamCapture->Release(),  0);
4198 }
4199 
4200 /*
4201  * Feature: Framework
4202  * Function: Test HCameraDevice
4203  * SubFunction: NA
4204  * FunctionPoints: NA
4205  * EnvConditions: NA
4206  * CaseDescription: Test HCameraDevice
4207  */
4208 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_030, TestSize.Level0)
4209 {
4210     std::vector<int32_t> result;
4211     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
4212     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
4213 
4214     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4215 
4216     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
4217     std::string cameraId = cameras[0]->GetID();
4218     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
4219     uint32_t callerToken1 = 3;
4220     sptr<HCameraDevice> camDevice = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken);
4221     ASSERT_NE(camDevice, nullptr);
4222     sptr<HCameraDevice> camDevice1 = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken1);
4223     ASSERT_NE(camDevice1, nullptr);
4224 
4225     sptr<OHOS::HDI::Camera::V1_0::IStreamOperator> streamOperator = nullptr;
4226     sptr<CameraInput> input = cameraManager->CreateCameraInput(cameras[0]);
4227     sptr<ICameraDeviceServiceCallback> callback1 = new(std::nothrow) CameraDeviceServiceCallback(input);
4228     ASSERT_NE(callback1, nullptr);
4229     camDevice->EnableResult(result);
4230     camDevice->DisableResult(result);
4231 
4232     int32_t ret = camDevice->Open();
4233     EXPECT_EQ(ret, 0);
4234     camDevice->Open();
4235     g_getCameraAbilityerror = true;
4236     camDevice->GetDeviceAbility();
4237     g_openCameraDevicerror = true;
4238     EXPECT_EQ(camDevice->Open(), 0);
4239 
4240     camDevice->Close();
4241 }
4242 
4243 /*
4244  * Feature: Framework
4245  * Function: Test anomalous branch
4246  * SubFunction: NA
4247  * FunctionPoints: NA
4248  * EnvConditions: NA
4249  * CaseDescription: Test HCameraHostManager with anomalous branch.
4250  */
4251 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_031, TestSize.Level0)
4252 {
4253     InSequence s;
4254     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4255 
4256     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4257     ASSERT_NE(input, nullptr);
4258 
4259     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4260     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4261     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4262     std::string cameraSettings = camInput->GetCameraSettings();
4263     camInput->SetCameraSettings(cameraSettings);
4264     camInput->GetCameraDevice()->Open();
4265 
4266     std::vector<std::string> cameraIds = {};
4267     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
4268     cameraHostManager->Init();
4269     ASSERT_NE(cameraHostManager, nullptr);
4270 
4271     std::string cameraId = cameras[0]->GetID();
4272     EXPECT_EQ(cameraHostManager->HCameraHostManager::GetCameras(cameraIds), 0);
4273     std::shared_ptr<OHOS::Camera::CameraMetadata> ability = cameras[0]->GetMetadata();
4274     EXPECT_EQ(cameraHostManager->HCameraHostManager::GetCameraAbility(cameraId, ability), 2);
4275     EXPECT_EQ(cameraHostManager->HCameraHostManager::SetFlashlight(cameraId, false), 2);
4276 
4277     cameraId = "HCameraHostManager";
4278 
4279     cameraHostManager->AddCameraDevice(cameraId, nullptr);
4280     EXPECT_EQ(cameraHostManager->HCameraHostManager::SetFlashlight(cameraId, true), 2);
4281 
4282     cameraHostManager->CloseCameraDevice(cameraId);
4283 
4284     ability = cameras[0]->GetMetadata();
4285     EXPECT_EQ(cameraHostManager->HCameraHostManager::GetCameraAbility(cameraId, ability), 2);
4286 
4287     EXPECT_EQ(cameraHostManager->HCameraHostManager::GetVersionByCamera(cameraId), 0);
4288 
4289     sptr<OHOS::HDI::Camera::V1_0::ICameraDevice> pDevice;
4290     cameraHostManager->HCameraHostManager::OpenCameraDevice(cameraId, nullptr, pDevice);
4291 
4292     cameraId = cameras[0]->GetID();
4293     HDI::ServiceManager::V1_0::ServiceStatus status;
4294     status.deviceClass = DEVICE_CLASS_CAMERA;
4295     status.serviceName = "distributed_camera_service";
4296     status.status = HDI::ServiceManager::V1_0::SERVIE_STATUS_START;
4297     cameraHostManager->GetRegisterServStatListener()->OnReceive(status);
4298 
4299     EXPECT_EQ(cameraHostManager->HCameraHostManager::SetFlashlight(cameraId, false), 2);
4300 
4301     std::shared_ptr<MockHCameraHostManager::MockStatusCallback> mockStatusCallback =
4302     std::make_shared<MockHCameraHostManager::MockStatusCallback>();
4303     sptr<MockHCameraHostManager> mockCameraHostManager_2 =
4304         new (std::nothrow) MockHCameraHostManager(mockStatusCallback);
4305     ASSERT_NE(mockCameraHostManager_2, nullptr);
4306     sptr<HCameraHostManager> cameraHostManager_2 = (sptr<HCameraHostManager> &)mockCameraHostManager_2;
4307 
4308     cameraHostManager_2->AddCameraDevice(cameraId, nullptr);
4309     cameraHostManager->DeInit();
4310     input->Close();
4311 }
4312 
4313 
4314 /*
4315  * Feature: Framework
4316  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in AttachSketchSurface,
4317  *      IsSketchSupported, StartSketch, StopSketch, OnSketchStatusChanged,
4318  *      CreateSketchWrapper, GetSketchRatio
4319  * SubFunction: NA
4320  * FunctionPoints: NA
4321  * EnvConditions: NA
4322  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged() in AttachSketchSurface,
4323  *          IsSketchSupported, StartSketch, StopSketch, OnSketchStatusChanged,
4324  *          CreateSketchWrapper, GetSketchRatio
4325  */
4326 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_032, TestSize.Level0)
4327 {
4328     InSequence s;
4329     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4330     Size previewSize = {.width = 1440, .height = 1080};
4331 
4332     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4333     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4334     ASSERT_NE(input, nullptr);
4335 
4336     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4337     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4338     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4339     std::string cameraSettings = camInput->GetCameraSettings();
4340     camInput->SetCameraSettings(cameraSettings);
4341     camInput->GetCameraDevice()->Open();
4342 
4343     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4344     ASSERT_NE(session, nullptr);
4345     sptr<CaptureOutput> preview = CreatePreviewOutput();
4346     ASSERT_NE(preview, nullptr);
4347     auto previewOutput = (sptr<PreviewOutput>&)preview;
4348 
4349     EXPECT_EQ(previewOutput->IsSketchSupported(), false);
4350     int32_t ret = session->BeginConfig();
4351     EXPECT_EQ(ret, 0);
4352 
4353     EXPECT_EQ(previewOutput->AttachSketchSurface(surface), CameraErrorCode::SESSION_NOT_CONFIG);
4354     EXPECT_EQ(previewOutput->StartSketch(), CameraErrorCode::SESSION_NOT_CONFIG);
4355     EXPECT_EQ(previewOutput->StopSketch(), CameraErrorCode::SESSION_NOT_CONFIG);
4356 
4357     EXPECT_EQ(previewOutput->OnSketchStatusChanged(SketchStatus::STOPED), CAMERA_INVALID_STATE);
4358     EXPECT_EQ(previewOutput->IsSketchSupported(), false);
4359 
4360     EXPECT_NE(previewOutput->CreateSketchWrapper(previewSize), 0);
4361     EXPECT_EQ(previewOutput->GetSketchRatio(), -1);
4362 
4363     ret = session->AddInput(input);
4364     EXPECT_EQ(ret, 0);
4365     ret = session->AddOutput(preview);
4366     EXPECT_EQ(ret, 0);
4367 
4368     EXPECT_EQ(session->RemoveOutput(preview), 0);
4369     EXPECT_EQ(session->RemoveInput(input), 0);
4370     EXPECT_EQ(preview->Release(), 0);
4371     EXPECT_EQ(input->Release(), 0);
4372     EXPECT_EQ(session->Release(), 0);
4373 }
4374 
4375 /*
4376  * Feature: Framework
4377  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in IsSketchSupported,
4378  *              FindSketchSize, EnableSketch
4379  * SubFunction: NA
4380  * FunctionPoints: NA
4381  * EnvConditions: NA
4382  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged() in IsSketchSupported,
4383  *              FindSketchSize, EnableSketch
4384  */
4385 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_033, TestSize.Level0)
4386 {
4387     InSequence s;
4388     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4389     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4390     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4391     ASSERT_NE(input, nullptr);
4392 
4393     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4394     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4395     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4396     std::string cameraSettings = camInput->GetCameraSettings();
4397     camInput->SetCameraSettings(cameraSettings);
4398     camInput->GetCameraDevice()->Open();
4399 
4400     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4401     ASSERT_NE(session, nullptr);
4402     sptr<CaptureOutput> preview = CreatePreviewOutput();
4403     ASSERT_NE(preview, nullptr);
4404     auto previewOutput = (sptr<PreviewOutput>&)preview;
4405     EXPECT_EQ(previewOutput->IsSketchSupported(), false);
4406     int32_t ret = session->BeginConfig();
4407     EXPECT_EQ(ret, 0);
4408     ret = session->AddInput(input);
4409     EXPECT_EQ(ret, 0);
4410     ret = session->AddOutput(preview);
4411     EXPECT_EQ(ret, 0);
4412 
4413     previewOutput->SetSession(session);
4414     previewOutput->FindSketchSize();
4415     EXPECT_EQ(previewOutput->EnableSketch(true), 7400102);
4416     ret = session->CommitConfig();
4417     EXPECT_EQ(ret, 0);
4418     EXPECT_EQ(preview->Release(), 0);
4419     EXPECT_EQ(input->Release(), 0);
4420     EXPECT_EQ(session->Release(), 0);
4421 }
4422 
4423 /*
4424  * Feature: Framework
4425  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in IsSketchSupported,
4426  *              OnNativeRegisterCallback, OnNativeUnregisterCallback, CameraServerDied, SetCallback
4427  * SubFunction: NA
4428  * FunctionPoints: NA
4429  * EnvConditions: NA
4430  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged() in IsSketchSupported,
4431  *              OnNativeRegisterCallback, OnNativeUnregisterCallback, CameraServerDied, SetCallback
4432  */
4433 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_034, TestSize.Level0)
4434 {
4435     InSequence s;
4436     Size previewSize = {.width = 1440, .height = 1080};
4437     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4438     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4439     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4440     ASSERT_NE(input, nullptr);
4441 
4442     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4443     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4444     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4445     std::string cameraSettings = camInput->GetCameraSettings();
4446     camInput->SetCameraSettings(cameraSettings);
4447     camInput->GetCameraDevice()->Open();
4448 
4449     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4450     ASSERT_NE(session, nullptr);
4451     sptr<CaptureOutput> preview = CreatePreviewOutput();
4452     ASSERT_NE(preview, nullptr);
4453     auto previewOutput = (sptr<PreviewOutput>&)preview;
4454 
4455     EXPECT_EQ(previewOutput->IsSketchSupported(), false);
4456     std::string eventString = "test";
4457     previewOutput->OnNativeRegisterCallback(eventString);
4458     previewOutput->OnNativeUnregisterCallback(eventString);
4459     eventString = "sketchStatusChanged";
4460     previewOutput->sketchWrapper_ = std::make_shared<SketchWrapper>(previewOutput->GetStream(), previewSize);
4461     previewOutput->OnNativeRegisterCallback(eventString);
4462     previewOutput->OnNativeUnregisterCallback(eventString);
4463     previewOutput->CameraServerDied(0);
4464     std::shared_ptr<PreviewStateCallback> previewStateCallback =
4465         std::make_shared<TestPreviewOutputCallback>("PreviewStateCallback");
4466     previewOutput->SetCallback(previewStateCallback);
4467     previewOutput->CameraServerDied(0);
4468 
4469     EXPECT_EQ(session->Release(), 0);
4470     EXPECT_EQ(input->Close(), 0);
4471 }
4472 
4473 /*
4474  * Feature: Framework
4475  * Function: Test Init, AttachSketchSurface, UpdateSketchRatio,
4476  *          SetPreviewStateCallback, OnSketchStatusChanged,
4477  *          UpdateSketchReferenceFovRatio in sketchWrapper
4478  * SubFunction: NA
4479  * FunctionPoints: NA
4480  * EnvConditions: NA
4481  * CaseDescription: Test Init, AttachSketchSurface, UpdateSketchRatio,
4482  *          SetPreviewStateCallback, OnSketchStatusChanged,
4483  *          UpdateSketchReferenceFovRatio in sketchWrapper
4484  */
4485 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_035, TestSize.Level0)
4486 {
4487     InSequence s;
4488     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4489     Size previewSize = { .width = 1440, .height = 1080 };
4490     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4491     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4492     ASSERT_NE(input, nullptr);
4493 
4494     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4495     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4496     sptr<CameraInput> camInput = (sptr<CameraInput>&)input;
4497     std::string cameraSettings = camInput->GetCameraSettings();
4498     camInput->SetCameraSettings(cameraSettings);
4499     camInput->GetCameraDevice()->Open();
4500 
4501     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4502     ASSERT_NE(session, nullptr);
4503 
4504     std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata = cameras[0]->GetMetadata();
4505     ASSERT_NE(deviceMetadata, nullptr);
4506     auto modeName = session->GetFeaturesMode();
4507     CameraFormat previewFormat = CAMERA_FORMAT_YCBCR_420_888;
4508     Profile previewProfile = Profile(previewFormat, previewSize);
4509     sptr<CaptureOutput> preview = cameraManager->CreatePreviewOutput(previewProfile, surface);
4510     ASSERT_NE(preview, nullptr);
4511     auto previewOutput = (sptr<PreviewOutput>&)preview;
4512 
4513     SketchWrapper* sketchWrapper = new (std::nothrow) SketchWrapper(previewOutput->GetStream(), previewSize);
4514     ASSERT_NE(sketchWrapper, nullptr);
4515     std::shared_ptr<PreviewStateCallback> setCallback =
4516         std::make_shared<TestPreviewOutputCallback>("PreviewStateCallback");
4517     ASSERT_NE(setCallback, nullptr);
4518     camera_metadata_item_t item;
4519     OHOS::Camera::FindCameraMetadataItem(deviceMetadata->get(), OHOS_CONTROL_ZOOM_RATIO, &item);
4520     SceneFeaturesMode defaultSceneFeature(SceneMode::NORMAL, {});
4521     SceneFeaturesMode captureSceneFeature(SceneMode::CAPTURE, {});
4522     EXPECT_EQ(sketchWrapper->Init(deviceMetadata, modeName), 0);
4523     EXPECT_EQ(sketchWrapper->AttachSketchSurface(surface), 10);
4524     EXPECT_EQ(sketchWrapper->UpdateSketchRatio(1.0f), 0);
4525     sketchWrapper->SetPreviewStateCallback(setCallback);
4526     sketchWrapper->OnSketchStatusChanged(defaultSceneFeature);
4527     sketchWrapper->OnSketchStatusChanged(SketchStatus::STARTED, defaultSceneFeature);
4528     sketchWrapper->OnSketchStatusChanged(SketchStatus::STOPED, defaultSceneFeature);
4529     sketchWrapper->currentSketchStatusData_.sketchRatio = 1.0f;
4530     sketchWrapper->OnSketchStatusChanged(modeName);
4531     sketchWrapper->OnSketchStatusChanged(SketchStatus::STOPED, captureSceneFeature);
4532     sketchWrapper->UpdateSketchReferenceFovRatio(item);
4533 
4534     EXPECT_EQ(session->Release(), 0);
4535     EXPECT_EQ(input->Close(), 0);
4536 }
4537 
4538 /*
4539  * Feature: Framework
4540  * Function: Test AttachSketchSurface, StartSketch, StopSketch,
4541  *              OnNativeRegisterCallback in ~PreviewOutput
4542  * SubFunction: NA
4543  * FunctionPoints: NA
4544  * EnvConditions: NA
4545  * CaseDescription: Test AttachSketchSurface, StartSketch,
4546  *              StopSketch, OnNativeRegisterCallback in ~PreviewOutput
4547  */
4548 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_036, TestSize.Level0)
4549 {
4550     InSequence s;
4551     Size previewSize = {.width = 1440, .height = 1080};
4552     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4553     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4554     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4555     ASSERT_NE(input, nullptr);
4556 
4557     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4558     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4559     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4560     std::string cameraSettings = camInput->GetCameraSettings();
4561     camInput->SetCameraSettings(cameraSettings);
4562     camInput->GetCameraDevice()->Open();
4563 
4564     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4565     ASSERT_NE(session, nullptr);
4566     sptr<CaptureOutput> preview = CreatePreviewOutput();
4567     ASSERT_NE(preview, nullptr);
4568     auto previewOutput = (sptr<PreviewOutput>&)preview;
4569 
4570     int32_t ret = session->BeginConfig();
4571     ret = session->AddInput(input);
4572     ret = session->AddOutput(preview);
4573     EXPECT_EQ(ret, 0);
4574 
4575     ret = session->CommitConfig();
4576     EXPECT_EQ(ret, 0);
4577 
4578     previewOutput->Release();
4579     previewOutput->SetSession(session);
4580     EXPECT_EQ(previewOutput->AttachSketchSurface(surface), INVALID_ARGUMENT);
4581     EXPECT_EQ(previewOutput->StartSketch(), 7400201);
4582     EXPECT_EQ(previewOutput->StopSketch(), 7400201);
4583     previewOutput->sketchWrapper_ = std::make_shared<SketchWrapper>(previewOutput->GetStream(), previewSize);
4584     previewOutput->OnNativeRegisterCallback("sketchStatusChanged");
4585 
4586     EXPECT_EQ(input->Release(), 0);
4587     EXPECT_EQ(session->Release(), 0);
4588 }
4589 
4590 /*
4591  * Feature: Framework
4592  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in
4593  *              OnMetadataChanged, OnSketchStatusChanged
4594  * SubFunction: NA
4595  * FunctionPoints: NA
4596  * EnvConditions: NA
4597  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged()
4598  *              in OnMetadataChanged, OnSketchStatusChanged
4599  */
4600 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_037, TestSize.Level0)
4601 {
4602     InSequence s;
4603     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4604     Size previewSize = {.width = 1440, .height = 1080};
4605     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4606     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4607     ASSERT_NE(input, nullptr);
4608 
4609     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4610     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4611     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4612     std::string cameraSettings = camInput->GetCameraSettings();
4613     camInput->SetCameraSettings(cameraSettings);
4614     camInput->GetCameraDevice()->Open();
4615 
4616     std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata = cameras[0]->GetMetadata();
4617     ASSERT_NE(deviceMetadata, nullptr);
4618     camera_metadata_item_t item;
4619     OHOS::Camera::FindCameraMetadataItem(deviceMetadata->get(), OHOS_CONTROL_ZOOM_RATIO, &item);
4620     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4621     ASSERT_NE(session, nullptr);
4622     sptr<CaptureOutput> preview = CreatePreviewOutput();
4623     ASSERT_NE(preview, nullptr);
4624     auto previewOutput = (sptr<PreviewOutput>&)preview;
4625 
4626     EXPECT_EQ(session->BeginConfig(), 0);
4627     EXPECT_EQ(session->AddInput(input), 0);
4628     EXPECT_EQ(session->AddOutput(preview), 0);
4629 
4630     item.count = 0;
4631     EXPECT_EQ(previewOutput->OnControlMetadataChanged(OHOS_ABILITY_BEAUTY_FACE_SLENDER_VALUES, item),
4632         CAM_META_INVALID_PARAM);
4633     item.count = 1;
4634     EXPECT_EQ(previewOutput->OnControlMetadataChanged(OHOS_ABILITY_BEAUTY_FACE_SLENDER_VALUES, item),
4635         CAM_META_FAILURE);
4636     previewOutput->sketchWrapper_ = std::make_shared<SketchWrapper>(previewOutput->GetStream(), previewSize);
4637 
4638     previewOutput->SetSession(nullptr);
4639     EXPECT_EQ(previewOutput->OnSketchStatusChanged(SketchStatus::STOPED), CAMERA_INVALID_STATE);
4640     EXPECT_EQ(previewOutput->OnControlMetadataChanged(OHOS_ABILITY_BEAUTY_FACE_SLENDER_VALUES, item),
4641         CAM_META_FAILURE);
4642     previewOutput->SetSession(session);
4643     EXPECT_EQ(previewOutput->OnControlMetadataChanged(OHOS_ABILITY_BEAUTY_FACE_SLENDER_VALUES, item),
4644         CAM_META_SUCCESS);
4645     EXPECT_EQ(previewOutput->OnSketchStatusChanged(SketchStatus::STOPED), CAMERA_OK);
4646 
4647     EXPECT_EQ(session->CommitConfig(), 0);
4648     EXPECT_EQ(preview->Release(), 0);
4649     EXPECT_EQ(input->Release(), 0);
4650     EXPECT_EQ(session->Release(), 0);
4651 }
4652 
4653 /*
4654  * Feature: Framework
4655  * Function: Test cameraFormat with CAMERA_FORMAT_YUV_420_SP and CAMERA_FORMAT_JPEG
4656  * SubFunction: NA
4657  * FunctionPoints: NA
4658  * EnvConditions: NA
4659  * CaseDescription: Test cameraFormat with CAMERA_FORMAT_YUV_420_SP and CAMERA_FORMAT_JPEG
4660  */
4661 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_038, TestSize.Level0)
4662 {
4663     InSequence s;
4664     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4665     Size previewSize = {.width = 1440, .height = 1080};
4666     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4667     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4668     ASSERT_NE(input, nullptr);
4669 
4670     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4671     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4672     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4673     std::string cameraSettings = camInput->GetCameraSettings();
4674     camInput->SetCameraSettings(cameraSettings);
4675     camInput->GetCameraDevice()->Open();
4676 
4677     std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata = cameras[0]->GetMetadata();
4678     ASSERT_NE(deviceMetadata, nullptr);
4679     camera_metadata_item_t item;
4680     OHOS::Camera::FindCameraMetadataItem(deviceMetadata->get(), OHOS_CONTROL_ZOOM_RATIO, &item);
4681     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4682     ASSERT_NE(session, nullptr);
4683     CameraFormat previewFormat = CAMERA_FORMAT_YCBCR_420_888;
4684     Profile previewProfile = Profile(previewFormat, previewSize);
4685     sptr<CaptureOutput> preview = cameraManager->CreatePreviewOutput(previewProfile, surface);
4686     ASSERT_NE(preview, nullptr);
4687     auto previewOutput = (sptr<PreviewOutput>&)preview;
4688     EXPECT_EQ(previewOutput->IsSketchSupported(), false);
4689     auto currentPreviewProfile = previewOutput->GetPreviewProfile();
4690     currentPreviewProfile->format_ = CAMERA_FORMAT_YUV_420_SP;
4691     EXPECT_EQ(previewOutput->IsSketchSupported(), false);
4692     currentPreviewProfile->format_ = CAMERA_FORMAT_JPEG;
4693     EXPECT_EQ(previewOutput->IsSketchSupported(), false);
4694 
4695     EXPECT_EQ(preview->Release(), 0);
4696     EXPECT_EQ(input->Release(), 0);
4697     EXPECT_EQ(session->Release(), 0);
4698 }
4699 
4700 /*
4701  * Feature: Framework
4702  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in
4703  *          AttachSketchSurface, StartSketch, StopSketch, OnNativeRegisterCallback
4704  * SubFunction: NA
4705  * FunctionPoints: NA
4706  * EnvConditions: NA
4707  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged()
4708  *          in AttachSketchSurface, StartSketch, StopSketch, OnNativeRegisterCallback
4709  */
4710 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_039, TestSize.Level0)
4711 {
4712     InSequence s;
4713     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4714     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4715     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4716     ASSERT_NE(input, nullptr);
4717     Size previewSize = {.width = 1440, .height = 1080};
4718 
4719     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4720     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4721     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4722     std::string cameraSettings = camInput->GetCameraSettings();
4723     camInput->SetCameraSettings(cameraSettings);
4724     camInput->GetCameraDevice()->Open();
4725 
4726     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4727     ASSERT_NE(session, nullptr);
4728     sptr<CaptureOutput> preview = CreatePreviewOutput();
4729     ASSERT_NE(preview, nullptr);
4730     auto previewOutput = (sptr<PreviewOutput>&)preview;
4731 
4732     int32_t ret = session->BeginConfig();
4733     EXPECT_EQ(ret, 0);
4734     EXPECT_EQ(session->AddInput(input), 0);
4735     EXPECT_EQ(session->AddOutput(preview), 0);
4736     EXPECT_EQ(session->CommitConfig(), 0);
4737     previewOutput->SetSession(session);
4738 
4739     EXPECT_EQ(previewOutput->AttachSketchSurface(surface), INVALID_ARGUMENT);
4740     EXPECT_EQ(previewOutput->StartSketch(), 7400201);
4741     EXPECT_EQ(previewOutput->StopSketch(), 7400201);
4742     previewOutput->sketchWrapper_ = std::make_shared<SketchWrapper>(previewOutput->GetStream(), previewSize);
4743     EXPECT_EQ(previewOutput->AttachSketchSurface(surface), 7400201);
4744     EXPECT_EQ(previewOutput->AttachSketchSurface(nullptr), CameraErrorCode::INVALID_ARGUMENT);
4745     EXPECT_EQ(previewOutput->StartSketch(), 7400201);
4746     EXPECT_EQ(previewOutput->StopSketch(), 7400201);
4747     previewOutput->OnNativeRegisterCallback("sketchStatusChanged");
4748 
4749     EXPECT_EQ(preview->Release(), 0);
4750     EXPECT_EQ(input->Release(), 0);
4751     EXPECT_EQ(session->Release(), 0);
4752 }
4753 
4754 /*
4755  * Feature: Framework
4756  * Function: Test CameraServerDied
4757  * SubFunction: NA
4758  * FunctionPoints: NA
4759  * EnvConditions: NA
4760  * CaseDescription: Test if innerCaptureSession_ == nullptr in CameraServerDied
4761  */
4762 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_040, TestSize.Level0)
4763 {
4764     InSequence s;
4765     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4766     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4767     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4768     ASSERT_NE(input, nullptr);
4769 
4770     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4771     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4772     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4773     std::string cameraSettings = camInput->GetCameraSettings();
4774     camInput->SetCameraSettings(cameraSettings);
4775     camInput->GetCameraDevice()->Open();
4776 
4777     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4778     ASSERT_NE(session, nullptr);
4779     sptr<CaptureOutput> preview = CreatePreviewOutput();
4780     ASSERT_NE(preview, nullptr);
4781     auto appCallback = std::make_shared<AppSessionCallback>();
4782     ASSERT_NE(appCallback, nullptr);
4783 
4784     EXPECT_EQ(session->BeginConfig(), 0);
4785     session->CameraServerDied(0);
4786     session->appCallback_ = appCallback;
4787     session->CameraServerDied(0);
4788     session->innerCaptureSession_ = nullptr;
4789     session->CameraServerDied(0);
4790     session->appCallback_ = nullptr;
4791 
4792     EXPECT_EQ(preview->Release(), 0);
4793     EXPECT_EQ(input->Release(), 0);
4794     session->Release();
4795 }
4796 
4797 /*
4798  * Feature: Framework
4799  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in
4800  *              PrepareZoom, UnPrepareZoom, SetSmoothZoom
4801  * SubFunction: NA
4802  * FunctionPoints: NA
4803  * EnvConditions: NA
4804  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged()
4805  *              in PrepareZoom, UnPrepareZoom, SetSmoothZoom
4806  */
4807 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_041, TestSize.Level0)
4808 {
4809     InSequence s;
4810     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4811     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4812     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4813     ASSERT_NE(input, nullptr);
4814 
4815     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4816     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4817     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4818     std::string cameraSettings = camInput->GetCameraSettings();
4819     camInput->SetCameraSettings(cameraSettings);
4820     camInput->GetCameraDevice()->Open();
4821 
4822     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4823     ASSERT_NE(session, nullptr);
4824     sptr<CaptureOutput> preview = CreatePreviewOutput();
4825     ASSERT_NE(preview, nullptr);
4826 
4827     EXPECT_EQ(session->PrepareZoom(), CameraErrorCode::SESSION_NOT_CONFIG);
4828     EXPECT_EQ(session->UnPrepareZoom(), CameraErrorCode::SESSION_NOT_CONFIG);
4829 
4830     EXPECT_EQ(session->BeginConfig(), 0);
4831     EXPECT_EQ(session->PrepareZoom(), CameraErrorCode::SUCCESS);
4832     EXPECT_EQ(session->UnPrepareZoom(), CameraErrorCode::SUCCESS);
4833 
4834     EXPECT_EQ(session->AddInput(input), 0);
4835     EXPECT_EQ(session->AddOutput(preview), 0);
4836 
4837     session->SetSmoothZoom(0, 0);
4838 
4839     EXPECT_EQ(session->CommitConfig(), 0);
4840     EXPECT_EQ(session->PrepareZoom(), CameraErrorCode::SUCCESS);
4841     EXPECT_EQ(session->UnPrepareZoom(), CameraErrorCode::SUCCESS);
4842     EXPECT_EQ(session->SetSmoothZoom(0, 0), CameraErrorCode::SUCCESS);
4843 
4844     session->LockForControl();
4845     session->PrepareZoom();
4846     session->UnPrepareZoom();
4847     session->UnlockForControl();
4848 
4849     EXPECT_EQ(preview->Release(), 0);
4850     EXPECT_EQ(input->Release(), 0);
4851     session->Release();
4852 }
4853 
4854 /*
4855  * Feature: Framework
4856  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in
4857  *          PrepareZoom, UnPrepareZoom, SetSmoothZoom,
4858  *          SetBeauty of ~CaptureSession
4859  * SubFunction: NA
4860  * FunctionPoints: NA
4861  * EnvConditions: NA
4862  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged()
4863  *          in PrepareZoom, UnPrepareZoom, SetSmoothZoom,
4864  *          SetBeauty of ~CaptureSession
4865  */
4866 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_042, TestSize.Level0)
4867 {
4868     InSequence s;
4869     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4870     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4871     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4872     ASSERT_NE(input, nullptr);
4873 
4874     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4875     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4876     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4877     std::string cameraSettings = camInput->GetCameraSettings();
4878     camInput->SetCameraSettings(cameraSettings);
4879     camInput->GetCameraDevice()->Open();
4880 
4881     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4882     ASSERT_NE(session, nullptr);
4883     sptr<CaptureOutput> preview = CreatePreviewOutput();
4884     ASSERT_NE(preview, nullptr);
4885 
4886     EXPECT_EQ(session->BeginConfig(), 0);
4887     EXPECT_EQ(session->AddInput(input), 0);
4888     EXPECT_EQ(session->AddOutput(preview), 0);
4889 
4890     EXPECT_EQ(session->CommitConfig(), 0);
4891     session->Release();
4892     EXPECT_EQ(session->PrepareZoom(), CameraErrorCode::SESSION_NOT_CONFIG);
4893     EXPECT_EQ(session->UnPrepareZoom(), CameraErrorCode::SESSION_NOT_CONFIG);
4894     EXPECT_EQ(session->SetSmoothZoom(0, 0), CameraErrorCode::SESSION_NOT_CONFIG);
4895     session->SetBeauty(AUTO_TYPE, 0);
4896 
4897     EXPECT_EQ(input->Release(), 0);
4898 }
4899 
4900 /*
4901  * Feature: Framework
4902  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in
4903  *              SetBeautyValue, SetBeauty, CalculateExposureValue, SetFilter
4904  * SubFunction: NA
4905  * FunctionPoints: NA
4906  * EnvConditions: NA
4907  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged()
4908  *              in SetBeautyValue, SetBeauty, CalculateExposureValue, SetFilter
4909  */
4910 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_043, TestSize.Level0)
4911 {
4912     InSequence s;
4913     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4914     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4915     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4916     ASSERT_NE(input, nullptr);
4917 
4918     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4919     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4920     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4921     std::string cameraSettings = camInput->GetCameraSettings();
4922     camInput->SetCameraSettings(cameraSettings);
4923     camInput->GetCameraDevice()->Open();
4924 
4925     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4926     ASSERT_NE(session, nullptr);
4927     sptr<CaptureOutput> preview = CreatePreviewOutput();
4928     ASSERT_NE(preview, nullptr);
4929 
4930     EXPECT_EQ(session->SetBeautyValue(AUTO_TYPE, 0), false);
4931 
4932     session->SetBeauty(AUTO_TYPE, 0);
4933     EXPECT_EQ(session->BeginConfig(), 0);
4934     session->SetBeauty(AUTO_TYPE, 0);
4935     EXPECT_EQ(session->AddInput(input), 0);
4936     EXPECT_EQ(session->AddOutput(preview), 0);
4937 
4938     EXPECT_EQ(session->CommitConfig(), 0);
4939     session->SetBeauty(AUTO_TYPE, 0);
4940 
4941     EXPECT_EQ(session->CalculateExposureValue(100.0), 2147483647);
4942 
4943     session->LockForControl();
4944     session->SetBeauty(AUTO_TYPE, 0);
4945     session->SetFilter(NONE);
4946     session->UnlockForControl();
4947 
4948     EXPECT_EQ(preview->Release(), 0);
4949     EXPECT_EQ(input->Release(), 0);
4950     EXPECT_EQ(session->Release(), 0);
4951 }
4952 
4953 /*
4954  * Feature: Framework
4955  * Function: Test innerInputDevice_ in GetColorEffect,
4956  *          EnableMacro, IsMacroSupported,
4957  *          SetColorEffect, ProcessMacroStatusChange
4958  * FunctionPoints: NA
4959  * EnvConditions: NA
4960  * CaseDescription: Test innerInputDevice_ in GetColorEffect,
4961  *          EnableMacro, IsMacroSupported,
4962  *          SetColorEffect, ProcessMacroStatusChange
4963  */
4964 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_044, TestSize.Level0)
4965 {
4966     InSequence s;
4967     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
4968     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
4969     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
4970     ASSERT_NE(input, nullptr);
4971 
4972     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
4973     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
4974     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
4975     std::string cameraSettings = camInput->GetCameraSettings();
4976     camInput->SetCameraSettings(cameraSettings);
4977     camInput->GetCameraDevice()->Open();
4978 
4979     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
4980     ASSERT_NE(session, nullptr);
4981     sptr<CaptureOutput> preview = CreatePreviewOutput();
4982     ASSERT_NE(preview, nullptr);
4983     auto macroStatusCallback = std::make_shared<AppMacroStatusCallback>();
4984     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
4985 
4986     EXPECT_EQ(session->GetColorEffect(), COLOR_EFFECT_NORMAL);
4987     EXPECT_EQ(session->EnableMacro(true), OPERATION_NOT_ALLOWED);
4988 
4989     EXPECT_EQ(session->BeginConfig(), 0);
4990 
4991     EXPECT_EQ(session->AddInput(input), 0);
4992     EXPECT_EQ(session->AddOutput(preview), 0);
4993 
4994     EXPECT_EQ(session->CommitConfig(), 0);
4995     EXPECT_EQ(session->GetColorEffect(), COLOR_EFFECT_NORMAL);
4996 
4997     ((sptr<CameraInput>&)(session->innerInputDevice_))->cameraObj_ = nullptr;
4998     EXPECT_EQ(session->GetColorEffect(), COLOR_EFFECT_NORMAL);
4999     EXPECT_EQ(session->IsMacroSupported(), false);
5000     session->innerInputDevice_ = nullptr;
5001     EXPECT_EQ(session->GetColorEffect(), COLOR_EFFECT_NORMAL);
5002     EXPECT_EQ(session->IsMacroSupported(), false);
5003     EXPECT_EQ(session->EnableMacro(true), OPERATION_NOT_ALLOWED);
5004 
5005     session->LockForControl();
5006     session->SetColorEffect(COLOR_EFFECT_NORMAL);
5007     session->UnlockForControl();
5008 
5009     session->macroStatusCallback_ = macroStatusCallback;
5010     session->ProcessMacroStatusChange(metadata);
5011 
5012     EXPECT_EQ(preview->Release(), 0);
5013     EXPECT_EQ(input->Release(), 0);
5014     EXPECT_EQ(session->Release(), 0);
5015 }
5016 
5017 /*
5018  * Feature: Framework
5019  * Function: Test HCameraService in UpdateSkinSmoothSetting,
5020  *              UpdateFaceSlenderSetting, UpdateSkinToneSetting
5021  * SubFunction: NA
5022  * FunctionPoints: NA
5023  * EnvConditions: NA
5024  * CaseDescription: Test HCameraService in UpdateSkinSmoothSetting,
5025  *              UpdateFaceSlenderSetting, UpdateSkinToneSetting
5026  */
5027 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_045, TestSize.Level0)
5028 {
5029     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5030     auto hCameraService = new HCameraService(0, true);
5031     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
5032 
5033     EXPECT_EQ(hCameraService->UpdateSkinSmoothSetting(metadata, 0), CAMERA_OK);
5034     EXPECT_EQ(hCameraService->UpdateSkinSmoothSetting(metadata, 1), CAMERA_OK);
5035     EXPECT_EQ(hCameraService->UpdateSkinSmoothSetting(nullptr, 1), CAMERA_OK);
5036     EXPECT_EQ(hCameraService->UpdateFaceSlenderSetting(metadata, 0), CAMERA_OK);
5037     EXPECT_EQ(hCameraService->UpdateFaceSlenderSetting(metadata, 1), CAMERA_OK);
5038     EXPECT_EQ(hCameraService->UpdateFaceSlenderSetting(nullptr, 1), CAMERA_OK);
5039     EXPECT_EQ(hCameraService->UpdateSkinToneSetting(metadata, 0), CAMERA_OK);
5040     EXPECT_EQ(hCameraService->UpdateSkinToneSetting(metadata, 1), CAMERA_OK);
5041     EXPECT_EQ(hCameraService->UpdateSkinToneSetting(nullptr, 1), CAMERA_OK);
5042 }
5043 
5044 /*
5045  * Feature: Framework
5046  * Function: Test !IsSessionConfiged() || input == nullptr in CanAddInput
5047  * SubFunction: NA
5048  * FunctionPoints: NA
5049  * EnvConditions: NA
5050  * CaseDescription: Test !IsSessionConfiged() || input == nullptr in CanAddInput
5051  */
5052 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_046, TestSize.Level0)
5053 {
5054     InSequence s;
5055     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5056     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5057     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5058     sptr<CaptureInput> input1 = nullptr;
5059     ASSERT_NE(input, nullptr);
5060 
5061     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5062     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5063     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5064     std::string cameraSettings = camInput->GetCameraSettings();
5065     camInput->SetCameraSettings(cameraSettings);
5066     camInput->GetCameraDevice()->Open();
5067 
5068     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5069     ASSERT_NE(session, nullptr);
5070     sptr<CaptureOutput> preview = CreatePreviewOutput();
5071     ASSERT_NE(preview, nullptr);
5072 
5073     EXPECT_EQ(session->CanAddInput(input), false);
5074     EXPECT_EQ(session->BeginConfig(), 0);
5075     EXPECT_EQ(session->CanAddInput(input), true);
5076     EXPECT_EQ(session->CanAddInput(input1), false);
5077     session->innerCaptureSession_ = nullptr;
5078     EXPECT_EQ(session->CanAddInput(input), false);
5079 
5080     EXPECT_EQ(session->AddInput(input), OPERATION_NOT_ALLOWED);
5081     EXPECT_EQ(session->AddOutput(preview), OPERATION_NOT_ALLOWED);
5082 
5083     EXPECT_EQ(session->CommitConfig(), OPERATION_NOT_ALLOWED);
5084 
5085     EXPECT_EQ(session->RemoveOutput(preview), OPERATION_NOT_ALLOWED);
5086     EXPECT_EQ(session->RemoveInput(input), OPERATION_NOT_ALLOWED);
5087     EXPECT_EQ(preview->Release(), 0);
5088     EXPECT_EQ(input->Release(), 0);
5089 }
5090 
5091 /*
5092  * Feature: Framework
5093  * Function: Test !IsSessionConfiged() || output == nullptr in CanAddOutput
5094  * SubFunction: NA
5095  * FunctionPoints: NA
5096  * EnvConditions: NA
5097  * CaseDescription: Test !IsSessionConfiged() || output == nullptr in CanAddOutput
5098  */
5099 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_047, TestSize.Level0)
5100 {
5101     InSequence s;
5102     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5103     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5104     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5105 
5106     ASSERT_NE(input, nullptr);
5107 
5108     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5109     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5110     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5111     std::string cameraSettings = camInput->GetCameraSettings();
5112     camInput->SetCameraSettings(cameraSettings);
5113     camInput->GetCameraDevice()->Open();
5114 
5115     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5116     ASSERT_NE(session, nullptr);
5117     sptr<CaptureOutput> preview = CreatePreviewOutput();
5118     sptr<CaptureOutput> output = nullptr;
5119     ASSERT_NE(preview, nullptr);
5120 
5121     EXPECT_EQ(session->CanAddOutput(preview), false);
5122     EXPECT_EQ(session->BeginConfig(), 0);
5123     EXPECT_EQ(session->CanAddOutput(output), false);
5124     preview->Release();
5125     EXPECT_EQ(session->CanAddOutput(preview), false);
5126 
5127     EXPECT_EQ(input->Close(), 0);
5128 }
5129 
5130 /*
5131  * Feature: Framework
5132  * Function: Test VerifyAbility, SetBeauty
5133  * SubFunction: NA
5134  * FunctionPoints: NA
5135  * EnvConditions: NA
5136  * CaseDescription: Test VerifyAbility, SetBeauty
5137  */
5138 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_048, TestSize.Level0)
5139 {
5140     InSequence s;
5141     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5142     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5143     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5144     ASSERT_NE(input, nullptr);
5145 
5146     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5147     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5148     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5149     std::string cameraSettings = camInput->GetCameraSettings();
5150     camInput->SetCameraSettings(cameraSettings);
5151     camInput->GetCameraDevice()->Open();
5152 
5153     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5154     ASSERT_NE(session, nullptr);
5155     sptr<CaptureOutput> preview = CreatePreviewOutput();
5156     ASSERT_NE(preview, nullptr);
5157 
5158     EXPECT_EQ(session->BeginConfig(), 0);
5159 
5160     EXPECT_EQ(session->AddInput(input), 0);
5161     EXPECT_EQ(session->AddOutput(preview), 0);
5162 
5163     EXPECT_EQ(session->VerifyAbility(static_cast<uint32_t>(OHOS_ABILITY_SCENE_FILTER_TYPES)), CAMERA_INVALID_ARG);
5164     session->LockForControl();
5165     session->SetBeauty(FACE_SLENDER, 3);
5166     session->UnlockForControl();
5167 
5168     EXPECT_EQ(session->CommitConfig(), 0);
5169 
5170     EXPECT_EQ(preview->Release(), 0);
5171     EXPECT_EQ(input->Release(), 0);
5172     EXPECT_EQ(session->Release(), 0);
5173 }
5174 
5175 /*
5176  * Feature: Framework
5177  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in
5178  *          AttachSketchSurface, CreateSketchWrapper,
5179  *          GetSketchRatio, GetDeviceMetadata, OnSketchStatusChanged, StartSketch, StopSketch
5180  * SubFunction: NA
5181  * FunctionPoints: NA
5182  * EnvConditions: NA
5183  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged()
5184  *          in AttachSketchSurface, CreateSketchWrapper, GetSketchRatio,
5185  *          GetDeviceMetadata, OnSketchStatusChanged, StartSketch, StopSketch
5186  */
5187 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_049, TestSize.Level0)
5188 {
5189     InSequence s;
5190     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5191     Size previewSize = {.width = 1440, .height = 1080};
5192 
5193     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5194     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5195     ASSERT_NE(input, nullptr);
5196 
5197     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5198     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5199     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5200     std::string cameraSettings = camInput->GetCameraSettings();
5201     camInput->SetCameraSettings(cameraSettings);
5202     camInput->GetCameraDevice()->Open();
5203 
5204     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5205     ASSERT_NE(session, nullptr);
5206     sptr<CaptureOutput> preview = CreatePreviewOutput();
5207     ASSERT_NE(preview, nullptr);
5208     auto previewOutput = (sptr<PreviewOutput>&)preview;
5209 
5210     EXPECT_EQ(session->BeginConfig(), 0);
5211     EXPECT_EQ(session->AddInput(input), 0);
5212     EXPECT_EQ(session->AddOutput(preview), 0);
5213 
5214     previewOutput->SetSession(session);
5215     EXPECT_EQ(previewOutput->AttachSketchSurface(surface), CameraErrorCode::SESSION_NOT_CONFIG);
5216     EXPECT_EQ(previewOutput->CreateSketchWrapper(previewSize), 0);
5217     EXPECT_EQ(previewOutput->GetSketchRatio(), -1.0);
5218     EXPECT_NE(previewOutput->GetDeviceMetadata(), nullptr);
5219     previewOutput->FindSketchSize();
5220     previewOutput->OnSketchStatusChanged(SketchStatus::STOPED);
5221     EXPECT_EQ(previewOutput->StartSketch(), SESSION_NOT_CONFIG);
5222     EXPECT_EQ(previewOutput->StopSketch(), SESSION_NOT_CONFIG);
5223 
5224     EXPECT_EQ(session->CommitConfig(), 0);
5225     EXPECT_EQ(previewOutput->StartSketch(), SERVICE_FATL_ERROR);
5226     EXPECT_EQ(previewOutput->StopSketch(), SERVICE_FATL_ERROR);
5227 
5228     previewOutput->sketchWrapper_ = std::make_shared<SketchWrapper>(previewOutput->GetStream(), previewSize);
5229     EXPECT_EQ(previewOutput->StartSketch(), SERVICE_FATL_ERROR);
5230     EXPECT_EQ(previewOutput->StopSketch(), SERVICE_FATL_ERROR);
5231     EXPECT_EQ(previewOutput->AttachSketchSurface(surface), SERVICE_FATL_ERROR); // Need EnableSketch
5232 
5233     EXPECT_EQ(session->RemoveOutput(preview), OPERATION_NOT_ALLOWED);
5234     EXPECT_EQ(session->RemoveInput(input), OPERATION_NOT_ALLOWED);
5235     EXPECT_EQ(preview->Release(), 0);
5236     EXPECT_EQ(input->Release(), 0);
5237     EXPECT_EQ(session->Release(), 0);
5238 }
5239 
5240 /*
5241  * Feature: Framework
5242  * Function: Test !IsSessionCommited() && !IsSessionConfiged() in OnNativeRegisterCallback,
5243  *          OnNativeUnregisterCallback, FindSketchSize
5244  * SubFunction: NA
5245  * FunctionPoints: NA
5246  * EnvConditions: NA
5247  * CaseDescription: Test !IsSessionCommited() && !IsSessionConfiged() in
5248  *          OnNativeRegisterCallback, OnNativeUnregisterCallback, FindSketchSize
5249  */
5250 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_050, TestSize.Level0)
5251 {
5252     InSequence s;
5253     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5254     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5255     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5256     ASSERT_NE(input, nullptr);
5257 
5258     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5259     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5260     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5261     std::string cameraSettings = camInput->GetCameraSettings();
5262     camInput->SetCameraSettings(cameraSettings);
5263     camInput->GetCameraDevice()->Open();
5264 
5265     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5266     ASSERT_NE(session, nullptr);
5267     sptr<CaptureOutput> preview = CreatePreviewOutput();
5268     ASSERT_NE(preview, nullptr);
5269     auto previewOutput = (sptr<PreviewOutput>&)preview;
5270 
5271     EXPECT_EQ(session->BeginConfig(), 0);
5272     EXPECT_EQ(session->AddInput(input), 0);
5273 
5274     EXPECT_EQ(session->AddOutput(preview), 0);
5275 
5276     previewOutput->SetSession(session);
5277     previewOutput->FindSketchSize();
5278 
5279     std::string eventString = "test";
5280     previewOutput->OnNativeRegisterCallback(eventString);
5281     previewOutput->OnNativeUnregisterCallback(eventString);
5282     eventString = "sketchStatusChanged";
5283     previewOutput->OnNativeRegisterCallback(eventString);
5284     previewOutput->OnNativeUnregisterCallback(eventString);
5285 
5286     EXPECT_EQ(session->CommitConfig(), 0);
5287 
5288     eventString = "test";
5289     previewOutput->OnNativeRegisterCallback(eventString);
5290     previewOutput->OnNativeUnregisterCallback(eventString);
5291     eventString = "sketchStatusChanged";
5292     previewOutput->OnNativeRegisterCallback(eventString);
5293     previewOutput->OnNativeUnregisterCallback(eventString);
5294 
5295     EXPECT_EQ(preview->Release(), 0);
5296     EXPECT_EQ(input->Release(), 0);
5297     EXPECT_EQ(session->Release(), 0);
5298 }
5299 
5300 /*
5301  * Feature: Framework
5302  * Function: Test GetSketchReferenceFovRatio, UpdateSketchReferenceFovRatio
5303  * SubFunction: NA
5304  * FunctionPoints: NA
5305  * EnvConditions: NA
5306  * CaseDescription: Test GetSketchReferenceFovRatio, UpdateSketchReferenceFovRatio
5307  */
5308 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_051, TestSize.Level0)
5309 {
5310     InSequence s;
5311     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5312     Size previewSize = { .width = 1440, .height = 1080 };
5313     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5314     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5315     ASSERT_NE(input, nullptr);
5316 
5317     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5318     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5319     sptr<CameraInput> camInput = (sptr<CameraInput>&)input;
5320     std::string cameraSettings = camInput->GetCameraSettings();
5321     camInput->SetCameraSettings(cameraSettings);
5322     camInput->GetCameraDevice()->Open();
5323 
5324     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5325     ASSERT_NE(session, nullptr);
5326 
5327     std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata = cameras[0]->GetMetadata();
5328     ASSERT_NE(deviceMetadata, nullptr);
5329     session->GetFeaturesMode();
5330     CameraFormat previewFormat = CAMERA_FORMAT_YCBCR_420_888;
5331     Profile previewProfile = Profile(previewFormat, previewSize);
5332     sptr<CaptureOutput> preview = cameraManager->CreatePreviewOutput(previewProfile, surface);
5333     ASSERT_NE(preview, nullptr);
5334     auto previewOutput = (sptr<PreviewOutput>&)preview;
5335 
5336     SketchWrapper* sketchWrapper = new (std::nothrow) SketchWrapper(previewOutput->GetStream(), previewSize);
5337     ASSERT_NE(sketchWrapper, nullptr);
5338     std::shared_ptr<PreviewStateCallback> setCallback =
5339         std::make_shared<TestPreviewOutputCallback>("PreviewStateCallback");
5340     ASSERT_NE(setCallback, nullptr);
5341     camera_metadata_item_t item;
5342     OHOS::Camera::FindCameraMetadataItem(deviceMetadata->get(), OHOS_CONTROL_ZOOM_RATIO, &item);
5343 
5344     auto sketchReferenceFovRangeVec = std::vector<SketchReferenceFovRange>(5);
5345     SketchReferenceFovRange sketchReferenceFovRange = { .zoomMin = -1.0f, .zoomMax = -1.0f, .referenceValue = -1.0f };
5346     sketchReferenceFovRangeVec[0] = sketchReferenceFovRange;
5347     sketchReferenceFovRange = { .zoomMin = -1.0f, .zoomMax = 100.0f, .referenceValue = -1.0f };
5348     SceneFeaturesMode illegalFeaturesMode(static_cast<SceneMode>(-1), {});
5349     SketchWrapper::g_sketchReferenceFovRatioMap_[illegalFeaturesMode] = sketchReferenceFovRangeVec;
5350     EXPECT_EQ(sketchWrapper->GetSketchReferenceFovRatio(illegalFeaturesMode, -1.0f), -1.0f);
5351     sketchReferenceFovRangeVec[1] = sketchReferenceFovRange;
5352     sketchReferenceFovRange = { .zoomMin = 100.0f, .zoomMax = 1.0f, .referenceValue = -1.0f };
5353     sketchReferenceFovRangeVec[2] = sketchReferenceFovRange;
5354     sketchReferenceFovRange = { .zoomMin = 100.0f, .zoomMax = 100.0f, .referenceValue = -1.0f };
5355     sketchReferenceFovRangeVec[3] = sketchReferenceFovRange;
5356     sketchReferenceFovRange = { .zoomMin = 100.0f, .zoomMax = 200.0f, .referenceValue = -1.0f };
5357     sketchReferenceFovRangeVec[4] = sketchReferenceFovRange;
5358 
5359     SceneFeaturesMode illegalFeaturesMode2(static_cast<SceneMode>(100), {});
5360     SketchWrapper::g_sketchReferenceFovRatioMap_[illegalFeaturesMode2] = sketchReferenceFovRangeVec;
5361     EXPECT_EQ(sketchWrapper->GetSketchReferenceFovRatio(illegalFeaturesMode2, -1.0f), -1.0f);
5362     EXPECT_EQ(sketchWrapper->GetSketchReferenceFovRatio(illegalFeaturesMode2, 200.0f), -1.0f);
5363     EXPECT_EQ(sketchWrapper->GetSketchReferenceFovRatio(illegalFeaturesMode2, 100.0f), -1.0f);
5364     sketchWrapper->UpdateSketchReferenceFovRatio(item);
5365 
5366     EXPECT_EQ(preview->Release(), 0);
5367     EXPECT_EQ(input->Release(), 0);
5368     EXPECT_EQ(session->Release(), 0);
5369 }
5370 
5371 /*
5372  * Feature: Framework
5373  * Function: Test cameramanager with updatetorchmode
5374  * SubFunction: NA
5375  * FunctionPoints: NA
5376  * EnvConditions: NA
5377  * CaseDescription: Test cameramanager with updatetorchmode
5378  */
5379 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_052, TestSize.Level0)
5380 {
5381     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5382     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], 0);
5383 
5384     SceneMode mode = PORTRAIT;
5385     cameraManager->SetServiceProxy(nullptr);
5386     cameraManager->CreateCaptureSession(mode);
5387     cameraManager->ClearCameraDeviceListCache();
5388 
5389     TorchMode mode1 = TorchMode::TORCH_MODE_OFF;
5390     TorchMode mode2 = TorchMode::TORCH_MODE_ON;
5391     cameraManager->torchMode_ = mode1;
5392     cameraManager->UpdateTorchMode(mode1);
5393     cameraManager->UpdateTorchMode(mode2);
5394 }
5395 
5396 /*
5397  * Feature: Framework
5398  * Function: Test cameramanager with parsebasiccapability
5399  * SubFunction: NA
5400  * FunctionPoints: NA
5401  * EnvConditions: NA
5402  * CaseDescription: Test cameramanager with parsebasiccapability
5403  */
5404 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_053, TestSize.Level0)
5405 {
5406     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5407     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], 0);
5408 
5409     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
5410     camera_metadata_item_t item;
5411     OHOS::Camera::FindCameraMetadataItem(metadata->get(), OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS, &item);
5412     CameraManager::ProfilesWrapper wrapper = {};
5413     cameraManager->ParseBasicCapability(wrapper, metadata, item);
5414 }
5415 
5416 /*
5417  * Feature: Framework
5418  * Function: Test cameramanager with no cameraid and cameraobjlist
5419  * SubFunction: NA
5420  * FunctionPoints: NA
5421  * EnvConditions: NA
5422  * CaseDescription: Test cameramanager with no cameraid and cameraobjlist
5423  */
5424 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_054, TestSize.Level0)
5425 {
5426     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5427     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], 0);
5428 
5429     pid_t pid = 0;
5430     cameraManager->CameraServerDied(pid);
5431     sptr<ICameraServiceCallback> cameraServiceCallback = nullptr;
5432     cameraManager->SetCameraServiceCallback(cameraServiceCallback);
5433     sptr<ITorchServiceCallback> torchServiceCallback = nullptr;
5434     cameraManager->SetTorchServiceCallback(torchServiceCallback);
5435     sptr<ICameraMuteServiceCallback> cameraMuteServiceCallback = nullptr;
5436     cameraManager->SetCameraMuteServiceCallback(cameraMuteServiceCallback);
5437     float level = 9.2;
5438     int32_t ret = cameraManager->SetTorchLevel(level);
5439     EXPECT_EQ(ret, 7400201);
5440     string cameraId = "";
5441     int activeTime = 0;
5442     EffectParam effectParam = {0, 0, 0};
5443     ret = cameraManager->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::TRANSIENT_ACTIVE_PARAM_OHOS,
5444         activeTime, effectParam);
5445     EXPECT_EQ(ret, 7400201);
5446     cameraManager->cameraDeviceList_ = {};
5447     bool isTorchSupported = cameraManager->IsTorchSupported();
5448     EXPECT_EQ(isTorchSupported, false);
5449 }
5450 
5451 /*
5452  * Feature: Framework
5453  * Function: Test cameramanager with serviceProxy_ is nullptr
5454  * SubFunction: NA
5455  * FunctionPoints: NA
5456  * EnvConditions: NA
5457  * CaseDescription: Test cameramanager with serviceProxy_ is nullptr
5458  */
5459 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_055, TestSize.Level0)
5460 {
5461     sptr<ICameraServiceCallback> callback = new(std::nothrow) CameraStatusServiceCallback(cameraManager);
5462     ASSERT_NE(callback, nullptr);
5463     cameraManager->cameraSvcCallback_  = callback;
5464 
5465     pid_t pid = 0;
5466     cameraManager->SetServiceProxy(nullptr);
5467     cameraManager->CameraServerDied(pid);
5468     sptr<ICameraServiceCallback> cameraServiceCallback = nullptr;
5469     cameraManager->SetCameraServiceCallback(cameraServiceCallback);
5470     sptr<ITorchServiceCallback> torchServiceCallback = nullptr;
5471     cameraManager->SetTorchServiceCallback(torchServiceCallback);
5472     sptr<ICameraMuteServiceCallback> cameraMuteServiceCallback = nullptr;
5473     cameraManager->SetCameraMuteServiceCallback(cameraMuteServiceCallback);
5474 
5475     cameraManager->cameraDeviceList_ = {};
5476     string cameraId = "";
5477     cameraManager->GetCameraDeviceFromId(cameraId);
5478     bool isTorchSupported = cameraManager->IsTorchSupported();
5479     EXPECT_EQ(isTorchSupported, false);
5480 }
5481 
5482 /*
5483  * Feature: Framework
5484  * Function: Test cameramanager with preswitchcamera
5485  * SubFunction: NA
5486  * FunctionPoints: NA
5487  * EnvConditions: NA
5488  * CaseDescription: Test cameramanager with preswitchcamera
5489  */
5490 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_056, TestSize.Level0)
5491 {
5492     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5493     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], 0);
5494 
5495     std::string cameraId = cameras[0]->GetID();
5496     int32_t ret = cameraManager->PreSwitchCamera(cameraId);
5497     EXPECT_EQ(ret, 7400201);
5498 
5499     cameraManager->SetServiceProxy(nullptr);
5500     cameraManager->PreSwitchCamera(cameraId);
5501     EXPECT_EQ(ret, 7400201);
5502 }
5503 
5504 /*
5505  * Feature: Framework
5506  * Function: Test cameradevice with position and zoomratiorange
5507  * SubFunction: NA
5508  * FunctionPoints: NA
5509  * EnvConditions: NA
5510  * CaseDescription: Test cameradevice with position and zoomratiorange
5511  */
5512 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_057, TestSize.Level0)
5513 {
5514     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5515 
5516     cameras[0]->foldScreenType_ = CAMERA_FOLDSCREEN_INNER;
5517     cameras[0]->cameraPosition_ = CAMERA_POSITION_FRONT;
5518     cameras[0]->GetPosition();
5519     EXPECT_EQ(cameras[0]->GetPosition(), 2);
5520 
5521     cameras[0]->zoomRatioRange_ = {1.1, 2.1};
5522     EXPECT_EQ(cameras[0]->GetZoomRatioRange(), cameras[0]->zoomRatioRange_);
5523 }
5524 
5525 /*
5526  * Feature: Framework
5527  * Function: Test camerainput with cameraserverdied
5528  * SubFunction: NA
5529  * FunctionPoints: NA
5530  * EnvConditions: NA
5531  * CaseDescription: Test camerainput with cameraserverdied
5532  */
5533 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_058, TestSize.Level0)
5534 {
5535     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5536     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5537     ASSERT_NE(input, nullptr);
5538     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5539 
5540     pid_t pid = 0;
5541     camInput->CameraServerDied(pid);
5542 }
5543 
5544 /*
5545  * Feature: Framework
5546  * Function: Test camerainput with deviceObj_ is nullptr
5547  * SubFunction: NA
5548  * FunctionPoints: NA
5549  * EnvConditions: NA
5550  * CaseDescription: Test camerainput with deviceObj_ is nullptr
5551  */
5552 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_059, TestSize.Level0)
5553 {
5554     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5555 
5556     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5557     ASSERT_NE(input, nullptr);
5558     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5559 
5560     pid_t pid = 0;
5561     std::shared_ptr<TestDeviceCallback> setCallback = std::make_shared<TestDeviceCallback>("InputCallback");
5562     camInput->deviceObj_ = nullptr;
5563     camInput->SetErrorCallback(setCallback);
5564     camInput->CameraServerDied(pid);
5565 }
5566 
5567 /*
5568  * Feature: Framework
5569  * Function: Test metadataoutput with cameraserverdied and stop
5570  * SubFunction: NA
5571  * FunctionPoints: NA
5572  * EnvConditions: NA
5573  * CaseDescription: Test metadataoutput with cameraserverdied and stop
5574  */
5575 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_060, TestSize.Level0)
5576 {
5577     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5578     sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
5579     ASSERT_NE(output, nullptr);
5580     sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
5581 
5582     pid_t pid = 0;
5583     metadatOutput->CameraServerDied(pid);
5584     EXPECT_EQ(metadatOutput->Stop(), CameraErrorCode::SERVICE_FATL_ERROR);
5585 }
5586 
5587 /*
5588  * Feature: Framework
5589  * Function: Test metadataoutput with stream_ is nullptr
5590  * SubFunction: NA
5591  * FunctionPoints: NA
5592  * EnvConditions: NA
5593  * CaseDescription: Test metadataoutput with stream_ is nullptr
5594  */
5595 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_061, TestSize.Level0)
5596 {
5597     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5598 
5599     sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
5600     ASSERT_NE(output, nullptr);
5601     sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
5602 
5603     pid_t pid = 0;
5604     metadatOutput->stream_ = nullptr;
5605     metadatOutput->CameraServerDied(pid);
5606     EXPECT_EQ(metadatOutput->Stop(), CameraErrorCode::SERVICE_FATL_ERROR);
5607     EXPECT_EQ(metadatOutput->Release(), CameraErrorCode::SERVICE_FATL_ERROR);
5608 }
5609 
5610 /*
5611  * Feature: Framework
5612  * Function: Test metadataoutput with surface_ is nullptr
5613  * SubFunction: NA
5614  * FunctionPoints: NA
5615  * EnvConditions: NA
5616  * CaseDescription: Test metadataoutput with surface_ is nullptr
5617  */
5618 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_062, TestSize.Level0)
5619 {
5620     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5621 
5622     sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
5623     ASSERT_NE(output, nullptr);
5624     sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
5625 
5626     metadatOutput->surface_ = nullptr;
5627     EXPECT_EQ(metadatOutput->Release(), 0);
5628 }
5629 
5630 /*
5631  * Feature: Framework
5632  * Function: Test metadataoutput with start when session_ is nullptr
5633  * SubFunction: NA
5634  * FunctionPoints: NA
5635  * EnvConditions: NA
5636  * CaseDescription: Test metadataoutput with start when session_ is nullptr
5637  */
5638 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_063, TestSize.Level0)
5639 {
5640     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5641 
5642     sptr<CaptureOutput> metadata = cameraManager->CreateMetadataOutput();
5643     ASSERT_NE(metadata, nullptr);
5644     sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)metadata;
5645 
5646     metadatOutput->session_ = nullptr;
5647     EXPECT_EQ(metadatOutput->Start(), CameraErrorCode::SUCCESS);
5648 }
5649 
5650 /*
5651  * Feature: Framework
5652  * Function: Test metadataoutput with start when not commit
5653  * SubFunction: NA
5654  * FunctionPoints: NA
5655  * EnvConditions: NA
5656  * CaseDescription: Test metadataoutput with start when not commit
5657  */
5658 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_064, TestSize.Level0)
5659 {
5660     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5661 
5662     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5663     ASSERT_NE(input, nullptr);
5664 
5665     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5666     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5667     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5668     std::string cameraSettings = camInput->GetCameraSettings();
5669     camInput->SetCameraSettings(cameraSettings);
5670     camInput->GetCameraDevice()->Open();
5671 
5672     sptr<CaptureOutput> metadata = cameraManager->CreateMetadataOutput();
5673     ASSERT_NE(metadata, nullptr);
5674     sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)metadata;
5675 
5676     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5677     ASSERT_NE(session, nullptr);
5678 
5679     session->BeginConfig();
5680     session->AddInput(input);
5681     session->AddOutput(metadata);
5682 
5683     EXPECT_EQ(metadatOutput->Start(), CameraErrorCode::SUCCESS);
5684 
5685     session->CommitConfig();
5686     session->Start();
5687 
5688     input->Close();
5689 }
5690 
5691 /*
5692  * Feature: Framework
5693  * Function: Test metadataoutput when destruction
5694  * SubFunction: NA
5695  * FunctionPoints: NA
5696  * EnvConditions: NA
5697  * CaseDescription: Test metadataoutput when destruction
5698  */
5699 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_067, TestSize.Level0)
5700 {
5701     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5702 
5703     sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
5704     ASSERT_NE(output, nullptr);
5705     sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
5706 
5707     metadatOutput->Release();
5708     EXPECT_EQ(metadatOutput->Stop(), CameraErrorCode::SUCCESS);
5709 }
5710 
5711 /*
5712  * Feature: Framework
5713  * Function: Test photooutput with cameraserverdied
5714  * SubFunction: NA
5715  * FunctionPoints: NA
5716  * EnvConditions: NA
5717  * CaseDescription: Test photooutput with cameraserverdied
5718  */
5719 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_068, TestSize.Level0)
5720 {
5721     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5722 
5723     sptr<CaptureOutput> photoOutput = CreatePhotoOutput();
5724     ASSERT_NE(photoOutput, nullptr);
5725 
5726     pid_t pid = 0;
5727     photoOutput->CameraServerDied(pid);
5728 }
5729 
5730 /*
5731  * Feature: Framework
5732  * Function: Test photooutput with cameraserverdied
5733  * SubFunction: NA
5734  * FunctionPoints: NA
5735  * EnvConditions: NA
5736  * CaseDescription: Test photooutput with cameraserverdied
5737  */
5738 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_069, TestSize.Level0)
5739 {
5740     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5741 
5742     sptr<CaptureOutput> photoOutput = CreatePhotoOutput();
5743     ASSERT_NE(photoOutput, nullptr);
5744 
5745     pid_t pid = 0;
5746     std::shared_ptr<PhotoStateCallback> setCallback =
5747         std::make_shared<TestPhotoOutputCallback>("PhotoStateCallback");
5748     ((sptr<PhotoOutput>&)photoOutput)->SetCallback(setCallback);
5749     photoOutput->CameraServerDied(pid);
5750 }
5751 
5752 /*
5753  * Feature: Framework
5754  * Function: Test photooutput with cameraserverdied when stream_ is nullptr
5755  * SubFunction: NA
5756  * FunctionPoints: NA
5757  * EnvConditions: NA
5758  * CaseDescription: Test photooutput with cameraserverdied when stream_ is nullptr
5759  */
5760 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_070, TestSize.Level0)
5761 {
5762     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5763 
5764     sptr<CaptureOutput> photoOutput = CreatePhotoOutput();
5765     ASSERT_NE(photoOutput, nullptr);
5766 
5767     pid_t pid = 0;
5768     sptr<PhotoOutput> phtOutput = (sptr<PhotoOutput>&)photoOutput;
5769     phtOutput->stream_ = nullptr;
5770     photoOutput->CameraServerDied(pid);
5771 }
5772 
5773 /*
5774  * Feature: Framework
5775  * Function: Test photooutput with confirmcapture when stream_ is nullptr
5776  * SubFunction: NA
5777  * FunctionPoints: NA
5778  * EnvConditions: NA
5779  * CaseDescription: Test photooutput with confirmcapture when stream_ is nullptr
5780  */
5781 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_071, TestSize.Level0)
5782 {
5783     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5784     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5785     ASSERT_NE(input, nullptr);
5786 
5787     sptr<CaptureOutput> photoOutput = CreatePhotoOutput();
5788     ASSERT_NE(photoOutput, nullptr);
5789     sptr<PhotoOutput> phtOutput = (sptr<PhotoOutput>&)photoOutput;
5790 
5791     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5792     ASSERT_NE(session, nullptr);
5793 
5794     int32_t ret = session->BeginConfig();
5795     EXPECT_EQ(ret, 0);
5796 
5797     ret = session->AddOutput(photoOutput);
5798     session->CommitConfig();
5799 
5800     phtOutput->stream_ = nullptr;
5801     EXPECT_EQ(phtOutput->ConfirmCapture(), CameraErrorCode::SESSION_NOT_RUNNING);
5802 
5803     phtOutput->Release();
5804     EXPECT_EQ(phtOutput->ConfirmCapture(), CameraErrorCode::SESSION_NOT_RUNNING);
5805 
5806     session->Release();
5807 }
5808 
5809 /*
5810  * Feature: Framework
5811  * Function: Test previewoutput
5812  * SubFunction: NA
5813  * FunctionPoints: NA
5814  * EnvConditions: NA
5815  * CaseDescription: Test previewoutput
5816  */
5817 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_072, TestSize.Level0)
5818 {
5819     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5820 
5821     sptr<CaptureOutput> preview = CreatePreviewOutput();
5822     ASSERT_NE(preview, nullptr);
5823 
5824     auto previewOutput = (sptr<PreviewOutput>&)preview;
5825     previewOutput->stream_ = nullptr;
5826     previewOutput->session_ = nullptr;
5827 
5828     EXPECT_EQ(previewOutput->OnSketchStatusChanged(SketchStatus::STOPED), CAMERA_INVALID_STATE);
5829     EXPECT_EQ(previewOutput->IsSketchSupported(), false);
5830 
5831     Size previewSize = {};
5832     previewOutput->stream_ = nullptr;
5833     EXPECT_EQ(previewOutput->CreateSketchWrapper(previewSize), CameraErrorCode::SERVICE_FATL_ERROR);
5834 }
5835 
5836 /*
5837  * Feature: Framework
5838  * Function: Test previewoutput with callback and cameraserverdied
5839  * SubFunction: NA
5840  * FunctionPoints: NA
5841  * EnvConditions: NA
5842  * CaseDescription: Test previewoutput with callback and cameraserverdied
5843  */
5844 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_073, TestSize.Level0)
5845 {
5846     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5847 
5848     sptr<CaptureOutput> preview = CreatePreviewOutput();
5849     ASSERT_NE(preview, nullptr);
5850 
5851     auto previewOutput = (sptr<PreviewOutput>&)preview;
5852 
5853     std::string eventString = "sketchStatusChanged";
5854     previewOutput->sketchWrapper_ = nullptr;
5855     previewOutput->OnNativeRegisterCallback(eventString);
5856     previewOutput->OnNativeUnregisterCallback(eventString);
5857 
5858     pid_t pid = 0;
5859     previewOutput->stream_ = nullptr;
5860     previewOutput->CameraServerDied(pid);
5861 }
5862 
5863 /*
5864  * Feature: Framework
5865  * Function: Test sketchwrapper
5866  * SubFunction: NA
5867  * FunctionPoints: NA
5868  * EnvConditions: NA
5869  * CaseDescription: Test sketchwrapper
5870  */
5871 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_074, TestSize.Level0)
5872 {
5873     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5874 
5875     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5876     ASSERT_NE(input, nullptr);
5877     sptr<CameraInput> cameraInput = (sptr<CameraInput>&)input;
5878 
5879     std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata = cameraInput->GetCameraDeviceInfo()->GetMetadata();
5880     ASSERT_NE(deviceMetadata, nullptr);
5881 
5882     int32_t width = 1440;
5883     int32_t height = 1080;
5884     CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
5885     Size previewSize;
5886     previewSize.width = width;
5887     previewSize.height = height;
5888     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5889     Profile previewProfile = Profile(previewFormat, previewSize);
5890     sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, surface);
5891     ASSERT_NE(previewOutput, nullptr);
5892 
5893     Size sketchSize;
5894     sketchSize.width = 640;
5895     sketchSize.height = 480;
5896 
5897     SketchWrapper* sketchWrapper = new (std::nothrow) SketchWrapper(previewOutput->GetStream(), sketchSize);
5898     ASSERT_NE(sketchWrapper, nullptr);
5899     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5900     ASSERT_NE(session, nullptr);
5901     auto modeName = session->GetFeaturesMode();
5902     int ret = sketchWrapper->Init(deviceMetadata, modeName);
5903     EXPECT_EQ(ret, CAMERA_OK);
5904 
5905     sketchWrapper->sketchStream_ = nullptr;
5906     ret = sketchWrapper->AttachSketchSurface(nullptr);
5907     EXPECT_EQ(ret, CAMERA_INVALID_STATE);
5908     EXPECT_EQ(sketchWrapper->StartSketchStream(), CAMERA_UNKNOWN_ERROR);
5909 
5910     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata;
5911     sketchWrapper->UpdateSketchEnableRatio(metadata);
5912     sketchWrapper->UpdateSketchReferenceFovRatio(metadata);
5913     sketchWrapper->UpdateSketchConfigFromMoonCaptureBoostConfig(metadata);
5914 }
5915 
5916 /*
5917  * Feature: Framework
5918  * Function: Test sketchwrapper
5919  * SubFunction: NA
5920  * FunctionPoints: NA
5921  * EnvConditions: NA
5922  * CaseDescription: Test sketchwrapper
5923  */
5924 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_075, TestSize.Level0)
5925 {
5926     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5927 
5928     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5929     ASSERT_NE(input, nullptr);
5930     sptr<CameraInput> cameraInput = (sptr<CameraInput>&)input;
5931 
5932     std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata =
5933         cameraInput->GetCameraDeviceInfo()->GetMetadata();
5934     ASSERT_NE(deviceMetadata, nullptr);
5935 
5936     int32_t width = 1440;
5937     int32_t height = 1080;
5938     CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
5939     Size previewSize;
5940     previewSize.width = width;
5941     previewSize.height = height;
5942     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5943     Profile previewProfile = Profile(previewFormat, previewSize);
5944     sptr<CaptureOutput> previewOutput =
5945         cameraManager->CreatePreviewOutput(previewProfile, surface);
5946     ASSERT_NE(previewOutput, nullptr);
5947 
5948     Size sketchSize;
5949     sketchSize.width = 640;
5950     sketchSize.height = 480;
5951 
5952     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5953     ASSERT_NE(session, nullptr);
5954     SketchWrapper *sketchWrapper = new (std::nothrow)
5955         SketchWrapper(previewOutput->GetStream(), sketchSize);
5956     ASSERT_NE(sketchWrapper, nullptr);
5957 
5958     auto modeName = session->GetFeaturesMode();
5959     int ret = sketchWrapper->Init(deviceMetadata, modeName);
5960     EXPECT_EQ(ret, CAMERA_OK);
5961 
5962     float sketchRatio = sketchWrapper->GetSketchEnableRatio(session->GetFeaturesMode());
5963     EXPECT_EQ(sketchRatio, -1.0);
5964     sketchWrapper->hostStream_ = nullptr;
5965     EXPECT_EQ(sketchWrapper->UpdateSketchRatio(sketchRatio), CAMERA_INVALID_STATE);
5966     EXPECT_EQ(sketchWrapper->Destroy(), CAMERA_INVALID_STATE);
5967 }
5968 
5969 /*
5970  * Feature: Framework
5971  * Function: Test sketchwrapper with different tag
5972  * SubFunction: NA
5973  * FunctionPoints: NA
5974  * EnvConditions: NA
5975  * CaseDescription: Test sketchwrapper with different tag
5976  */
5977 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_076, TestSize.Level0)
5978 {
5979     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5980 
5981     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5982     ASSERT_NE(input, nullptr);
5983     sptr<CameraInput> cameraInput = (sptr<CameraInput>&)input;
5984 
5985     std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata =
5986         cameraInput->GetCameraDeviceInfo()->GetMetadata();
5987     ASSERT_NE(deviceMetadata, nullptr);
5988 
5989     int32_t width = 1440;
5990     int32_t height = 1080;
5991     CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
5992     Size previewSize;
5993     previewSize.width = width;
5994     previewSize.height = height;
5995     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5996     Profile previewProfile = Profile(previewFormat, previewSize);
5997     sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, surface);
5998     ASSERT_NE(previewOutput, nullptr);
5999 
6000     Size sketchSize;
6001     sketchSize.width = 640;
6002     sketchSize.height = 480;
6003 
6004     sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
6005     ASSERT_NE(session, nullptr);
6006     SketchWrapper *sketchWrapper = new (std::nothrow)
6007         SketchWrapper(previewOutput->GetStream(), sketchSize);
6008     ASSERT_NE(sketchWrapper, nullptr);
6009 
6010     auto modeName = session->GetFeaturesMode();
6011     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
6012     camera_metadata_item_t item;
6013     OHOS::Camera::FindCameraMetadataItem(metadata->get(), OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS, &item);
6014     const camera_device_metadata_tag_t tag1 = OHOS_CONTROL_ZOOM_RATIO;
6015     EXPECT_EQ(sketchWrapper->OnMetadataDispatch(modeName, tag1, item), 0);
6016     const camera_device_metadata_tag_t tag2 = OHOS_CONTROL_CAMERA_MACRO;
6017     EXPECT_EQ(sketchWrapper->OnMetadataDispatch(modeName, tag2, item), CAM_META_SUCCESS);
6018 }
6019 
6020 /*
6021  * Feature: Framework
6022  * Function: Test videooutput with cameraserverdied
6023  * SubFunction: NA
6024  * FunctionPoints: NA
6025  * EnvConditions: NA
6026  * CaseDescription: Test videooutput with cameraserverdied
6027  */
6028 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_077, TestSize.Level0)
6029 {
6030     int32_t width = VIDEO_DEFAULT_WIDTH;
6031     int32_t height = VIDEO_DEFAULT_HEIGHT;
6032     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
6033     CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
6034     Size videoSize;
6035     videoSize.width = width;
6036     videoSize.height = height;
6037     std::vector<int32_t> videoFramerates = {30, 30};
6038     VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
6039     sptr<VideoOutput> video = cameraManager->CreateVideoOutput(videoProfile, surface);
6040     ASSERT_NE(video, nullptr);
6041 
6042     pid_t pid = 0;
6043     video->CameraServerDied(pid);
6044 }
6045 
6046 /*
6047  * Feature: Framework
6048  * Function: Test videooutput with cameraserverdied when stream_ is nullptr
6049  * SubFunction: NA
6050  * FunctionPoints: NA
6051  * EnvConditions: NA
6052  * CaseDescription: Test videooutput with cameraserverdied when stream_ is nullptr
6053  */
6054 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_078, TestSize.Level0)
6055 {
6056     int32_t width = VIDEO_DEFAULT_WIDTH;
6057     int32_t height = VIDEO_DEFAULT_HEIGHT;
6058     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
6059     CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
6060     Size videoSize;
6061     videoSize.width = width;
6062     videoSize.height = height;
6063     std::vector<int32_t> videoFramerates = {30, 30};
6064     VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
6065     sptr<VideoOutput> video = cameraManager->CreateVideoOutput(videoProfile, surface);
6066     ASSERT_NE(video, nullptr);
6067 
6068     pid_t pid = 0;
6069     video->stream_ = nullptr;
6070     std::shared_ptr<VideoStateCallback> setCallback =
6071         std::make_shared<TestVideoOutputCallback>("VideoStateCallback");
6072     video->SetCallback(setCallback);
6073     video->CameraServerDied(pid);
6074 }
6075 
6076 /*
6077  * Feature: Framework
6078  * Function: Test videooutput when destruction
6079  * SubFunction: NA
6080  * FunctionPoints: NA
6081  * EnvConditions: NA
6082  * CaseDescription: Test videooutput when destruction
6083  */
6084 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_079, TestSize.Level0)
6085 {
6086     int32_t width = VIDEO_DEFAULT_WIDTH;
6087     int32_t height = VIDEO_DEFAULT_HEIGHT;
6088     sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
6089     CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
6090     Size videoSize;
6091     videoSize.width = width;
6092     videoSize.height = height;
6093     std::vector<int32_t> videoFramerates = {30, 30};
6094     VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
6095     sptr<VideoOutput> video = cameraManager->CreateVideoOutput(videoProfile, surface);
6096     ASSERT_NE(video, nullptr);
6097 }
6098 
6099 /*
6100  * Feature: Framework
6101  * Function: Test HCameraDevice when settings is nullptr
6102  * SubFunction: NA
6103  * FunctionPoints: NA
6104  * EnvConditions: NA
6105  * CaseDescription: Test HCameraDevice when settings is nullptr
6106  */
6107 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_080, TestSize.Level0)
6108 {
6109     std::vector<int32_t> result;
6110     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6111     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6112 
6113     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6114 
6115     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6116     std::string cameraId = cameras[0]->GetID();
6117     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6118     sptr<HCameraDevice> camDevice = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken);
6119     ASSERT_NE(camDevice, nullptr);
6120     std::shared_ptr<OHOS::Camera::CameraMetadata> settings;
6121     EXPECT_EQ(camDevice->UpdateSettingOnce(settings), CAMERA_INVALID_ARG);
6122 }
6123 
6124 /*
6125  * Feature: Framework
6126  * Function: Test HCameraDevice
6127  * SubFunction: NA
6128  * FunctionPoints: NA
6129  * EnvConditions: NA
6130  * CaseDescription: Test HCameraDevice
6131  */
6132 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_081, TestSize.Level0)
6133 {
6134     std::vector<int32_t> result;
6135     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6136     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6137 
6138     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6139 
6140     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6141     std::string cameraId = cameras[0]->GetID();
6142     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6143     sptr<HCameraDevice> camDevice = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken);
6144     ASSERT_NE(camDevice, nullptr);
6145     std::shared_ptr<OHOS::Camera::CameraMetadata> settings = cameras[0]->GetMetadata();
6146     EXPECT_EQ(camDevice->UpdateSettingOnce(settings), 0);
6147 
6148     camDevice->RegisterFoldStatusListener();
6149     camDevice->UnRegisterFoldStatusListener();
6150 }
6151 
6152 /*
6153  * Feature: Framework
6154  * Function: Test HCameraDevice
6155  * SubFunction: NA
6156  * FunctionPoints: NA
6157  * EnvConditions: NA
6158  * CaseDescription: Test HCameraDevice
6159  */
6160 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_082, TestSize.Level0)
6161 {
6162     std::vector<int32_t> result;
6163     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6164     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6165 
6166     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6167 
6168     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6169     std::string cameraId = cameras[0]->GetID();
6170     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6171     sptr<HCameraDevice> camDevice = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken);
6172     ASSERT_NE(camDevice, nullptr);
6173 
6174     camDevice->UnRegisterFoldStatusListener();
6175     camDevice->RegisterFoldStatusListener();
6176     camDevice->UnRegisterFoldStatusListener();
6177     camDevice->cameraHostManager_ = nullptr;
6178     camDevice->RegisterFoldStatusListener();
6179     camDevice->UnRegisterFoldStatusListener();
6180 
6181     std::vector<int32_t> results = {};
6182     EXPECT_EQ(camDevice->EnableResult(results), CAMERA_INVALID_ARG);
6183     EXPECT_EQ(camDevice->DisableResult(results), CAMERA_INVALID_ARG);
6184 
6185     std::shared_ptr<OHOS::Camera::CameraMetadata> metaIn;
6186     std::shared_ptr<OHOS::Camera::CameraMetadata> metaOut;
6187     EXPECT_EQ(camDevice->GetStatus(metaIn, metaOut), CAMERA_INVALID_ARG);
6188 
6189     camDevice->Close();
6190 }
6191 
6192 /*
6193  * Feature: Framework
6194  * Function: Test HCameraDevice when hdiCameraDevice_ is nullptr
6195  * SubFunction: NA
6196  * FunctionPoints: NA
6197  * EnvConditions: NA
6198  * CaseDescription: Test HCameraDevice when hdiCameraDevice_ is nullptr
6199  */
6200 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_083, TestSize.Level0)
6201 {
6202     std::vector<int32_t> result;
6203     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6204     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6205 
6206     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6207 
6208     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6209     std::string cameraId = cameras[0]->GetID();
6210     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6211     sptr<HCameraDevice> camDevice = new(std::nothrow)
6212         HCameraDevice(cameraHostManager, cameraId, callerToken);
6213     ASSERT_NE(camDevice, nullptr);
6214 
6215     camDevice->hdiCameraDevice_ = nullptr;
6216     EXPECT_EQ(camDevice->InitStreamOperator(), CAMERA_UNKNOWN_ERROR);
6217 }
6218 
6219 /*
6220  * Feature: Framework
6221  * Function: Test HCameraDevice when streamOperator_ is nullptr
6222  * SubFunction: NA
6223  * FunctionPoints: NA
6224  * EnvConditions: NA
6225  * CaseDescription: Test HCameraDevice when streamOperator_ is nullptr
6226  */
6227 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_084, TestSize.Level0)
6228 {
6229     std::vector<int32_t> result;
6230     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6231     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6232 
6233     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6234 
6235     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6236     std::string cameraId = cameras[0]->GetID();
6237     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6238     sptr<HCameraDevice> camDevice = new(std::nothrow)
6239         HCameraDevice(cameraHostManager, cameraId, callerToken);
6240     ASSERT_NE(camDevice, nullptr);
6241 
6242     std::vector<HDI::Camera::V1_1::StreamInfo_V1_1> streamInfos = {};
6243     camDevice->CreateStreams(streamInfos);
6244 
6245     std::shared_ptr<OHOS::Camera::CameraMetadata> deviceSettings = cameras[0]->GetMetadata();
6246     int32_t operationMode = 0;
6247     camDevice->streamOperator_ = nullptr;
6248     EXPECT_EQ(camDevice->CommitStreams(deviceSettings, operationMode), CAMERA_UNKNOWN_ERROR);
6249 }
6250 
6251 /*
6252  * Feature: Framework
6253  * Function: Test HCameraDevice when streamOperator is nullptr
6254  * SubFunction: NA
6255  * FunctionPoints: NA
6256  * EnvConditions: NA
6257  * CaseDescription: Test HCameraDevice when streamOperator is nullptr
6258  */
6259 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_085, TestSize.Level0)
6260 {
6261     std::vector<int32_t> result;
6262     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6263     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6264 
6265     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6266 
6267     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6268     std::string cameraId = cameras[0]->GetID();
6269     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6270     sptr<HCameraDevice> camDevice = new(std::nothrow)
6271         HCameraDevice(cameraHostManager, cameraId, callerToken);
6272     ASSERT_NE(camDevice, nullptr);
6273 
6274     std::vector<StreamInfo_V1_1> streamInfos = {};
6275     EXPECT_EQ(camDevice->UpdateStreams(streamInfos), CAMERA_UNKNOWN_ERROR);
6276 }
6277 
6278 /*
6279  * Feature: Framework
6280  * Function: Test HCameraDevice when streamOperatorCallback is nullptr
6281  * SubFunction: NA
6282  * FunctionPoints: NA
6283  * EnvConditions: NA
6284  * CaseDescription: Test HCameraDevice when streamOperatorCallback is nullptr
6285  */
6286 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_086, TestSize.Level0)
6287 {
6288     std::vector<int32_t> result;
6289     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6290     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6291 
6292     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6293 
6294     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6295     std::string cameraId = cameras[0]->GetID();
6296     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6297     sptr<HCameraDevice> camDevice = new(std::nothrow)
6298         HCameraDevice(cameraHostManager, cameraId, callerToken);
6299     ASSERT_NE(camDevice, nullptr);
6300 
6301     int32_t captureId = 0;
6302     const std::vector<int32_t> streamIds = {1, 2};
6303     EXPECT_EQ(camDevice->OnCaptureStarted(captureId, streamIds), CAMERA_INVALID_STATE);
6304 
6305     HDI::Camera::V1_2::CaptureStartedInfo it1;
6306     it1.streamId_ = 1;
6307     it1.exposureTime_ = 1;
6308     HDI::Camera::V1_2::CaptureStartedInfo it2;
6309     it2.streamId_ = 2;
6310     it2.exposureTime_ = 2;
6311     std::vector<OHOS::HDI::Camera::V1_2::CaptureStartedInfo> captureStartedInfo = {};
6312     captureStartedInfo.push_back(it1);
6313     captureStartedInfo.push_back(it2);
6314     EXPECT_EQ(camDevice->OnCaptureStarted_V1_2(captureId, captureStartedInfo), CAMERA_INVALID_STATE);
6315 }
6316 
6317 /*
6318  * Feature: Framework
6319  * Function: Test HCameraDevice when streamOperatorCallback is nullptr
6320  * SubFunction: NA
6321  * FunctionPoints: NA
6322  * EnvConditions: NA
6323  * CaseDescription: Test HCameraDevice when streamOperatorCallback is nullptr
6324  */
6325 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_087, TestSize.Level0)
6326 {
6327     std::vector<int32_t> result;
6328     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6329     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6330 
6331     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6332 
6333     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6334     std::string cameraId = cameras[0]->GetID();
6335     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6336     sptr<HCameraDevice> camDevice = new(std::nothrow)
6337         HCameraDevice(cameraHostManager, cameraId, callerToken);
6338     ASSERT_NE(camDevice, nullptr);
6339 
6340     int32_t captureId = 0;
6341     const std::vector<int32_t> streamIds = {1, 2};
6342     EXPECT_EQ(camDevice->OnCaptureStarted(captureId, streamIds), CAMERA_INVALID_STATE);
6343     const std::vector<OHOS::HDI::Camera::V1_2::CaptureStartedInfo> captureStartedInfo = {};
6344     EXPECT_EQ(camDevice->OnCaptureStarted_V1_2(captureId, captureStartedInfo), CAMERA_INVALID_STATE);
6345 
6346     CaptureEndedInfo it1;
6347     it1.streamId_ = 1;
6348     it1.frameCount_ = 1;
6349     CaptureEndedInfo it2;
6350     it2.streamId_ = 2;
6351     it2.frameCount_ = 2;
6352     std::vector<CaptureEndedInfo> captureEndedInfo = {};
6353     captureEndedInfo.push_back(it1);
6354     captureEndedInfo.push_back(it2);
6355     EXPECT_EQ(camDevice->OnCaptureEnded(captureId, captureEndedInfo), CAMERA_INVALID_STATE);
6356 }
6357 
6358 /*
6359  * Feature: Framework
6360  * Function: Test HCameraDevice when streamOperatorCallback is nullptr
6361  * SubFunction: NA
6362  * FunctionPoints: NA
6363  * EnvConditions: NA
6364  * CaseDescription: Test HCameraDevice when streamOperatorCallback is nullptr
6365  */
6366 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_088, TestSize.Level0)
6367 {
6368     std::vector<int32_t> result;
6369     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6370     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6371 
6372     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6373 
6374     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6375     std::string cameraId = cameras[0]->GetID();
6376     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6377     sptr<HCameraDevice> camDevice = new(std::nothrow)
6378         HCameraDevice(cameraHostManager, cameraId, callerToken);
6379     ASSERT_NE(camDevice, nullptr);
6380 
6381     int32_t captureId = 0;
6382     CaptureErrorInfo it1;
6383     it1.streamId_ = 2;
6384     it1.error_ = BUFFER_LOST;
6385     CaptureErrorInfo it2;
6386     it2.streamId_ = 1;
6387     it2.error_ =  BUFFER_LOST;
6388     std::vector<CaptureErrorInfo> captureErrorInfo = {};
6389     captureErrorInfo.push_back(it1);
6390     captureErrorInfo.push_back(it2);
6391     EXPECT_EQ(camDevice->OnCaptureError(captureId, captureErrorInfo), CAMERA_INVALID_STATE);
6392 
6393     const std::vector<int32_t> streamIds = {1, 2};
6394     uint64_t timestamp = 5;
6395     EXPECT_EQ(camDevice->OnFrameShutter(captureId, streamIds, timestamp), CAMERA_INVALID_STATE);
6396     EXPECT_EQ(camDevice->OnFrameShutterEnd(captureId, streamIds, timestamp), CAMERA_INVALID_STATE);
6397     EXPECT_EQ(camDevice->OnCaptureReady(captureId, streamIds, timestamp), CAMERA_INVALID_STATE);
6398 }
6399 
6400 /*
6401  * Feature: Framework
6402  * Function: Test HCameraDevice with CheckOnResultData
6403  * SubFunction: NA
6404  * FunctionPoints: NA
6405  * EnvConditions: NA
6406  * CaseDescription: Test HCameraDevice with CheckOnResultData
6407  */
6408 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_089, TestSize.Level0)
6409 {
6410     std::vector<int32_t> result;
6411     result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6412     result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6413 
6414     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6415 
6416     sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6417     std::string cameraId = cameras[0]->GetID();
6418     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6419     sptr<HCameraDevice> camDevice = new(std::nothrow)
6420         HCameraDevice(cameraHostManager, cameraId, callerToken);
6421     ASSERT_NE(camDevice, nullptr);
6422 
6423     std::shared_ptr<OHOS::Camera::CameraMetadata> cameraResult = cameras[0]->GetMetadata();
6424     camDevice->CheckOnResultData(nullptr);
6425     camDevice->CheckOnResultData(cameraResult);
6426 }
6427 
6428 /*
6429  * Feature: coverage
6430  * Function: Test HStreamRepeat
6431  * SubFunction: NA
6432  * FunctionPoints: NA
6433  * EnvConditions: NA
6434  * CaseDescription: Test HStreamRepeat
6435  */
6436 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_090, TestSize.Level0)
6437 {
6438     int32_t format = CAMERA_FORMAT_YUV_420_SP;
6439     int32_t width = PHOTO_DEFAULT_WIDTH;
6440     int32_t height = PHOTO_DEFAULT_HEIGHT;
6441 
6442     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6443     sptr<IBufferProducer> producer = Surface->GetProducer();
6444     auto streamRepeat = new (std::nothrow)
6445         HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6446     ASSERT_NE(streamRepeat, nullptr);
6447     sptr<HStreamRepeat> streamRepeat1 =
6448         new (std::nothrow) HStreamRepeat(producer, 4, 1280, 960, RepeatStreamType::PREVIEW);
6449     ASSERT_NE(streamRepeat1, nullptr);
6450 
6451     SketchStatus status = SketchStatus::STARTED;
6452     streamRepeat->repeatStreamType_ = RepeatStreamType::SKETCH;
6453     streamRepeat->parentStreamRepeat_ = streamRepeat1;
6454     streamRepeat->UpdateSketchStatus(status);
6455 }
6456 
6457 /*
6458  * Feature: coverage
6459  * Function: Test HStreamRepeat when status is STARTED
6460  * SubFunction: NA
6461  * FunctionPoints: NA
6462  * EnvConditions: NA
6463  * CaseDescription: Test HStreamRepeat when status is STARTED
6464  */
6465 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_091, TestSize.Level0)
6466 {
6467     int32_t format = CAMERA_FORMAT_YUV_420_SP;
6468     int32_t width = PHOTO_DEFAULT_WIDTH;
6469     int32_t height = PHOTO_DEFAULT_HEIGHT;
6470 
6471     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6472     sptr<IBufferProducer> producer = Surface->GetProducer();
6473     auto streamRepeat = new (std::nothrow)
6474         HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6475     ASSERT_NE(streamRepeat, nullptr);
6476 
6477     SketchStatus status = SketchStatus::STARTED;
6478     EXPECT_EQ(streamRepeat->OnSketchStatusChanged(status), 0);
6479 }
6480 
6481 /*
6482  * Feature: coverage
6483  * Function: Test HStreamRepeat when sketchStream is nullptr
6484  * SubFunction: NA
6485  * FunctionPoints: NA
6486  * EnvConditions: NA
6487  * CaseDescription: Test HStreamRepeat when sketchStream is nullptr
6488  */
6489 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_092, TestSize.Level0)
6490 {
6491     int32_t format = CAMERA_FORMAT_YUV_420_SP;
6492     int32_t width = PHOTO_DEFAULT_WIDTH;
6493     int32_t height = PHOTO_DEFAULT_HEIGHT;
6494 
6495     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6496     sptr<IBufferProducer> producer = Surface->GetProducer();
6497     auto streamRepeat = new (std::nothrow)
6498         HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6499     ASSERT_NE(streamRepeat, nullptr);
6500 
6501     sptr<IStreamRepeat> sketchStream = nullptr;
6502     float sketchRatio = 0;
6503     EXPECT_EQ(streamRepeat->ForkSketchStreamRepeat(0, 1, sketchStream, sketchRatio), CAMERA_INVALID_ARG);
6504     EXPECT_EQ(streamRepeat->ForkSketchStreamRepeat(1, 0, sketchStream, sketchRatio), CAMERA_INVALID_ARG);
6505 }
6506 
6507 /*
6508  * Feature: coverage
6509  * Function: Test HStreamRepeat when sketchStreamRepeat_ is nullptr
6510  * SubFunction: NA
6511  * FunctionPoints: NA
6512  * EnvConditions: NA
6513  * CaseDescription: Test HStreamRepeat when sketchStreamRepeat_ is nullptr
6514  */
6515 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_093, TestSize.Level0)
6516 {
6517     int32_t format = CAMERA_FORMAT_YUV_420_SP;
6518     int32_t width = PHOTO_DEFAULT_WIDTH;
6519     int32_t height = PHOTO_DEFAULT_HEIGHT;
6520 
6521     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6522     sptr<IBufferProducer> producer = Surface->GetProducer();
6523     auto streamRepeat = new (std::nothrow)
6524         HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6525     ASSERT_NE(streamRepeat, nullptr);
6526 
6527     float sketchRatio = 0;
6528     streamRepeat->sketchStreamRepeat_ = nullptr;
6529     EXPECT_EQ(streamRepeat->RemoveSketchStreamRepeat(), 0);
6530     EXPECT_EQ(streamRepeat->UpdateSketchRatio(sketchRatio), CAMERA_INVALID_STATE);
6531 }
6532 
6533 /*
6534  * Feature: coverage
6535  * Function: Test HStreamRepeat
6536  * SubFunction: NA
6537  * FunctionPoints: NA
6538  * EnvConditions: NA
6539  * CaseDescription: Test HStreamRepeat
6540  */
6541 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_094, TestSize.Level0)
6542 {
6543     int32_t format = CAMERA_FORMAT_YUV_420_SP;
6544     int32_t width = PHOTO_DEFAULT_WIDTH;
6545     int32_t height = PHOTO_DEFAULT_HEIGHT;
6546 
6547     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6548     sptr<IBufferProducer> producer = Surface->GetProducer();
6549     auto streamRepeat = new (std::nothrow)
6550         HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6551     ASSERT_NE(streamRepeat, nullptr);
6552 
6553     uint32_t interfaceCode = 5;
6554     EXPECT_EQ(streamRepeat->OperatePermissionCheck(interfaceCode), 0);
6555 }
6556 
6557 /*
6558  * Feature: coverage
6559  * Function: Test HCaptureSession when stream is nullptr
6560  * SubFunction: NA
6561  * FunctionPoints: NA
6562  * EnvConditions: NA
6563  * CaseDescription: Test HCaptureSession when stream is nullptr
6564  */
6565 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_095, TestSize.Level0)
6566 {
6567     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6568     SceneMode mode = PORTRAIT;
6569     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6570     ASSERT_NE(camSession, nullptr);
6571 
6572     std::vector<StreamInfo_V1_1> streamInfos = {};
6573     EXPECT_EQ(camSession->GetCurrentStreamInfos(streamInfos), 0);
6574     EXPECT_EQ(camSession->AddOutputStream(nullptr), CAMERA_INVALID_ARG);
6575     EXPECT_EQ(camSession->RemoveOutputStream(nullptr), CAMERA_INVALID_ARG);
6576 }
6577 
6578 /*
6579  * Feature: coverage
6580  * Function: Test HCaptureSession when cameraDevice_ is nullptr
6581  * SubFunction: NA
6582  * FunctionPoints: NA
6583  * EnvConditions: NA
6584  * CaseDescription: Test HCaptureSession when cameraDevice_ is nullptr
6585  */
6586 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_096, TestSize.Level0)
6587 {
6588     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6589     SceneMode mode = PORTRAIT;
6590     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6591     ASSERT_NE(camSession, nullptr);
6592 
6593     camSession->cameraDevice_ = nullptr;
6594     EXPECT_EQ(camSession->LinkInputAndOutputs(), CAMERA_INVALID_SESSION_CFG);
6595 }
6596 
6597 /*
6598  * Feature: coverage
6599  * Function: Test HCaptureSession with SetColorSpace
6600  * SubFunction: NA
6601  * FunctionPoints: NA
6602  * EnvConditions: NA
6603  * CaseDescription: Test HCaptureSession with SetColorSpace
6604  */
6605 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_097, TestSize.Level0)
6606 {
6607     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6608     SceneMode mode = PORTRAIT;
6609     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6610     ASSERT_NE(camSession, nullptr);
6611 
6612     bool isNeedUpdate = false;
6613     ColorSpace colorSpace = ColorSpace::SRGB;
6614     ColorSpace captureColorSpace = ColorSpace::SRGB;
6615     camSession->currColorSpace_ = ColorSpace::BT709;
6616     camSession->currCaptureColorSpace_ = ColorSpace::BT709;
6617     EXPECT_EQ(camSession->SetColorSpace(colorSpace, captureColorSpace, isNeedUpdate), CAMERA_INVALID_STATE);
6618     camSession->currColorSpace_ = ColorSpace::SRGB;
6619     EXPECT_EQ(camSession->SetColorSpace(colorSpace, captureColorSpace, isNeedUpdate), CAMERA_INVALID_STATE);
6620 }
6621 
6622 /*
6623  * Feature: coverage
6624  * Function: Test HCaptureSession with CheckIfColorSpaceMatchesFormat
6625  * SubFunction: NA
6626  * FunctionPoints: NA
6627  * EnvConditions: NA
6628  * CaseDescription: Test HCaptureSession with CheckIfColorSpaceMatchesFormat
6629  */
6630 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_098, TestSize.Level0)
6631 {
6632     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6633     SceneMode mode = PORTRAIT;
6634     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6635     ASSERT_NE(camSession, nullptr);
6636 
6637     camSession->RestartStreams();
6638 
6639     ColorSpace colorSpace = ColorSpace::SRGB;
6640     EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6641     colorSpace = ColorSpace::BT2020_HLG ;
6642     EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6643     colorSpace = ColorSpace::BT2020_PQ ;
6644     EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6645     colorSpace = ColorSpace::BT2020_HLG_LIMIT ;
6646     EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6647     colorSpace = ColorSpace::BT2020_PQ_LIMIT;
6648     EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6649 }
6650 
6651 /*
6652  * Feature: coverage
6653  * Function: Test HCaptureSession
6654  * SubFunction: NA
6655  * FunctionPoints: NA
6656  * EnvConditions: NA
6657  * CaseDescription: Test HCaptureSession
6658  */
6659 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_099, TestSize.Level0)
6660 {
6661     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6662     SceneMode mode = PORTRAIT;
6663     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6664     ASSERT_NE(camSession, nullptr);
6665 }
6666 
6667 /*
6668  * Feature: coverage
6669  * Function: Test HCaptureSession when isSessionStarted_ is true
6670  * SubFunction: NA
6671  * FunctionPoints: NA
6672  * EnvConditions: NA
6673  * CaseDescription: Test HCaptureSession when isSessionStarted_ is true
6674  */
6675 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_100, TestSize.Level0)
6676 {
6677     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6678     SceneMode mode = PORTRAIT;
6679     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6680     ASSERT_NE(camSession, nullptr);
6681 
6682     camSession->SetColorSpaceForStreams();
6683 
6684     std::vector<StreamInfo_V1_1> streamInfos = {};
6685     camSession->CancelStreamsAndGetStreamInfos(streamInfos);
6686 
6687     camSession->isSessionStarted_ = true;
6688     camSession->RestartStreams();
6689 }
6690 
6691 /*
6692  * Feature: coverage
6693  * Function: Test HCaptureSession when cameraDevice is nullptr
6694  * SubFunction: NA
6695  * FunctionPoints: NA
6696  * EnvConditions: NA
6697  * CaseDescription: Test HCaptureSession when cameraDevice is nullptr
6698  */
6699 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_101, TestSize.Level0)
6700 {
6701     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6702     SceneMode mode = PORTRAIT;
6703     sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6704     ASSERT_NE(camSession, nullptr);
6705 
6706     float currentFps = 0;
6707     float currentZoomRatio = 0;
6708     EXPECT_EQ(camSession->QueryFpsAndZoomRatio(currentFps, currentZoomRatio), false);
6709     std::vector<float> crossZoomAndTime = {0, 0};
6710     int32_t operationMode = 0;
6711     EXPECT_EQ(camSession->QueryZoomPerformance(crossZoomAndTime, operationMode), false);
6712     int32_t smoothZoomType = 0;
6713     float targetZoomRatio = 0;
6714     float duration = 0;
6715     EXPECT_EQ(camSession->SetSmoothZoom(smoothZoomType, operationMode,
6716         targetZoomRatio, duration), 11);
6717 }
6718 
6719 /*
6720  * Feature: Framework
6721  * Function: Test metadataoutput when appStateCallback_ is not nullptr
6722  * SubFunction: NA
6723  * FunctionPoints: NA
6724  * EnvConditions: NA
6725  * CaseDescription: Test metadataoutput when appStateCallback_ is not nullptr
6726  */
6727 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_102, TestSize.Level0)
6728 {
6729     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6730 
6731     sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
6732     ASSERT_NE(output, nullptr);
6733     sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
6734 
6735     std::shared_ptr<MetadataStateCallback> metadataStateCallback =
6736         std::make_shared<AppMetadataCallback>();
6737     metadatOutput->SetCallback(metadataStateCallback);
6738 
6739     pid_t pid = 0;
6740     metadatOutput->CameraServerDied(pid);
6741 }
6742 
6743 /*
6744  * Feature: coverage
6745  * Function: Test HStreamRepeat when repeatStreamType_ is SKETCH
6746  * SubFunction: NA
6747  * FunctionPoints: NA
6748  * EnvConditions: NA
6749  * CaseDescription: Test HStreamRepeat when repeatStreamType_ is SKETCH
6750  */
6751 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_103, TestSize.Level0)
6752 {
6753     int32_t format = CAMERA_FORMAT_YUV_420_SP;
6754     int32_t width = PHOTO_DEFAULT_WIDTH;
6755     int32_t height = PHOTO_DEFAULT_HEIGHT;
6756 
6757     sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6758     sptr<IBufferProducer> producer = Surface->GetProducer();
6759     auto streamRepeat = new (std::nothrow)
6760         HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6761     ASSERT_NE(streamRepeat, nullptr);
6762 
6763     StreamInfo_V1_1 streamInfo;
6764     streamRepeat->repeatStreamType_ = RepeatStreamType::SKETCH;
6765     streamRepeat->SetStreamInfo(streamInfo);
6766 }
6767 
6768 /*
6769  * Feature: Framework
6770  * Function: Test PortraitSession when output is nullptr
6771  * SubFunction: NA
6772  * FunctionPoints: NA
6773  * EnvConditions: NA
6774  * CaseDescription: Test PortraitSession when output is nullptr
6775  */
6776 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_104, TestSize.Level0)
6777 {
6778     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6779     SceneMode mode = PORTRAIT;
6780     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
6781     ASSERT_TRUE(modes.size() != 0);
6782 
6783     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
6784     ASSERT_NE(ability, nullptr);
6785     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
6786     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
6787     ASSERT_NE(input, nullptr);
6788     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
6789     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
6790     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
6791     std::string cameraSettings = camInput->GetCameraSettings();
6792     camInput->SetCameraSettings(cameraSettings);
6793     camInput->GetCameraDevice()->Open();
6794 
6795     sptr<CaptureOutput> preview = CreatePreviewOutput();
6796     ASSERT_NE(preview, nullptr);
6797     sptr<CaptureOutput> photo = CreatePhotoOutput();
6798     ASSERT_NE(photo, nullptr);
6799     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
6800     ASSERT_NE(captureSession, nullptr);
6801     sptr<PortraitSession> portraitSession = nullptr;
6802     portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
6803     ASSERT_NE(portraitSession, nullptr);
6804     sptr<CaptureOutput> output = nullptr;
6805     EXPECT_EQ(portraitSession->CanAddOutput(output), false);
6806     EXPECT_EQ(portraitSession->BeginConfig(), 0);
6807     EXPECT_EQ(portraitSession->AddInput(input), 0);
6808     EXPECT_EQ(portraitSession->AddOutput(preview), 0);
6809     EXPECT_EQ(portraitSession->AddOutput(photo), 0);
6810     EXPECT_EQ(portraitSession->CommitConfig(), 0);
6811 
6812     const float aperture = 0.1;
6813     EXPECT_EQ(portraitSession->CanAddOutput(output), false);
6814     std::vector<float> supportedVirtualApertures = {};
6815     std::vector<float> virtualApertures = {};
6816     portraitSession->GetSupportedVirtualApertures(virtualApertures);
6817     EXPECT_EQ(virtualApertures, supportedVirtualApertures);
6818     float virtualAperture = 0.0f;
6819     portraitSession->GetVirtualAperture(virtualAperture);
6820     EXPECT_EQ(virtualAperture, 0.0);
6821     portraitSession->SetVirtualAperture(aperture);
6822     std::vector<std::vector<float>> supportedPhysicalApertures;
6823     std::vector<std::vector<float>> physicalApertures;
6824     portraitSession->GetSupportedPhysicalApertures(physicalApertures);
6825     EXPECT_EQ(physicalApertures, supportedPhysicalApertures);
6826     float physicalAperture = 0.0f;
6827     portraitSession->GetPhysicalAperture(physicalAperture);
6828     EXPECT_EQ(physicalAperture, 0.0f);
6829     portraitSession->SetPhysicalAperture(aperture);
6830 
6831     portraitSession->Release();
6832     input->Close();
6833 }
6834 
6835 /*
6836  * Feature: Framework
6837  * Function: Test PortraitSession without CommitConfig
6838  * SubFunction: NA
6839  * FunctionPoints: NA
6840  * EnvConditions: NA
6841  * CaseDescription: Test PortraitSession without CommitConfig
6842  */
6843 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_105, TestSize.Level0)
6844 {
6845     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6846     SceneMode mode = PORTRAIT;
6847     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
6848     ASSERT_TRUE(modes.size() != 0);
6849     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
6850     ASSERT_NE(ability, nullptr);
6851     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
6852     ASSERT_NE(input, nullptr);
6853     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
6854     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
6855     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
6856     std::string cameraSettings = camInput->GetCameraSettings();
6857     camInput->SetCameraSettings(cameraSettings);
6858     camInput->GetCameraDevice()->Open();
6859 
6860     sptr<CaptureOutput> preview = CreatePreviewOutput();
6861     ASSERT_NE(preview, nullptr);
6862     sptr<CaptureOutput> photo = CreatePhotoOutput();
6863     ASSERT_NE(photo, nullptr);
6864     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
6865     ASSERT_NE(captureSession, nullptr);
6866     sptr<PortraitSession> portraitSession = nullptr;
6867     portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
6868     ASSERT_NE(portraitSession, nullptr);
6869 
6870     EXPECT_EQ(portraitSession->BeginConfig(), 0);
6871     EXPECT_EQ(portraitSession->AddInput(input), 0);
6872     EXPECT_EQ(portraitSession->AddOutput(preview), 0);
6873     EXPECT_EQ(portraitSession->AddOutput(photo), 0);
6874 
6875     const float physicalAperture = 0.1;
6876     const float virtualAperture = 0.1;
6877     std::vector<float> supportedVirtualApertures = {};
6878     std::vector<float> virtualApertures = {};
6879     portraitSession->GetSupportedVirtualApertures(virtualApertures);
6880     EXPECT_EQ(virtualApertures, supportedVirtualApertures);
6881     float virtualApertureResult = 0.0f;
6882     portraitSession->GetVirtualAperture(virtualApertureResult);
6883     EXPECT_EQ(virtualApertureResult, 0.0);
6884     portraitSession->SetVirtualAperture(virtualAperture);
6885     std::vector<std::vector<float>> supportedPhysicalApertures;
6886     std::vector<std::vector<float>> physicalApertures;
6887     portraitSession->GetSupportedPhysicalApertures(physicalApertures);
6888     EXPECT_EQ(physicalApertures, supportedPhysicalApertures);
6889     float physicalApertureResult = 0.0f;
6890     portraitSession->GetPhysicalAperture(physicalApertureResult);
6891     EXPECT_EQ(physicalApertureResult, 0.0f);
6892     portraitSession->SetPhysicalAperture(physicalAperture);
6893     portraitSession->Release();
6894     input->Close();
6895 }
6896 
6897 /*
6898  * Feature: Framework
6899  * Function: Test PortraitSession when innerInputDevice_ is nullptr
6900  * SubFunction: NA
6901  * FunctionPoints: NA
6902  * EnvConditions: NA
6903  * CaseDescription: Test PortraitSession when innerInputDevice_ is nullptr
6904  */
6905 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_106, TestSize.Level0)
6906 {
6907     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6908     SceneMode mode = PORTRAIT;
6909     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
6910     ASSERT_TRUE(modes.size() != 0);
6911 
6912     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
6913     ASSERT_NE(ability, nullptr);
6914     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
6915     ASSERT_NE(input, nullptr);
6916     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
6917     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
6918     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
6919     std::string cameraSettings = camInput->GetCameraSettings();
6920     camInput->SetCameraSettings(cameraSettings);
6921     camInput->GetCameraDevice()->Open();
6922 
6923     sptr<CaptureOutput> preview = CreatePreviewOutput();
6924     ASSERT_NE(preview, nullptr);
6925     sptr<CaptureOutput> photo = CreatePhotoOutput();
6926     ASSERT_NE(photo, nullptr);
6927     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
6928     ASSERT_NE(captureSession, nullptr);
6929     sptr<PortraitSession> portraitSession = nullptr;
6930     portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
6931     ASSERT_NE(portraitSession, nullptr);
6932 
6933     EXPECT_EQ(portraitSession->BeginConfig(), 0);
6934     EXPECT_EQ(portraitSession->AddInput(input), 0);
6935     EXPECT_EQ(portraitSession->AddOutput(preview), 0);
6936     EXPECT_EQ(portraitSession->AddOutput(photo), 0);
6937     EXPECT_EQ(portraitSession->CommitConfig(), 0);
6938 
6939     portraitSession->innerInputDevice_ = nullptr;
6940     std::vector<PortraitEffect> supportedPortraitEffects = {};
6941     EXPECT_EQ(portraitSession->GetSupportedPortraitEffects(), supportedPortraitEffects);
6942     EXPECT_EQ(portraitSession->GetPortraitEffect(), PortraitEffect::OFF_EFFECT);
6943     std::vector<float> supportedVirtualApertures = {};
6944     std::vector<float> virtualApertures = {};
6945     portraitSession->GetSupportedVirtualApertures(virtualApertures);
6946     EXPECT_EQ(virtualApertures, supportedVirtualApertures);
6947     float virtualAperture = 0.0f;
6948     portraitSession->GetVirtualAperture(virtualAperture);
6949     EXPECT_EQ(virtualAperture, 0.0);
6950     std::vector<std::vector<float>> supportedPhysicalApertures;
6951     std::vector<std::vector<float>> physicalApertures;
6952     portraitSession->GetSupportedPhysicalApertures(physicalApertures);
6953     EXPECT_EQ(physicalApertures, supportedPhysicalApertures);
6954     float physicalAperture = 0.0f;
6955     portraitSession->GetPhysicalAperture(physicalAperture);
6956     EXPECT_EQ(physicalAperture, 0.0);
6957 
6958     portraitSession->Release();
6959     input->Close();
6960 }
6961 
6962 /*
6963  * Feature: Framework
6964  * Function: Test NightSession about exposure
6965  * SubFunction: NA
6966  * FunctionPoints: NA
6967  * EnvConditions: NA
6968  * CaseDescription: Test NightSession about exposure
6969  */
6970 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_107, TestSize.Level0)
6971 {
6972     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6973     SceneMode mode = NIGHT;
6974     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
6975     ASSERT_TRUE(modes.size() != 0);
6976     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
6977     ASSERT_NE(ability, nullptr);
6978     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
6979     ASSERT_NE(input, nullptr);
6980     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
6981     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
6982     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
6983     std::string cameraSettings = camInput->GetCameraSettings();
6984     camInput->SetCameraSettings(cameraSettings);
6985     camInput->GetCameraDevice()->Open();
6986 
6987     sptr<CaptureOutput> preview = CreatePreviewOutput();
6988     ASSERT_NE(preview, nullptr);
6989     sptr<CaptureOutput> photo = CreatePhotoOutput();
6990     ASSERT_NE(photo, nullptr);
6991     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
6992     ASSERT_NE(captureSession, nullptr);
6993     sptr<NightSession> nightSession = static_cast<NightSession*>(captureSession.GetRefPtr());
6994     ASSERT_NE(nightSession, nullptr);
6995 
6996     EXPECT_EQ(nightSession->BeginConfig(), 0);
6997     EXPECT_EQ(nightSession->AddInput(input), 0);
6998     EXPECT_EQ(nightSession->AddOutput(preview), 0);
6999     EXPECT_EQ(nightSession->AddOutput(photo), 0);
7000     EXPECT_EQ(nightSession->CommitConfig(), 0);
7001 
7002     std::vector<uint32_t> exposureRange = {};
7003     uint32_t exposureValue = 0;
7004     EXPECT_EQ(nightSession->GetExposureRange(exposureRange), CameraErrorCode::INVALID_ARGUMENT);
7005     EXPECT_EQ(nightSession->GetExposure(exposureValue), CameraErrorCode::INVALID_ARGUMENT);
7006 
7007     nightSession->Release();
7008     input->Close();
7009 }
7010 
7011 /*
7012  * Feature: Framework
7013  * Function: Test NightSession when innerInputDevice_ and output is nullptr
7014  * SubFunction: NA
7015  * FunctionPoints: NA
7016  * EnvConditions: NA
7017  * CaseDescription: Test NightSession when innerInputDevice_ and output is nullptr
7018  */
7019 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_108, TestSize.Level0)
7020 {
7021     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7022     SceneMode mode = NIGHT;
7023     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
7024     ASSERT_TRUE(modes.size() != 0);
7025     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
7026     ASSERT_NE(ability, nullptr);
7027     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
7028     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7029     ASSERT_NE(input, nullptr);
7030 
7031     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7032     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7033     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7034     std::string cameraSettings = camInput->GetCameraSettings();
7035     camInput->SetCameraSettings(cameraSettings);
7036     camInput->GetCameraDevice()->Open();
7037 
7038     sptr<CaptureOutput> preview = CreatePreviewOutput();
7039     ASSERT_NE(preview, nullptr);
7040     sptr<CaptureOutput> photo = CreatePhotoOutput();
7041     ASSERT_NE(photo, nullptr);
7042     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7043     ASSERT_NE(captureSession, nullptr);
7044     sptr<NightSession> nightSession = static_cast<NightSession*>(captureSession.GetRefPtr());
7045     ASSERT_NE(nightSession, nullptr);
7046 
7047     EXPECT_EQ(nightSession->BeginConfig(), 0);
7048     EXPECT_EQ(nightSession->AddInput(input), 0);
7049     EXPECT_EQ(nightSession->AddOutput(preview), 0);
7050     EXPECT_EQ(nightSession->AddOutput(photo), 0);
7051     EXPECT_EQ(nightSession->CommitConfig(), 0);
7052 
7053     nightSession->innerInputDevice_ = nullptr;
7054     std::vector<uint32_t> exposureRange = {};
7055     EXPECT_EQ(nightSession->GetExposureRange(exposureRange), CameraErrorCode::INVALID_ARGUMENT);
7056     sptr<CaptureOutput> output = nullptr;
7057     EXPECT_EQ(nightSession->CanAddOutput(output), false);
7058 
7059     nightSession->Release();
7060     input->Close();
7061 }
7062 
7063 /*
7064  * Feature: Framework
7065  * Function: Test ScanSession when output is nullptr
7066  * SubFunction: NA
7067  * FunctionPoints: NA
7068  * EnvConditions: NA
7069  * CaseDescription: Test ScanSession when output is nullptr
7070  */
7071 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_109, TestSize.Level0)
7072 {
7073     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7074     SceneMode mode = SCAN;
7075     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
7076     ASSERT_TRUE(modes.size() != 0);
7077 
7078     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
7079     ASSERT_NE(ability, nullptr);
7080 
7081     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7082     ASSERT_NE(input, nullptr);
7083 
7084     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7085     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7086     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7087     std::string cameraSettings = camInput->GetCameraSettings();
7088     camInput->SetCameraSettings(cameraSettings);
7089     camInput->GetCameraDevice()->Open();
7090 
7091     sptr<CaptureOutput> preview = CreatePreviewOutput();
7092     ASSERT_NE(preview, nullptr);
7093 
7094     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7095     ASSERT_NE(captureSession, nullptr);
7096     sptr<ScanSession> scanSession = static_cast<ScanSession*>(captureSession.GetRefPtr());
7097     ASSERT_NE(scanSession, nullptr);
7098 
7099     EXPECT_EQ(scanSession->BeginConfig(), 0);
7100     EXPECT_EQ(scanSession->AddInput(input), 0);
7101     EXPECT_EQ(scanSession->AddOutput(preview), 0);
7102     EXPECT_EQ(scanSession->CommitConfig(), 0);
7103 
7104     sptr<CaptureOutput> output = nullptr;
7105     scanSession->CanAddOutput(output);
7106 
7107     scanSession->Release();
7108     input->Close();
7109 }
7110 
7111 /*
7112  * Feature: Framework
7113  * Function: Test ScanSession when innerInputDevice_ is nullptr
7114  * SubFunction: NA
7115  * FunctionPoints: NA
7116  * EnvConditions: NA
7117  * CaseDescription: Test ScanSession when innerInputDevice_ is nullptr
7118  */
7119 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_110, TestSize.Level0)
7120 {
7121     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7122     SceneMode mode = SCAN;
7123     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
7124     ASSERT_TRUE(modes.size() != 0);
7125 
7126     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
7127     ASSERT_NE(ability, nullptr);
7128 
7129     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7130     ASSERT_NE(input, nullptr);
7131 
7132     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7133     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7134     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7135     std::string cameraSettings = camInput->GetCameraSettings();
7136     camInput->SetCameraSettings(cameraSettings);
7137     camInput->GetCameraDevice()->Open();
7138 
7139     sptr<CaptureOutput> preview = CreatePreviewOutput();
7140     ASSERT_NE(preview, nullptr);
7141 
7142     sptr<CaptureOutput> photo = CreatePhotoOutput();
7143     ASSERT_NE(photo, nullptr);
7144 
7145     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7146     ASSERT_NE(captureSession, nullptr);
7147     sptr<ScanSession> scanSession = static_cast<ScanSession*>(captureSession.GetRefPtr());
7148     ASSERT_NE(scanSession, nullptr);
7149 
7150     EXPECT_EQ(scanSession->CanAddOutput(photo), false);
7151     EXPECT_EQ(scanSession->BeginConfig(), 0);
7152     EXPECT_EQ(scanSession->AddInput(input), 0);
7153     EXPECT_EQ(scanSession->AddOutput(preview), 0);
7154 
7155     scanSession->CanAddOutput(photo);
7156 
7157     scanSession->innerInputDevice_ = nullptr;
7158     int32_t ret = scanSession->AddOutput(preview);
7159     EXPECT_EQ(ret, SESSION_NOT_CONFIG);
7160 
7161     ret = scanSession->CommitConfig();
7162     EXPECT_EQ(ret, 0);
7163 
7164     scanSession->Release();
7165     input->Close();
7166 }
7167 
7168 /*
7169  * Feature: Framework
7170  * Function: Test ScanSession
7171  * SubFunction: NA
7172  * FunctionPoints: NA
7173  * EnvConditions: NA
7174  * CaseDescription: Test ScanSession
7175  */
7176 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_111, TestSize.Level0)
7177 {
7178     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7179     SceneMode mode = SCAN;
7180     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
7181     ASSERT_TRUE(modes.size() != 0);
7182 
7183     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
7184     ASSERT_NE(ability, nullptr);
7185 
7186     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7187     ASSERT_NE(input, nullptr);
7188 
7189     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7190     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7191     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7192     std::string cameraSettings = camInput->GetCameraSettings();
7193     camInput->SetCameraSettings(cameraSettings);
7194     camInput->GetCameraDevice()->Open();
7195 
7196     sptr<CaptureOutput> preview = CreatePreviewOutput();
7197     ASSERT_NE(preview, nullptr);
7198 
7199     sptr<CaptureOutput> photo = CreatePhotoOutput();
7200     ASSERT_NE(photo, nullptr);
7201 
7202     sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7203     ASSERT_NE(captureSession, nullptr);
7204     sptr<ScanSession> scanSession = static_cast<ScanSession*>(captureSession.GetRefPtr());
7205     ASSERT_NE(scanSession, nullptr);
7206 
7207     EXPECT_EQ(scanSession->CanAddOutput(photo), false);
7208     EXPECT_EQ(scanSession->BeginConfig(), 0);
7209     EXPECT_EQ(scanSession->AddInput(input), 0);
7210     EXPECT_EQ(scanSession->AddOutput(preview), 0);
7211 
7212     scanSession->CanAddOutput(photo);
7213 
7214     scanSession->innerInputDevice_ = nullptr;
7215     int32_t ret = scanSession->AddOutput(preview);
7216     EXPECT_EQ(ret, SESSION_NOT_CONFIG);
7217 
7218     ret = scanSession->CommitConfig();
7219     EXPECT_EQ(ret, 0);
7220 
7221     scanSession->Release();
7222     input->Close();
7223 }
7224 
7225 /*
7226  * Feature: Framework
7227  * Function: Test anomalous branch
7228  * SubFunction: NA
7229  * FunctionPoints: NA
7230  * EnvConditions: NA
7231  * CaseDescription: Test HCameraService with anomalous branch
7232  */
7233 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_112, TestSize.Level0)
7234 {
7235     InSequence s;
7236     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7237 
7238     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7239     ASSERT_NE(input, nullptr);
7240 
7241     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7242     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7243     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7244     std::string cameraSettings = camInput->GetCameraSettings();
7245     camInput->SetCameraSettings(cameraSettings);
7246     camInput->GetCameraDevice()->Open();
7247 
7248     sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
7249     sptr<HCameraService> cameraService = (sptr<HCameraService> &)mockHCameraService;
7250     ASSERT_NE(cameraService, nullptr);
7251 
7252     sptr<ICameraServiceCallback> callback = nullptr;
7253     int32_t intResult = cameraService->SetCameraCallback(callback);
7254     EXPECT_EQ(intResult, 2);
7255 
7256     callback = new(std::nothrow) CameraStatusServiceCallback(cameraManager);
7257     ASSERT_NE(callback, nullptr);
7258     intResult = cameraService->SetCameraCallback(callback);
7259     EXPECT_EQ(intResult, 0);
7260 
7261     sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7262     ASSERT_NE(deviceObj, nullptr);
7263 
7264     sptr<ICameraMuteServiceCallback> callback_2 = nullptr;
7265     intResult = cameraService->SetMuteCallback(callback_2);
7266     EXPECT_EQ(intResult, 2);
7267 
7268     callback_2 = new(std::nothrow) CameraMuteServiceCallback(cameraManager);
7269     ASSERT_NE(callback_2, nullptr);
7270     intResult = cameraService->SetMuteCallback(callback_2);
7271     EXPECT_EQ(intResult, 0);
7272 
7273     std::string cameraId = camInput->GetCameraId();
7274     int activeTime = 0;
7275     EffectParam effectParam = {0, 0, 0};
7276     intResult = cameraService->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::TRANSIENT_ACTIVE_PARAM_OHOS,
7277         activeTime, effectParam);
7278     EXPECT_EQ(intResult, 2);
7279 
7280     intResult = cameraService->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::PERSISTENT_DEFAULT_PARAM_OHOS,
7281     activeTime, effectParam);
7282     EXPECT_EQ(intResult, 2);
7283 
7284     input->Close();
7285 }
7286 
TestPhotoSessionPreconfig(sptr<CaptureInput> & input,PreconfigType preconfigType,ProfileSizeRatio profileSizeRatio)7287 void CameraFrameworkUnitTest::TestPhotoSessionPreconfig(
7288     sptr<CaptureInput>& input, PreconfigType preconfigType, ProfileSizeRatio profileSizeRatio)
7289 {
7290     sptr<CaptureSession> photoSession = cameraManager->CreateCaptureSession(SceneMode::CAPTURE);
7291     ASSERT_NE(photoSession, nullptr);
7292     if (photoSession->CanPreconfig(preconfigType, profileSizeRatio)) {
7293         int32_t intResult = photoSession->Preconfig(preconfigType, profileSizeRatio);
7294         EXPECT_EQ(intResult, 0);
7295 
7296         sptr<Surface> preivewSurface = Surface::CreateSurfaceAsConsumer();
7297         ASSERT_NE(preivewSurface, nullptr);
7298 
7299         sptr<PreviewOutput> previewOutput = nullptr;
7300         intResult = cameraManager->CreatePreviewOutputWithoutProfile(preivewSurface, &previewOutput);
7301         EXPECT_EQ(intResult, 0);
7302         ASSERT_NE(previewOutput, nullptr);
7303 
7304         sptr<IConsumerSurface> photoSurface = IConsumerSurface::Create();
7305         ASSERT_NE(photoSurface, nullptr);
7306         auto photoProducer = photoSurface->GetProducer();
7307         ASSERT_NE(photoProducer, nullptr);
7308         sptr<PhotoOutput> photoOutput = nullptr;
7309         intResult = cameraManager->CreatePhotoOutputWithoutProfile(photoProducer, &photoOutput);
7310         EXPECT_EQ(intResult, 0);
7311         ASSERT_NE(photoOutput, nullptr);
7312 
7313         intResult = photoSession->BeginConfig();
7314         EXPECT_EQ(intResult, 0);
7315 
7316         intResult = photoSession->AddInput(input);
7317         EXPECT_EQ(intResult, 0);
7318 
7319         sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
7320         intResult = photoSession->AddOutput(previewOutputCaptureUpper);
7321         EXPECT_EQ(intResult, 0);
7322         sptr<CaptureOutput> photoOutputCaptureUpper = photoOutput;
7323         intResult = photoSession->AddOutput(photoOutputCaptureUpper);
7324         EXPECT_EQ(intResult, 0);
7325 
7326         intResult = photoSession->CommitConfig();
7327         EXPECT_EQ(intResult, 0);
7328 
7329         intResult = photoSession->Start();
7330         EXPECT_EQ(intResult, 0);
7331 
7332         intResult = photoSession->Stop();
7333         EXPECT_EQ(intResult, 0);
7334 
7335         intResult = photoSession->BeginConfig();
7336         EXPECT_EQ(intResult, 0);
7337 
7338         intResult = photoSession->RemoveInput(input);
7339         EXPECT_EQ(intResult, 0);
7340 
7341         intResult = photoSession->Release();
7342         EXPECT_EQ(intResult, 0);
7343     }
7344 }
7345 
7346 /*
7347  * Feature: Framework
7348  * Function: Test PhotoSession preconfig
7349  * SubFunction: NA
7350  * FunctionPoints: NA
7351  * EnvConditions: NA
7352  * CaseDescription: Test preconfig PhotoSession all config.
7353  */
7354 HWTEST_F(CameraFrameworkUnitTest, camera_preconfig_unittest_001, TestSize.Level0)
7355 {
7356     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7357     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7358     ASSERT_NE(input, nullptr);
7359 
7360     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7361     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7362     sptr<CameraInput> camInput = (sptr<CameraInput>&)input;
7363     std::string cameraSettings = camInput->GetCameraSettings();
7364     camInput->SetCameraSettings(cameraSettings);
7365     camInput->GetCameraDevice()->Open();
7366 
7367     sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
7368     sptr<HCameraService> cameraService = (sptr<HCameraService>&)mockHCameraService;
7369     ASSERT_NE(cameraService, nullptr);
7370 
7371     sptr<ICameraServiceCallback> callback = new (std::nothrow) CameraStatusServiceCallback(cameraManager);
7372     ASSERT_NE(callback, nullptr);
7373     int32_t intResult = cameraService->SetCameraCallback(callback);
7374     EXPECT_EQ(intResult, 0);
7375 
7376     sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7377     ASSERT_NE(deviceObj, nullptr);
7378 
7379     std::vector<PreconfigType> preconfigTypes = { PRECONFIG_720P, PRECONFIG_1080P, PRECONFIG_4K,
7380         PRECONFIG_HIGH_QUALITY };
7381     std::vector<ProfileSizeRatio> profileSizeRatios = { UNSPECIFIED, RATIO_1_1, RATIO_4_3, RATIO_16_9 };
7382     for (auto& preconfigType : preconfigTypes) {
7383         for (auto& profileSizeRatio : profileSizeRatios) {
7384             TestPhotoSessionPreconfig(input, preconfigType, profileSizeRatio);
7385         }
7386     }
7387 
7388     input->Close();
7389 }
7390 
TestVideoSessionPreconfig(sptr<CaptureInput> & input,PreconfigType preconfigType,ProfileSizeRatio profileSizeRatio)7391 void CameraFrameworkUnitTest::TestVideoSessionPreconfig(
7392     sptr<CaptureInput>& input, PreconfigType preconfigType, ProfileSizeRatio profileSizeRatio)
7393 {
7394     sptr<CaptureSession> videoSession = cameraManager->CreateCaptureSession(SceneMode::VIDEO);
7395     ASSERT_NE(videoSession, nullptr);
7396     if (videoSession->CanPreconfig(preconfigType, profileSizeRatio)) {
7397         int32_t intResult = videoSession->Preconfig(preconfigType, profileSizeRatio);
7398         EXPECT_EQ(intResult, 0);
7399 
7400         sptr<PreviewOutput> previewOutput = nullptr;
7401         intResult =
7402             cameraManager->CreatePreviewOutputWithoutProfile(Surface::CreateSurfaceAsConsumer(), &previewOutput);
7403         EXPECT_EQ(intResult, 0);
7404         ASSERT_NE(previewOutput, nullptr);
7405 
7406         sptr<IConsumerSurface> photoSurface = IConsumerSurface::Create();
7407         ASSERT_NE(photoSurface, nullptr);
7408         auto photoProducer = photoSurface->GetProducer();
7409         ASSERT_NE(photoProducer, nullptr);
7410         sptr<PhotoOutput> photoOutput = nullptr;
7411         intResult = cameraManager->CreatePhotoOutputWithoutProfile(photoProducer, &photoOutput);
7412         EXPECT_EQ(intResult, 0);
7413         ASSERT_NE(photoOutput, nullptr);
7414 
7415         sptr<VideoOutput> videoOutput = nullptr;
7416         intResult = cameraManager->CreateVideoOutputWithoutProfile(Surface::CreateSurfaceAsConsumer(), &videoOutput);
7417         EXPECT_EQ(intResult, 0);
7418         ASSERT_NE(videoOutput, nullptr);
7419 
7420         intResult = videoSession->BeginConfig();
7421         EXPECT_EQ(intResult, 0);
7422 
7423         intResult = videoSession->AddInput(input);
7424         EXPECT_EQ(intResult, 0);
7425 
7426         sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
7427         intResult = videoSession->AddOutput(previewOutputCaptureUpper);
7428         EXPECT_EQ(intResult, 0);
7429         sptr<CaptureOutput> photoOutputCaptureUpper = photoOutput;
7430         intResult = videoSession->AddOutput(photoOutputCaptureUpper);
7431         EXPECT_EQ(intResult, 0);
7432         sptr<CaptureOutput> videoOutputCaptureUpper = videoOutput;
7433         intResult = videoSession->AddOutput(videoOutputCaptureUpper);
7434         EXPECT_EQ(intResult, 0);
7435 
7436         intResult = videoSession->CommitConfig();
7437         EXPECT_EQ(intResult, 0);
7438 
7439         intResult = videoSession->Start();
7440         EXPECT_EQ(intResult, 0);
7441 
7442         intResult = videoSession->Stop();
7443         EXPECT_EQ(intResult, 0);
7444 
7445         intResult = videoSession->BeginConfig();
7446         EXPECT_EQ(intResult, 0);
7447 
7448         intResult = videoSession->RemoveInput(input);
7449         EXPECT_EQ(intResult, 0);
7450 
7451         intResult = videoSession->Release();
7452         EXPECT_EQ(intResult, 0);
7453     }
7454 }
7455 
7456 /*
7457  * Feature: Framework
7458  * Function: Test VideoSession preconfig
7459  * SubFunction: NA
7460  * FunctionPoints: NA
7461  * EnvConditions: NA
7462  * CaseDescription: Test preconfig VideoSession all config.
7463  */
7464 HWTEST_F(CameraFrameworkUnitTest, camera_preconfig_unittest_002, TestSize.Level0)
7465 {
7466     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7467     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7468     ASSERT_NE(input, nullptr);
7469 
7470     EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7471     EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7472     sptr<CameraInput> camInput = (sptr<CameraInput>&)input;
7473     std::string cameraSettings = camInput->GetCameraSettings();
7474     camInput->SetCameraSettings(cameraSettings);
7475     camInput->GetCameraDevice()->Open();
7476 
7477     sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
7478     sptr<HCameraService> cameraService = (sptr<HCameraService>&)mockHCameraService;
7479     ASSERT_NE(cameraService, nullptr);
7480 
7481     sptr<ICameraServiceCallback> callback = new (std::nothrow) CameraStatusServiceCallback(cameraManager);
7482     ASSERT_NE(callback, nullptr);
7483     int32_t intResult = cameraService->SetCameraCallback(callback);
7484     EXPECT_EQ(intResult, 0);
7485 
7486     sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7487     ASSERT_NE(deviceObj, nullptr);
7488 
7489     std::vector<PreconfigType> preconfigTypes = { PRECONFIG_720P, PRECONFIG_1080P, PRECONFIG_4K,
7490         PRECONFIG_HIGH_QUALITY };
7491     std::vector<ProfileSizeRatio> profileSizeRatios = { UNSPECIFIED, RATIO_1_1, RATIO_4_3, RATIO_16_9 };
7492     for (auto& preconfigType : preconfigTypes) {
7493         for (auto& profileSizeRatio : profileSizeRatios) {
7494             TestVideoSessionPreconfig(input, preconfigType, profileSizeRatio);
7495         }
7496     }
7497 
7498     input->Close();
7499 }
7500 
7501 /*
7502  * Feature: Framework
7503  * Function: Test HCaptureSession::NewInstance
7504  * SubFunction: NA
7505  * FunctionPoints: NA
7506  * EnvConditions: NA
7507  * CaseDescription: Test HCaptureSession::NewInstance
7508  */
7509 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_121, TestSize.Level0)
7510 {
7511     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
7512     SceneMode opMode = PORTRAIT;
7513     sptr<HCaptureSession> session = HCaptureSession::NewInstance(callerToken, opMode);
7514     ASSERT_NE(session, nullptr);
7515 }
7516 
7517 /*
7518 * Feature: Framework
7519 * Function: Test normal branch that is support secure camera for open camera
7520 * SubFunction: NA
7521 * FunctionPoints: NA
7522 * EnvConditions: NA
7523 * CaseDescription: Test normal branch for open camera
7524 */
7525 HWTEST_F(CameraFrameworkUnitTest, camera_opencamera_unittest_001, TestSize.Level0)
7526 {
7527     InSequence s;
7528     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7529 
7530     for (sptr<CameraDevice> camDevice : cameras) {
7531         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7532         ASSERT_TRUE(modes.size() != 0);
7533 
7534         if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7535             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7536             ASSERT_NE(input, nullptr);
7537             EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7538             EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7539             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7540             std::string cameraSettings = camInput->GetCameraSettings();
7541             camInput->SetCameraSettings(cameraSettings);
7542 
7543             uint64_t secureSeqId = 0;
7544             sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7545             ASSERT_NE(deviceObj, nullptr);
7546 
7547             int intResult = camInput->Open(true, &secureSeqId);
7548             EXPECT_EQ(intResult, 0);
7549             EXPECT_NE(secureSeqId, 0);
7550             input->Close();
7551             break;
7552         }
7553     }
7554 }
7555 
7556 /*
7557 * Feature: Framework
7558 * Function: Test anomalous branch that is not support secure camera for open camera
7559 * SubFunction: NA
7560 * FunctionPoints: NA
7561 * EnvConditions: NA
7562 * CaseDescription: Test anomalous branch for open camera
7563 */
7564 HWTEST_F(CameraFrameworkUnitTest, camera_opencamera_unittest_002, TestSize.Level0)
7565 {
7566     InSequence s;
7567     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7568 
7569     for (sptr<CameraDevice> camDevice : cameras) {
7570         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7571         ASSERT_TRUE(modes.size() != 0);
7572 
7573         if (find(modes.begin(), modes.end(), SceneMode::SECURE) == modes.end()) {
7574             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7575             ASSERT_NE(input, nullptr);
7576             EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7577             EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7578             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7579             std::string cameraSettings = camInput->GetCameraSettings();
7580             camInput->SetCameraSettings(cameraSettings);
7581 
7582             uint64_t secureSeqId = 0;
7583             sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7584             ASSERT_NE(deviceObj, nullptr);
7585 
7586             int intResult = camInput->Open(true, &secureSeqId);
7587             EXPECT_EQ(intResult, 0);
7588             EXPECT_EQ(secureSeqId, 0);
7589             input->Close();
7590             break;
7591         }
7592     }
7593 }
7594 
7595 /*
7596 * Feature: Framework
7597 * Function: Test anomalous branch when open secure camera that seq is null
7598 * SubFunction: NA
7599 * FunctionPoints: NA
7600 * EnvConditions: NA
7601 * CaseDescription: Test anomalous branch for open camera
7602 */
7603 HWTEST_F(CameraFrameworkUnitTest, camera_opencamera_unittest_003, TestSize.Level0)
7604 {
7605     InSequence s;
7606     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7607 
7608     for (sptr<CameraDevice> camDevice : cameras) {
7609         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7610         ASSERT_TRUE(modes.size() != 0);
7611 
7612         if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7613             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7614             ASSERT_NE(input, nullptr);
7615             EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7616             EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7617             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7618             std::string cameraSettings = camInput->GetCameraSettings();
7619             camInput->SetCameraSettings(cameraSettings);
7620 
7621             sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7622             ASSERT_NE(deviceObj, nullptr);
7623 
7624             uint64_t* secureSeqId = nullptr;
7625             int intResult = camInput->Open(true, secureSeqId);
7626             EXPECT_EQ(intResult, CAMERA_INVALID_ARG);
7627             input->Close();
7628             break;
7629         }
7630     }
7631 }
7632 
7633 /*
7634 * Feature: Framework
7635 * Function: Test normal branch that is open non-secure camera
7636 * SubFunction: NA
7637 * FunctionPoints: NA
7638 * EnvConditions: NA
7639 * CaseDescription: Test normal branch that is open non-secure camera
7640 */
7641 HWTEST_F(CameraFrameworkUnitTest, camera_opencamera_unittest_004, TestSize.Level0)
7642 {
7643     InSequence s;
7644     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7645 
7646     for (sptr<CameraDevice> camDevice : cameras) {
7647         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7648         ASSERT_TRUE(modes.size() != 0);
7649 
7650         if (find(modes.begin(), modes.end(), SceneMode::SECURE) == modes.end()) {
7651             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7652             ASSERT_NE(input, nullptr);
7653             EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7654             EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7655             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7656             std::string cameraSettings = camInput->GetCameraSettings();
7657             camInput->SetCameraSettings(cameraSettings);
7658 
7659             sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7660             ASSERT_NE(deviceObj, nullptr);
7661 
7662             uint64_t secureSeqId = 0;
7663             int intResult = camInput->Open(false, &secureSeqId);
7664             EXPECT_EQ(intResult, CAMERA_OK);
7665             EXPECT_EQ(secureSeqId, 0);
7666             input->Close();
7667             break;
7668         }
7669     }
7670 }
7671 
7672 /*
7673 * Feature: Framework
7674 * Function: Test normal branch that is add secure output flag
7675 * SubFunction: NA
7676 * FunctionPoints: NA
7677 * EnvConditions: NA
7678 * CaseDescription: Test normal branch that is add secure output flag
7679 */
7680 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_001, TestSize.Level0)
7681 {
7682     InSequence s;
7683     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7684 
7685     for (sptr<CameraDevice> camDevice : cameras) {
7686         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7687         ASSERT_TRUE(modes.size() != 0);
7688 
7689         if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7690             sptr<CameraOutputCapability> ability = cameraManager->
7691                 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7692             ASSERT_NE(ability, nullptr);
7693             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7694             ASSERT_NE(input, nullptr);
7695             EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7696             EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7697             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7698             std::string cameraSettings = camInput->GetCameraSettings();
7699             camInput->SetCameraSettings(cameraSettings);
7700             uint64_t secureSeqId = 0;
7701             int intResult = camInput->Open(true, &secureSeqId);
7702             EXPECT_EQ(intResult, CAMERA_OK);
7703             EXPECT_NE(secureSeqId, 0);
7704 
7705             sptr<CaptureOutput> preview = CreatePreviewOutput();
7706             ASSERT_NE(preview, nullptr);
7707             sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
7708             ASSERT_NE(captureSession, nullptr);
7709             sptr<SecureCameraSession> secureSession = nullptr;
7710             secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
7711             ASSERT_NE(secureSession, nullptr);
7712 
7713             EXPECT_EQ(secureSession->BeginConfig(), 0);
7714             EXPECT_EQ(secureSession->AddInput(input), 0);
7715             EXPECT_EQ(secureSession->AddOutput(preview), 0);
7716             EXPECT_EQ(secureSession->AddSecureOutput(preview), 0);
7717             EXPECT_EQ(secureSession->CommitConfig(), 0);
7718             secureSession->Release();
7719             input->Close();
7720             break;
7721         }
7722     }
7723 }
7724 
7725 /*
7726 * Feature: Framework
7727 * Function: Test normal branch that is add secure output flag
7728 * SubFunction: NA
7729 * FunctionPoints: NA
7730 * EnvConditions: NA
7731 * CaseDescription: Test normal branch that is add secure output flag
7732 */
7733 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_002, TestSize.Level0)
7734 {
7735     InSequence s;
7736     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7737 
7738     for (sptr<CameraDevice> camDevice : cameras) {
7739         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7740         ASSERT_TRUE(modes.size() != 0);
7741 
7742         if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7743             sptr<CameraOutputCapability> ability = cameraManager->
7744                 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7745             ASSERT_NE(ability, nullptr);
7746             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7747             ASSERT_NE(input, nullptr);
7748             EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7749             EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7750             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7751             std::string cameraSettings = camInput->GetCameraSettings();
7752             camInput->SetCameraSettings(cameraSettings);
7753             uint64_t secureSeqId = 0;
7754             int intResult = camInput->Open(false, &secureSeqId);
7755             EXPECT_EQ(intResult, CAMERA_OK);
7756             EXPECT_NE(secureSeqId, 0);
7757             sptr<CaptureOutput> preview = CreatePreviewOutput();
7758             ASSERT_NE(preview, nullptr);
7759             sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
7760             ASSERT_NE(captureSession, nullptr);
7761             sptr<SecureCameraSession> secureSession = nullptr;
7762             secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
7763             ASSERT_NE(secureSession, nullptr);
7764 
7765             EXPECT_EQ(secureSession->BeginConfig(), 0);
7766             EXPECT_EQ(secureSession->AddInput(input), 0);
7767             EXPECT_EQ(secureSession->AddOutput(preview), 0);
7768             EXPECT_EQ(secureSession->AddSecureOutput(preview), 0);
7769             EXPECT_EQ(secureSession->CommitConfig(), 0);
7770             secureSession->Release();
7771             input->Close();
7772             break;
7773         }
7774     }
7775 }
7776 
7777 /*
7778 * Feature: Framework
7779 * Function: Test abnormal branch that is add secure output flag twice
7780 * SubFunction: NA
7781 * FunctionPoints: NA
7782 * EnvConditions: NA
7783 * CaseDescription: Test abnormal branch that is add secure output flag twice
7784 */
7785 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_003, TestSize.Level0)
7786 {
7787     InSequence s;
7788     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7789 
7790     for (sptr<CameraDevice> camDevice : cameras) {
7791         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7792         ASSERT_TRUE(modes.size() != 0);
7793 
7794         if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7795             sptr<CameraOutputCapability> ability = cameraManager->
7796                 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7797             ASSERT_NE(ability, nullptr);
7798             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7799             ASSERT_NE(input, nullptr);
7800             EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7801             EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7802             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7803             std::string cameraSettings = camInput->GetCameraSettings();
7804             camInput->SetCameraSettings(cameraSettings);
7805             uint64_t secureSeqId = 0;
7806             int intResult = camInput->Open(false, &secureSeqId);
7807             EXPECT_EQ(intResult, CAMERA_OK);
7808             EXPECT_NE(secureSeqId, 0);
7809 
7810             sptr<CaptureOutput> preview1 = CreatePreviewOutput();
7811             ASSERT_NE(preview1, nullptr);
7812             sptr<CaptureOutput> preview2 = CreatePreviewOutput();
7813             ASSERT_NE(preview2, nullptr);
7814             sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
7815             ASSERT_NE(captureSession, nullptr);
7816             sptr<SecureCameraSession> secureSession = nullptr;
7817             secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
7818             ASSERT_NE(secureSession, nullptr);
7819 
7820             EXPECT_EQ(secureSession->BeginConfig(), 0);
7821             EXPECT_EQ(secureSession->AddInput(input), 0);
7822             EXPECT_EQ(secureSession->AddOutput(preview1), 0);
7823             EXPECT_EQ(secureSession->AddOutput(preview2), 0);
7824             EXPECT_EQ(secureSession->AddSecureOutput(preview1), 0);
7825             EXPECT_EQ(secureSession->AddSecureOutput(preview2), OPERATION_NOT_ALLOWED);
7826             EXPECT_EQ(secureSession->CommitConfig(), 0);
7827             secureSession->Release();
7828             input->Close();
7829             break;
7830         }
7831     }
7832 }
7833 
7834 /*
7835 * Feature: Framework
7836 * Function: Test abnormal branch that is add secure output flag twice
7837 * SubFunction: NA
7838 * FunctionPoints: NA
7839 * EnvConditions: NA
7840 * CaseDescription: Test abnormal branch that is add secure output flag twice
7841 */
7842 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_004, TestSize.Level0)
7843 {
7844     InSequence s;
7845     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7846 
7847     for (sptr<CameraDevice> camDevice : cameras) {
7848         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7849         ASSERT_TRUE(modes.size() != 0);
7850 
7851         if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7852             sptr<CameraOutputCapability> ability = cameraManager->
7853                 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7854             ASSERT_NE(ability, nullptr);
7855             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7856             ASSERT_NE(input, nullptr);
7857             EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7858             EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7859             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7860             std::string cameraSettings = camInput->GetCameraSettings();
7861             camInput->SetCameraSettings(cameraSettings);
7862             uint64_t secureSeqId = 0;
7863             int intResult = camInput->Open(false, &secureSeqId);
7864             EXPECT_EQ(intResult, CAMERA_OK);
7865             EXPECT_NE(secureSeqId, 0);
7866             sptr<CaptureOutput> preview1 = CreatePreviewOutput();
7867             ASSERT_NE(preview1, nullptr);
7868             sptr<CaptureOutput> preview2 = CreatePreviewOutput();
7869             ASSERT_NE(preview2, nullptr);
7870             sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
7871             ASSERT_NE(captureSession, nullptr);
7872             sptr<SecureCameraSession> secureSession = nullptr;
7873             secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
7874             ASSERT_NE(secureSession, nullptr);
7875 
7876             EXPECT_EQ(secureSession->BeginConfig(), 0);
7877             EXPECT_EQ(secureSession->AddInput(input), 0);
7878             EXPECT_EQ(secureSession->AddOutput(preview1), 0);
7879             EXPECT_EQ(secureSession->AddOutput(preview2), 0);
7880             EXPECT_EQ(secureSession->AddSecureOutput(preview1), 0);
7881             EXPECT_EQ(secureSession->AddSecureOutput(preview2), OPERATION_NOT_ALLOWED);
7882             EXPECT_EQ(secureSession->CommitConfig(), 0);
7883             secureSession->Release();
7884             input->Close();
7885             break;
7886         }
7887     }
7888 }
7889 
7890 /*
7891 * Feature: Framework
7892 * Function: Test abnormal branch that secure output is added after commiting
7893 * SubFunction: NA
7894 * FunctionPoints: NA
7895 * EnvConditions: NA
7896 * CaseDescription: Test abnormal branch that secure output is added after commiting
7897 */
7898 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_005, TestSize.Level0)
7899 {
7900     InSequence s;
7901     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7902 
7903     for (sptr<CameraDevice> camDevice : cameras) {
7904         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7905         ASSERT_TRUE(modes.size() != 0);
7906 
7907         if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7908             sptr<CameraOutputCapability> ability = cameraManager->
7909                 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7910             ASSERT_NE(ability, nullptr);
7911             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7912             ASSERT_NE(input, nullptr);
7913             EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7914             EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7915             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7916             std::string cameraSettings = camInput->GetCameraSettings();
7917             camInput->SetCameraSettings(cameraSettings);
7918             uint64_t secureSeqId = 0;
7919             int intResult = camInput->Open(false, &secureSeqId);
7920             EXPECT_EQ(intResult, CAMERA_OK);
7921             EXPECT_NE(secureSeqId, 0);
7922             sptr<CaptureOutput> preview = CreatePreviewOutput();
7923             ASSERT_NE(preview, nullptr);
7924             sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
7925             ASSERT_NE(captureSession, nullptr);
7926             sptr<SecureCameraSession> secureSession = nullptr;
7927             secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
7928             ASSERT_NE(secureSession, nullptr);
7929 
7930             EXPECT_EQ(secureSession->BeginConfig(), 0);
7931             EXPECT_EQ(secureSession->AddInput(input), 0);
7932             EXPECT_EQ(secureSession->AddOutput(preview), 0);
7933             EXPECT_EQ(secureSession->CommitConfig(), 0);
7934             EXPECT_EQ(secureSession->AddSecureOutput(preview), OPERATION_NOT_ALLOWED);
7935             secureSession->Release();
7936             input->Close();
7937             break;
7938         }
7939     }
7940 }
7941 
7942 HWTEST_F(CameraFrameworkUnitTest, test_createDeferredPhotoProcessingSession, TestSize.Level0)
7943 {
7944     sptr<DeferredPhotoProcSession> deferredProcSession;
7945     deferredProcSession = cameraManager->CreateDeferredPhotoProcessingSession(g_userId_,
7946         std::make_shared<TestDeferredPhotoProcSessionCallback>());
7947     ASSERT_NE(deferredProcSession, nullptr);
7948 }
7949 
7950 /**
7951 * @tc.name    : Test IsSlowMotionDetectionSupported API
7952 * @tc.number  : IsSlowMotionDetectionSupported_001
7953 * @tc.desc    : Test IsSlowMotionDetectionSupported interface, when session is not committed.
7954 * @tc.require : slow motion only support videoStream & previewStrem & 1080p & 240fps
7955 */
7956 HWTEST_F(CameraFrameworkUnitTest, IsSlowMotionDetectionSupported_001, TestSize.Level0)
7957 {
7958     sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::SLOW_MOTION);
7959     ASSERT_NE(session, nullptr);
7960     sptr<SlowMotionSession> slowSession = static_cast<SlowMotionSession *> (session.GetRefPtr());
7961     bool result = slowSession->IsSlowMotionDetectionSupported();
7962     EXPECT_EQ(false, result);
7963 }
7964 
7965 /**
7966 * @tc.name    : Test IsSlowMotionDetectionSupported API
7967 * @tc.number  : IsSlowMotionDetectionSupported_002
7968 * @tc.desc    : Test IsSlowMotionDetectionSupported interface, when camera device is null.
7969 * @tc.require : slow motion only support videoStream & previewStrem & 1080p & 240fps
7970 */
7971 HWTEST_F(CameraFrameworkUnitTest, IsSlowMotionDetectionSupported_002, TestSize.Level0)
7972 {
7973     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7974     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7975     ASSERT_NE(input, nullptr);
7976     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7977     std::string cameraSettings = camInput->GetCameraSettings();
7978     camInput->SetCameraSettings(cameraSettings);
7979     camInput->GetCameraDevice()->Open();
7980 
7981     sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::SLOW_MOTION);
7982     ASSERT_NE(session, nullptr);
7983 
7984     sptr<Surface> videoSurface = Surface::CreateSurfaceAsConsumer();
7985     CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
7986     Size videoSize;
7987     videoSize.width = 1920;
7988     videoSize.height = 1080;
7989     std::vector<int32_t> videoFramerates = {0, 0};
7990     VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
7991     sptr<VideoOutput> videoOutput = cameraManager->CreateVideoOutput(videoProfile, videoSurface);
7992     ASSERT_NE(videoOutput, nullptr);
7993 
7994     sptr<Surface> previewSurface = Surface::CreateSurfaceAsConsumer();
7995     CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
7996     Size previewSize;
7997     previewSize.width = 1920;
7998     previewSize.height = 1080;
7999     Profile previewProfile = Profile(previewFormat, previewSize);
8000     sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, previewSurface);
8001     ASSERT_NE(previewOutput, nullptr);
8002 
8003     int32_t intResult = session->BeginConfig();
8004     EXPECT_EQ(intResult, 0);
8005 
8006     intResult = session->AddInput(input);
8007     EXPECT_EQ(intResult, 0);
8008 
8009     sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
8010     intResult = session->AddOutput(previewOutputCaptureUpper);
8011     EXPECT_EQ(intResult, 0);
8012 
8013     sptr<CaptureOutput> videoOutputCaptureUpper = videoOutput;
8014     intResult = session->AddOutput(videoOutputCaptureUpper);
8015     EXPECT_EQ(intResult, 0);
8016 
8017     intResult = session->CommitConfig();
8018     EXPECT_EQ(intResult, 0);
8019 
8020     intResult = input->Release();
8021     EXPECT_EQ(intResult, 0);
8022 
8023     sptr<SlowMotionSession> slowSession = nullptr;
8024     slowSession = static_cast<SlowMotionSession *> (session.GetRefPtr());
8025     bool result = slowSession->IsSlowMotionDetectionSupported();
8026     EXPECT_EQ(false, result);
8027 }
8028 
8029 /**
8030 * @tc.name    : Test IsSlowMotionDetectionSupported API
8031 * @tc.number  : IsSlowMotionDetectionSupported_003
8032 * @tc.desc    : Test IsSlowMotionDetectionSupported interface, when metadata item not found.
8033 *               Test IsSlowMotionDetectionSupported interface, when metadata item data is 0.
8034 *               Test IsSlowMotionDetectionSupported interface, when metadata item data is 1.
8035 * @tc.require : slow motion only support videoStream & previewStrem & 1080p & 240fps
8036 */
8037 HWTEST_F(CameraFrameworkUnitTest, IsSlowMotionDetectionSupported_003, TestSize.Level0)
8038 {
8039     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
8040     sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
8041     ASSERT_NE(input, nullptr);
8042     sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
8043     std::string cameraSettings = camInput->GetCameraSettings();
8044     camInput->SetCameraSettings(cameraSettings);
8045     camInput->GetCameraDevice()->Open();
8046 
8047     sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::SLOW_MOTION);
8048     ASSERT_NE(session, nullptr);
8049 
8050     sptr<Surface> videoSurface = Surface::CreateSurfaceAsConsumer();
8051     CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
8052     Size videoSize;
8053     videoSize.width = 1920;
8054     videoSize.height = 1080;
8055     std::vector<int32_t> videoFramerates = {0, 0};
8056     VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
8057     sptr<VideoOutput> videoOutput = cameraManager->CreateVideoOutput(videoProfile, videoSurface);
8058     ASSERT_NE(videoOutput, nullptr);
8059 
8060     sptr<Surface> previewSurface = Surface::CreateSurfaceAsConsumer();
8061     CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
8062     Size previewSize;
8063     previewSize.width = 1920;
8064     previewSize.height = 1080;
8065     Profile previewProfile = Profile(previewFormat, previewSize);
8066     sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, previewSurface);
8067     ASSERT_NE(previewOutput, nullptr);
8068 
8069     int32_t intResult = session->BeginConfig();
8070     EXPECT_EQ(intResult, 0);
8071 
8072     intResult = session->AddInput(input);
8073     EXPECT_EQ(intResult, 0);
8074 
8075     sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
8076     intResult = session->AddOutput(previewOutputCaptureUpper);
8077     EXPECT_EQ(intResult, 0);
8078 
8079     sptr<CaptureOutput> videoOutputCaptureUpper = videoOutput;
8080     intResult = session->AddOutput(videoOutputCaptureUpper);
8081     EXPECT_EQ(intResult, 0);
8082 
8083     intResult = session->CommitConfig();
8084     EXPECT_EQ(intResult, 0);
8085 
8086     sptr<SlowMotionSession> slowSession = static_cast<SlowMotionSession *> (session.GetRefPtr());
8087     std::shared_ptr<OHOS::Camera::CameraMetadata> metadata =
8088         slowSession->GetInputDevice()->GetCameraDeviceInfo()->GetMetadata();
8089     uint8_t value_u8 = 0;
8090     bool result = false;
8091     // metadata item not found.
8092     result = slowSession->IsSlowMotionDetectionSupported();
8093     EXPECT_EQ(false, result);
8094     // metadata item data is 0.
8095     metadata->addEntry(OHOS_ABILITY_MOTION_DETECTION_SUPPORT, &value_u8, sizeof(uint8_t));
8096     result = slowSession->IsSlowMotionDetectionSupported();
8097     EXPECT_EQ(false, result);
8098     value_u8 = 1;
8099     // metadata item data is 1.
8100     metadata->updateEntry(OHOS_ABILITY_MOTION_DETECTION_SUPPORT, &value_u8, sizeof(uint8_t));
8101     result = slowSession->IsSlowMotionDetectionSupported();
8102     EXPECT_EQ(true, result);
8103 
8104     Rect rect;
8105     rect.topLeftX = 0.1;
8106     rect.topLeftY = 0.1;
8107     rect.width = 0.8;
8108     rect.height = 0.8;
8109     slowSession->SetSlowMotionDetectionArea(rect);
8110 
8111     std::shared_ptr<TestSlowMotionStateCallback> callback = std::make_shared<TestSlowMotionStateCallback>();
8112     slowSession->SetCallback(callback);
8113     EXPECT_EQ(slowSession->GetApplicationCallback(), callback);
8114 }
8115 
8116 /*
8117  * Feature: Framework
8118  * Function: Test PanoramaSession preview
8119  * SubFunction: NA
8120  * FunctionPoints: NA
8121  * EnvConditions: NA
8122  * CaseDescription: Test PanoramaSession preview
8123  */
8124 HWTEST_F(CameraFrameworkUnitTest, camera_panorama_unittest_001, TestSize.Level0)
8125 {
8126     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
8127     for (sptr<CameraDevice> camDevice : cameras) {
8128         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
8129         if (find(modes.begin(), modes.end(), SceneMode::PANORAMA_PHOTO) != modes.end()) {
8130             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
8131             ASSERT_NE(input, nullptr);
8132 
8133             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
8134             std::string cameraSettings = camInput->GetCameraSettings();
8135             camInput->SetCameraSettings(cameraSettings);
8136             camInput->GetCameraDevice()->Open();
8137 
8138             sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::PANORAMA_PHOTO);
8139             sptr<PanoramaSession> panoramaSession = static_cast<PanoramaSession *> (session.GetRefPtr());
8140             ASSERT_NE(panoramaSession, nullptr);
8141 
8142             sptr<Surface> previewSurface = Surface::CreateSurfaceAsConsumer();
8143             CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
8144             Size previewSize;
8145             previewSize.width = 1920;
8146             previewSize.height = 1080;
8147             Profile previewProfile = Profile(previewFormat, previewSize);
8148             sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, previewSurface);
8149             ASSERT_NE(previewOutput, nullptr);
8150 
8151             int32_t intResult = panoramaSession->BeginConfig();
8152             EXPECT_EQ(intResult, 0);
8153 
8154             intResult = panoramaSession->AddInput(input);
8155             EXPECT_EQ(intResult, 0);
8156 
8157             sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
8158             intResult = panoramaSession->AddOutput(previewOutputCaptureUpper);
8159             EXPECT_EQ(intResult, 0);
8160 
8161             intResult = panoramaSession->CommitConfig();
8162             EXPECT_EQ(intResult, 0);
8163 
8164             panoramaSession->Release();
8165             camInput->Close();
8166         }
8167     }
8168 }
8169 
8170 /*
8171  * Feature: Framework
8172  * Function: Test PanoramaSession set white balance lock
8173  * SubFunction: NA
8174  * FunctionPoints: NA
8175  * EnvConditions: NA
8176  * CaseDescription: Test PanoramaSession set white balance lock
8177  */
8178 HWTEST_F(CameraFrameworkUnitTest, camera_panorama_unittest_002, TestSize.Level0)
8179 {
8180     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
8181     for (sptr<CameraDevice> camDevice : cameras) {
8182         std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
8183         if (find(modes.begin(), modes.end(), SceneMode::PANORAMA_PHOTO) != modes.end()) {
8184             sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
8185             ASSERT_NE(input, nullptr);
8186 
8187             sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
8188             std::string cameraSettings = camInput->GetCameraSettings();
8189             camInput->SetCameraSettings(cameraSettings);
8190             camInput->GetCameraDevice()->Open();
8191 
8192             sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::PANORAMA_PHOTO);
8193             sptr<PanoramaSession> panoramaSession = static_cast<PanoramaSession *> (session.GetRefPtr());
8194             ASSERT_NE(panoramaSession, nullptr);
8195 
8196             sptr<Surface> previewSurface = Surface::CreateSurfaceAsConsumer();
8197             CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
8198             Size previewSize;
8199             previewSize.width = 1920;
8200             previewSize.height = 1080;
8201             Profile previewProfile = Profile(previewFormat, previewSize);
8202             sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, previewSurface);
8203             ASSERT_NE(previewOutput, nullptr);
8204 
8205             int32_t intResult = panoramaSession->BeginConfig();
8206             EXPECT_EQ(intResult, 0);
8207 
8208             intResult = panoramaSession->AddInput(input);
8209             EXPECT_EQ(intResult, 0);
8210 
8211             sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
8212             intResult = panoramaSession->AddOutput(previewOutputCaptureUpper);
8213             EXPECT_EQ(intResult, 0);
8214 
8215             intResult = panoramaSession->CommitConfig();
8216             EXPECT_EQ(intResult, 0);
8217 
8218             panoramaSession->SetWhiteBalanceMode(AWB_MODE_LOCKED);
8219             WhiteBalanceMode mode;
8220             panoramaSession->GetWhiteBalanceMode(mode);
8221             EXPECT_EQ(AWB_MODE_LOCKED, mode);
8222 
8223             panoramaSession->Release();
8224             camInput->Close();
8225         }
8226     }
8227 }
8228 
8229 HWTEST_F(CameraFrameworkUnitTest, test_capture_session_callbacks, TestSize.Level0)
8230 {
8231     sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::CAPTURE);
8232     ASSERT_NE(session, nullptr);
8233 
8234     bool isSessionStarted = session->IsSessionStarted();
8235     EXPECT_EQ(isSessionStarted, false);
8236     std::string deviceClass;
8237     int32_t intResult = session->SetPreviewRotation(deviceClass);
8238     EXPECT_EQ(intResult, 0);
8239 
8240     std::shared_ptr<TestExposureCallback> exposureCallback = std::make_shared<TestExposureCallback>();
8241     session->SetExposureCallback(exposureCallback);
8242     EXPECT_EQ(session->GetExposureCallback(), exposureCallback);
8243 
8244     std::shared_ptr<TestSmoothZoomCallback> smoothZoomCallback = std::make_shared<TestSmoothZoomCallback>();
8245     session->SetSmoothZoomCallback(smoothZoomCallback);
8246     EXPECT_EQ(session->GetSmoothZoomCallback(), smoothZoomCallback);
8247 
8248     std::shared_ptr<TestAbilityCallback> abilityCallback = std::make_shared<TestAbilityCallback>();
8249     session->SetAbilityCallback(abilityCallback);
8250 
8251     std::shared_ptr<TestFocusCallback> focusCallback = std::make_shared<TestFocusCallback>();
8252     session->SetFocusCallback(focusCallback);
8253     EXPECT_EQ(session->GetFocusCallback(), focusCallback);
8254 
8255     std::shared_ptr<TestARCallback> aRCallback = std::make_shared<TestARCallback>();
8256     session->SetARCallback(aRCallback);
8257     EXPECT_EQ(session->GetARCallback(), aRCallback);
8258 }
8259 
8260 HWTEST_F(CameraFrameworkUnitTest, test_CheckFrameRateRangeWithCurrentFps, TestSize.Level0)
8261 {
8262     sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::CAPTURE);
8263     ASSERT_NE(session, nullptr);
8264     ASSERT_EQ(session->CheckFrameRateRangeWithCurrentFps(30, 30, 30, 60), false);
8265     ASSERT_EQ(session->CheckFrameRateRangeWithCurrentFps(30, 30, 30, 60), false);
8266     ASSERT_EQ(session->CheckFrameRateRangeWithCurrentFps(20, 40, 20, 40), true);
8267     ASSERT_EQ(session->CheckFrameRateRangeWithCurrentFps(20, 40, 30, 60), false);
8268 }
8269 
8270 HWTEST_F(CameraFrameworkUnitTest, test_CanPreconfig, TestSize.Level0)
8271 {
8272     sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::CAPTURE);
8273     ASSERT_NE(session, nullptr);
8274     PreconfigType preconfigType = PreconfigType::PRECONFIG_720P;
8275     ProfileSizeRatio preconfigRatio = ProfileSizeRatio::RATIO_16_9;
8276     EXPECT_EQ(session->CanPreconfig(preconfigType, preconfigRatio), true);
8277     int32_t result = session->Preconfig(preconfigType, preconfigRatio);
8278     EXPECT_EQ(result, 0);
8279 }
8280 
8281 /*
8282  * Feature: Framework
8283  * Function: Test cameraManager GetSupportedOutputCapability with yuv photo
8284  * SubFunction: NA
8285  * FunctionPoints: NA
8286  * EnvConditions: NA
8287  * CaseDescription: Test cameraManager GetSupportedOutputCapability with yuv photo
8288  */
8289 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_can_get_yuv_photo_profile, TestSize.Level0)
8290 {
8291     std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
8292 
8293     SceneMode mode = PORTRAIT;
8294     std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
8295     ASSERT_TRUE(modes.size() != 0);
8296 
8297     sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
8298     ASSERT_NE(ability, nullptr);
8299 
8300     vector<Profile> photoProfiles = ability->GetPhotoProfiles();
8301     auto it = std::find_if(photoProfiles.begin(), photoProfiles.end(),
__anon2f8e288d0802(const auto& profile)8302         [](const auto& profile){ return profile.format_ == CAMERA_FORMAT_YUV_420_SP;});
8303 
8304     EXPECT_NE(it, photoProfiles.end());
8305 
8306     mode = SceneMode::CAPTURE;
8307     ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
8308     ASSERT_NE(ability, nullptr);
8309 
8310     it = std::find_if(photoProfiles.begin(), photoProfiles.end(),
__anon2f8e288d0902(const auto& profile)8311         [](const auto& profile){ return profile.format_ == CAMERA_FORMAT_YUV_420_SP;});
8312     EXPECT_NE(it, photoProfiles.end());
8313 }
8314 
8315 HWTEST_F(CameraFrameworkUnitTest, test_CreateBurstDisplayName, TestSize.Level0)
8316 {
8317     uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
8318     SceneMode opMode = CAPTURE;
8319     sptr<HCaptureSession> session = HCaptureSession::NewInstance(callerToken, opMode);
8320     std::string displayName = session->CreateBurstDisplayName(1);
8321     cout << "displayName: " << displayName <<endl;
8322     ASSERT_NE(displayName, "");
8323     ASSERT_THAT(displayName, testing::EndsWith("_COVER"));
8324     displayName = session->CreateBurstDisplayName(2);
8325     cout << "displayName: " << displayName <<endl;
8326     ASSERT_THAT(displayName, Not(testing::EndsWith("_COVER")));
8327     displayName = session->CreateBurstDisplayName(-1);
8328     cout << "displayName: " << displayName <<endl;
8329 }
8330 
8331 /*
8332  * Feature: Framework
8333  * Function: Verify that the method returns the correct list of cameras when the device is not foldable.
8334  * SubFunction: NA
8335  * FunctionPoints: NA
8336  * EnvConditions: NA
8337  * CaseDescription: Verify that the method returns the correct list of cameras when the device is not foldable.
8338  */
8339 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_not_foldable, TestSize.Level0)
8340 {
8341     EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8342         .WillRepeatedly(Return(false));
8343     std::vector<sptr<CameraDevice>> expectedCameraList;
8344     auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8345     auto camera0 = new CameraDevice("device0", changedMetadata);
8346     auto camera1 = new CameraDevice("device1", changedMetadata);
8347     auto camera2 = new CameraDevice("device2", changedMetadata);
8348     expectedCameraList.emplace_back(camera0);
8349     expectedCameraList.emplace_back(camera1);
8350     expectedCameraList.emplace_back(camera2);
8351     mockCameraManager->cameraDeviceList_ = expectedCameraList;
8352     auto result = mockCameraManager->GetSupportedCameras();
8353     ASSERT_EQ(result.size(), expectedCameraList.size());
8354 }
8355 
8356 /*
8357  * Feature: Framework
8358  * Function: The goal is to verify that the method correctly returns the list of supported cameras when the device is
8359               collapsible and in the "expand" state
8360  * SubFunction: NA
8361  * FunctionPoints: NA
8362  * EnvConditions: NA
8363  * CaseDescription: The goal is to verify that the method correctly returns the list of supported cameras when the
8364                device is collapsible and in the "expand" state
8365  */
8366 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_foldable_expand01, TestSize.Level0)
8367 {
8368     EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8369         .WillRepeatedly(Return(true));
8370 
8371     EXPECT_CALL(*mockCameraManager, GetFoldStatus())
8372         .WillRepeatedly(Return(FoldStatus::EXPAND));
8373 
8374     auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8375     int32_t cameraPosition = CAMERA_POSITION_BACK;
8376     changedMetadata->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8377     int32_t foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED | OHOS_CAMERA_FOLD_STATUS_FOLDED;
8378     changedMetadata->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8379     auto camera0 = new CameraDevice("device0", changedMetadata);
8380 
8381     auto changedMetadata1 = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8382     cameraPosition = CAMERA_POSITION_FRONT;
8383     changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8384     foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED;
8385     changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8386     auto camera1 = new CameraDevice("device1", changedMetadata1);
8387 
8388     std::vector<sptr<CameraDevice>> expectedCameraList;
8389     expectedCameraList.emplace_back(camera0);
8390     expectedCameraList.emplace_back(camera1);
8391     mockCameraManager->cameraDeviceList_ = expectedCameraList;
8392     auto result = mockCameraManager->GetSupportedCameras();
8393 
8394     ASSERT_EQ(result.size(), 2);
8395 }
8396 
8397 /*
8398  * Feature: Framework
8399  * Function: The goal is to verify that the method correctly returns the list of supported cameras when the device is
8400               collapsible and in the "expand" state
8401  * SubFunction: NA
8402  * FunctionPoints: NA
8403  * EnvConditions: NA
8404  * CaseDescription: The goal is to verify that the method correctly returns the list of supported cameras when the
8405                device is collapsible and in the "expand" state
8406  */
8407 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_foldable_expand02, TestSize.Level0)
8408 {
8409     EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8410         .WillRepeatedly(Return(true));
8411 
8412     EXPECT_CALL(*mockCameraManager, GetFoldStatus())
8413         .WillRepeatedly(Return(FoldStatus::EXPAND));
8414 
8415     auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8416     int32_t cameraPosition = CAMERA_POSITION_BACK;
8417     changedMetadata->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8418     int32_t foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED | OHOS_CAMERA_FOLD_STATUS_FOLDED;
8419     changedMetadata->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8420     auto camera0 = new CameraDevice("device0", changedMetadata);
8421 
8422     auto changedMetadata1 = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8423     cameraPosition = CAMERA_POSITION_FRONT;
8424     changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8425     foldStatus = OHOS_CAMERA_FOLD_STATUS_FOLDED;
8426     changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8427     auto camera1 = new CameraDevice("device1", changedMetadata1);
8428 
8429     std::vector<sptr<CameraDevice>> expectedCameraList;
8430     expectedCameraList.emplace_back(camera0);
8431     expectedCameraList.emplace_back(camera1);
8432     mockCameraManager->cameraDeviceList_ = expectedCameraList;
8433     auto result = mockCameraManager->GetSupportedCameras();
8434 
8435     ASSERT_EQ(result.size(), 1);
8436 }
8437 
8438 /*
8439  * Feature: Framework
8440  * Function: In the scenario where the device is foldable and in a folded state, the goal is to ensure that the method
8441              correctly returns the list of cameras that support the current folded state.
8442  * SubFunction: NA
8443  * FunctionPoints: NA
8444  * EnvConditions: NA
8445  * CaseDescription: In the scenario where the device is foldable and in a folded state, the goal is to ensure that the
8446               method correctly returns the list of cameras that support the current folded state.
8447  */
8448 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_foldable_fold, TestSize.Level0)
8449 {
8450     EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8451         .WillRepeatedly(Return(true));
8452 
8453     EXPECT_CALL(*mockCameraManager, GetFoldStatus())
8454         .WillRepeatedly(Return(FoldStatus::FOLDED));
8455 
8456     auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8457     int32_t cameraPosition = CAMERA_POSITION_BACK;
8458     changedMetadata->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8459     int32_t foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED | OHOS_CAMERA_FOLD_STATUS_FOLDED;
8460     changedMetadata->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8461     auto camera0 = new CameraDevice("device0", changedMetadata);
8462 
8463     auto changedMetadata1 = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8464     cameraPosition = CAMERA_POSITION_FRONT;
8465     changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8466     foldStatus = OHOS_CAMERA_FOLD_STATUS_FOLDED;
8467     changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8468     auto camera1 = new CameraDevice("device1", changedMetadata1);
8469 
8470     std::vector<sptr<CameraDevice>> expectedCameraList;
8471     expectedCameraList.emplace_back(camera0);
8472     expectedCameraList.emplace_back(camera1);
8473     mockCameraManager->cameraDeviceList_ = expectedCameraList;
8474     auto result = mockCameraManager->GetSupportedCameras();
8475 
8476     ASSERT_EQ(result.size(), 2);
8477 }
8478 
8479 /*
8480  * Feature: Framework
8481  * Function: The unit test get_supported_cameras_foldable_half_fold checks the behavior of the
8482              CameraManager::GetSupportedCameras method when the device is foldable and in a half-folded state.
8483  * SubFunction: NA
8484  * FunctionPoints: NA
8485  * EnvConditions: NA
8486  * CaseDescription: The unit test get_supported_cameras_foldable_half_fold checks the behavior of the
8487              CameraManager::GetSupportedCameras method when the device is foldable and in a half-folded state.
8488  */
8489 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_foldable_half_fold, TestSize.Level0)
8490 {
8491     EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8492         .WillRepeatedly(Return(true));
8493 
8494     EXPECT_CALL(*mockCameraManager, GetFoldStatus())
8495         .WillRepeatedly(Return(FoldStatus::HALF_FOLD));
8496 
8497     auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8498     int32_t cameraPosition = CAMERA_POSITION_BACK;
8499     changedMetadata->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8500     int32_t foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED | OHOS_CAMERA_FOLD_STATUS_FOLDED;
8501     changedMetadata->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8502     auto camera0 = new CameraDevice("device0", changedMetadata);
8503 
8504     auto changedMetadata1 = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8505     cameraPosition = CAMERA_POSITION_FRONT;
8506     changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8507     foldStatus = OHOS_CAMERA_FOLD_STATUS_FOLDED;
8508     changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8509     auto camera1 = new CameraDevice("device1", changedMetadata1);
8510 
8511     std::vector<sptr<CameraDevice>> expectedCameraList;
8512     expectedCameraList.emplace_back(camera0);
8513     expectedCameraList.emplace_back(camera1);
8514     mockCameraManager->cameraDeviceList_ = expectedCameraList;
8515     auto result = mockCameraManager->GetSupportedCameras();
8516     ASSERT_EQ(result.size(), 1);
8517 }
8518 } // CameraStandard
8519 } // OHOS
8520