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);
__anon779f14c50702() 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
5520 cameras[0]->zoomRatioRange_ = {1.1, 2.1};
5521 EXPECT_EQ(cameras[0]->GetZoomRatioRange(), cameras[0]->zoomRatioRange_);
5522 }
5523
5524 /*
5525 * Feature: Framework
5526 * Function: Test camerainput with cameraserverdied
5527 * SubFunction: NA
5528 * FunctionPoints: NA
5529 * EnvConditions: NA
5530 * CaseDescription: Test camerainput with cameraserverdied
5531 */
5532 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_058, TestSize.Level0)
5533 {
5534 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5535 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5536 ASSERT_NE(input, nullptr);
5537 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5538
5539 pid_t pid = 0;
5540 camInput->CameraServerDied(pid);
5541 }
5542
5543 /*
5544 * Feature: Framework
5545 * Function: Test camerainput with deviceObj_ is nullptr
5546 * SubFunction: NA
5547 * FunctionPoints: NA
5548 * EnvConditions: NA
5549 * CaseDescription: Test camerainput with deviceObj_ is nullptr
5550 */
5551 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_059, TestSize.Level0)
5552 {
5553 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5554
5555 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5556 ASSERT_NE(input, nullptr);
5557 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5558
5559 pid_t pid = 0;
5560 std::shared_ptr<TestDeviceCallback> setCallback = std::make_shared<TestDeviceCallback>("InputCallback");
5561 camInput->deviceObj_ = nullptr;
5562 camInput->SetErrorCallback(setCallback);
5563 camInput->CameraServerDied(pid);
5564 }
5565
5566 /*
5567 * Feature: Framework
5568 * Function: Test metadataoutput with cameraserverdied and stop
5569 * SubFunction: NA
5570 * FunctionPoints: NA
5571 * EnvConditions: NA
5572 * CaseDescription: Test metadataoutput with cameraserverdied and stop
5573 */
5574 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_060, TestSize.Level0)
5575 {
5576 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5577 sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
5578 ASSERT_NE(output, nullptr);
5579 sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
5580
5581 pid_t pid = 0;
5582 metadatOutput->CameraServerDied(pid);
5583 EXPECT_EQ(metadatOutput->Stop(), CameraErrorCode::SERVICE_FATL_ERROR);
5584 }
5585
5586 /*
5587 * Feature: Framework
5588 * Function: Test metadataoutput with stream_ is nullptr
5589 * SubFunction: NA
5590 * FunctionPoints: NA
5591 * EnvConditions: NA
5592 * CaseDescription: Test metadataoutput with stream_ is nullptr
5593 */
5594 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_061, TestSize.Level0)
5595 {
5596 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5597
5598 sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
5599 ASSERT_NE(output, nullptr);
5600 sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
5601
5602 pid_t pid = 0;
5603 metadatOutput->stream_ = nullptr;
5604 metadatOutput->CameraServerDied(pid);
5605 EXPECT_EQ(metadatOutput->Stop(), CameraErrorCode::SERVICE_FATL_ERROR);
5606 EXPECT_EQ(metadatOutput->Release(), CameraErrorCode::SERVICE_FATL_ERROR);
5607 }
5608
5609 /*
5610 * Feature: Framework
5611 * Function: Test metadataoutput with surface_ is nullptr
5612 * SubFunction: NA
5613 * FunctionPoints: NA
5614 * EnvConditions: NA
5615 * CaseDescription: Test metadataoutput with surface_ is nullptr
5616 */
5617 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_062, TestSize.Level0)
5618 {
5619 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5620
5621 sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
5622 ASSERT_NE(output, nullptr);
5623 sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
5624
5625 metadatOutput->surface_ = nullptr;
5626 EXPECT_EQ(metadatOutput->Release(), 0);
5627 }
5628
5629 /*
5630 * Feature: Framework
5631 * Function: Test metadataoutput with start when session_ is nullptr
5632 * SubFunction: NA
5633 * FunctionPoints: NA
5634 * EnvConditions: NA
5635 * CaseDescription: Test metadataoutput with start when session_ is nullptr
5636 */
5637 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_063, TestSize.Level0)
5638 {
5639 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5640
5641 sptr<CaptureOutput> metadata = cameraManager->CreateMetadataOutput();
5642 ASSERT_NE(metadata, nullptr);
5643 sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)metadata;
5644
5645 metadatOutput->session_ = nullptr;
5646 EXPECT_EQ(metadatOutput->Start(), CameraErrorCode::SUCCESS);
5647 }
5648
5649 /*
5650 * Feature: Framework
5651 * Function: Test metadataoutput with start when not commit
5652 * SubFunction: NA
5653 * FunctionPoints: NA
5654 * EnvConditions: NA
5655 * CaseDescription: Test metadataoutput with start when not commit
5656 */
5657 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_064, TestSize.Level0)
5658 {
5659 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5660
5661 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5662 ASSERT_NE(input, nullptr);
5663
5664 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5665 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5666 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5667 std::string cameraSettings = camInput->GetCameraSettings();
5668 camInput->SetCameraSettings(cameraSettings);
5669 camInput->GetCameraDevice()->Open();
5670
5671 sptr<CaptureOutput> metadata = cameraManager->CreateMetadataOutput();
5672 ASSERT_NE(metadata, nullptr);
5673 sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)metadata;
5674
5675 sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5676 ASSERT_NE(session, nullptr);
5677
5678 session->BeginConfig();
5679 session->AddInput(input);
5680 session->AddOutput(metadata);
5681
5682 EXPECT_EQ(metadatOutput->Start(), CameraErrorCode::SUCCESS);
5683
5684 session->CommitConfig();
5685 session->Start();
5686
5687 input->Close();
5688 }
5689
5690 /*
5691 * Feature: Framework
5692 * Function: Test metadataoutput with start when stream_ is nullptr
5693 * SubFunction: NA
5694 * FunctionPoints: NA
5695 * EnvConditions: NA
5696 * CaseDescription: Test metadataoutput with start when stream_ is nullptr
5697 */
5698 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_065, TestSize.Level0)
5699 {
5700 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5701
5702 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5703 ASSERT_NE(input, nullptr);
5704 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5705
5706 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5707 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5708 std::string cameraSettings = camInput->GetCameraSettings();
5709 camInput->SetCameraSettings(cameraSettings);
5710 camInput->GetCameraDevice()->Open();
5711
5712 sptr<CaptureOutput> metadata = cameraManager->CreateMetadataOutput();
5713 ASSERT_NE(metadata, nullptr);
5714 sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)metadata;
5715
5716 sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5717 ASSERT_NE(session, nullptr);
5718
5719 session->BeginConfig();
5720
5721 session->AddInput(input);
5722 session->AddOutput(metadata);
5723
5724 session->CommitConfig();
5725 session->Start();
5726
5727 metadatOutput->stream_ = nullptr;
5728 EXPECT_EQ(metadatOutput->Start(), CameraErrorCode::SUCCESS);
5729
5730 input->Close();
5731 }
5732
5733 /*
5734 * Feature: Framework
5735 * Function: Test metadataoutput with start
5736 * SubFunction: NA
5737 * FunctionPoints: NA
5738 * EnvConditions: NA
5739 * CaseDescription: Test metadataoutput with start
5740 */
5741 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_066, TestSize.Level0)
5742 {
5743 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5744
5745 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5746 ASSERT_NE(input, nullptr);
5747 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
5748
5749 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
5750 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
5751 std::string cameraSettings = camInput->GetCameraSettings();
5752 camInput->SetCameraSettings(cameraSettings);
5753 camInput->GetCameraDevice()->Open();
5754
5755 sptr<CaptureOutput> metadata = cameraManager->CreateMetadataOutput();
5756 ASSERT_NE(metadata, nullptr);
5757 sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)metadata;
5758
5759 sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5760 ASSERT_NE(session, nullptr);
5761
5762 session->BeginConfig();
5763
5764 session->AddInput(input);
5765 session->AddOutput(metadata);
5766
5767 session->CommitConfig();
5768 session->Start();
5769
5770 EXPECT_EQ(metadatOutput->Start(), CameraErrorCode::SUCCESS);
5771 EXPECT_EQ(metadatOutput->Stop(), CameraErrorCode::SUCCESS);
5772 metadatOutput->Release();
5773
5774 input->Close();
5775 }
5776
5777 /*
5778 * Feature: Framework
5779 * Function: Test metadataoutput when destruction
5780 * SubFunction: NA
5781 * FunctionPoints: NA
5782 * EnvConditions: NA
5783 * CaseDescription: Test metadataoutput when destruction
5784 */
5785 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_067, TestSize.Level0)
5786 {
5787 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5788
5789 sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
5790 ASSERT_NE(output, nullptr);
5791 sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
5792
5793 metadatOutput->Release();
5794 EXPECT_EQ(metadatOutput->Stop(), CameraErrorCode::SERVICE_FATL_ERROR);
5795 }
5796
5797 /*
5798 * Feature: Framework
5799 * Function: Test photooutput with cameraserverdied
5800 * SubFunction: NA
5801 * FunctionPoints: NA
5802 * EnvConditions: NA
5803 * CaseDescription: Test photooutput with cameraserverdied
5804 */
5805 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_068, TestSize.Level0)
5806 {
5807 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5808
5809 sptr<CaptureOutput> photoOutput = CreatePhotoOutput();
5810 ASSERT_NE(photoOutput, nullptr);
5811
5812 pid_t pid = 0;
5813 photoOutput->CameraServerDied(pid);
5814 }
5815
5816 /*
5817 * Feature: Framework
5818 * Function: Test photooutput with cameraserverdied
5819 * SubFunction: NA
5820 * FunctionPoints: NA
5821 * EnvConditions: NA
5822 * CaseDescription: Test photooutput with cameraserverdied
5823 */
5824 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_069, TestSize.Level0)
5825 {
5826 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5827
5828 sptr<CaptureOutput> photoOutput = CreatePhotoOutput();
5829 ASSERT_NE(photoOutput, nullptr);
5830
5831 pid_t pid = 0;
5832 std::shared_ptr<PhotoStateCallback> setCallback =
5833 std::make_shared<TestPhotoOutputCallback>("PhotoStateCallback");
5834 ((sptr<PhotoOutput>&)photoOutput)->SetCallback(setCallback);
5835 photoOutput->CameraServerDied(pid);
5836 }
5837
5838 /*
5839 * Feature: Framework
5840 * Function: Test photooutput with cameraserverdied when stream_ is nullptr
5841 * SubFunction: NA
5842 * FunctionPoints: NA
5843 * EnvConditions: NA
5844 * CaseDescription: Test photooutput with cameraserverdied when stream_ is nullptr
5845 */
5846 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_070, TestSize.Level0)
5847 {
5848 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5849
5850 sptr<CaptureOutput> photoOutput = CreatePhotoOutput();
5851 ASSERT_NE(photoOutput, nullptr);
5852
5853 pid_t pid = 0;
5854 sptr<PhotoOutput> phtOutput = (sptr<PhotoOutput>&)photoOutput;
5855 phtOutput->stream_ = nullptr;
5856 photoOutput->CameraServerDied(pid);
5857 }
5858
5859 /*
5860 * Feature: Framework
5861 * Function: Test photooutput with confirmcapture when stream_ is nullptr
5862 * SubFunction: NA
5863 * FunctionPoints: NA
5864 * EnvConditions: NA
5865 * CaseDescription: Test photooutput with confirmcapture when stream_ is nullptr
5866 */
5867 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_071, TestSize.Level0)
5868 {
5869 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5870 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5871 ASSERT_NE(input, nullptr);
5872
5873 sptr<CaptureOutput> photoOutput = CreatePhotoOutput();
5874 ASSERT_NE(photoOutput, nullptr);
5875 sptr<PhotoOutput> phtOutput = (sptr<PhotoOutput>&)photoOutput;
5876
5877 sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5878 ASSERT_NE(session, nullptr);
5879
5880 int32_t ret = session->BeginConfig();
5881 EXPECT_EQ(ret, 0);
5882
5883 ret = session->AddOutput(photoOutput);
5884 session->CommitConfig();
5885
5886 phtOutput->stream_ = nullptr;
5887 EXPECT_EQ(phtOutput->ConfirmCapture(), CameraErrorCode::SESSION_NOT_RUNNING);
5888
5889 phtOutput->Release();
5890 EXPECT_EQ(phtOutput->ConfirmCapture(), CameraErrorCode::SESSION_NOT_RUNNING);
5891
5892 session->Release();
5893 }
5894
5895 /*
5896 * Feature: Framework
5897 * Function: Test previewoutput
5898 * SubFunction: NA
5899 * FunctionPoints: NA
5900 * EnvConditions: NA
5901 * CaseDescription: Test previewoutput
5902 */
5903 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_072, TestSize.Level0)
5904 {
5905 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5906
5907 sptr<CaptureOutput> preview = CreatePreviewOutput();
5908 ASSERT_NE(preview, nullptr);
5909
5910 auto previewOutput = (sptr<PreviewOutput>&)preview;
5911 previewOutput->stream_ = nullptr;
5912 previewOutput->session_ = nullptr;
5913
5914 EXPECT_EQ(previewOutput->OnSketchStatusChanged(SketchStatus::STOPED), CAMERA_INVALID_STATE);
5915 EXPECT_EQ(previewOutput->IsSketchSupported(), false);
5916
5917 Size previewSize = {};
5918 previewOutput->stream_ = nullptr;
5919 EXPECT_EQ(previewOutput->CreateSketchWrapper(previewSize), CameraErrorCode::SERVICE_FATL_ERROR);
5920 }
5921
5922 /*
5923 * Feature: Framework
5924 * Function: Test previewoutput with callback and cameraserverdied
5925 * SubFunction: NA
5926 * FunctionPoints: NA
5927 * EnvConditions: NA
5928 * CaseDescription: Test previewoutput with callback and cameraserverdied
5929 */
5930 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_073, TestSize.Level0)
5931 {
5932 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5933
5934 sptr<CaptureOutput> preview = CreatePreviewOutput();
5935 ASSERT_NE(preview, nullptr);
5936
5937 auto previewOutput = (sptr<PreviewOutput>&)preview;
5938
5939 std::string eventString = "sketchStatusChanged";
5940 previewOutput->sketchWrapper_ = nullptr;
5941 previewOutput->OnNativeRegisterCallback(eventString);
5942 previewOutput->OnNativeUnregisterCallback(eventString);
5943
5944 pid_t pid = 0;
5945 previewOutput->stream_ = nullptr;
5946 previewOutput->CameraServerDied(pid);
5947 }
5948
5949 /*
5950 * Feature: Framework
5951 * Function: Test sketchwrapper
5952 * SubFunction: NA
5953 * FunctionPoints: NA
5954 * EnvConditions: NA
5955 * CaseDescription: Test sketchwrapper
5956 */
5957 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_074, TestSize.Level0)
5958 {
5959 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
5960
5961 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
5962 ASSERT_NE(input, nullptr);
5963 sptr<CameraInput> cameraInput = (sptr<CameraInput>&)input;
5964
5965 std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata = cameraInput->GetCameraDeviceInfo()->GetMetadata();
5966 ASSERT_NE(deviceMetadata, nullptr);
5967
5968 int32_t width = 1440;
5969 int32_t height = 1080;
5970 CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
5971 Size previewSize;
5972 previewSize.width = width;
5973 previewSize.height = height;
5974 sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
5975 Profile previewProfile = Profile(previewFormat, previewSize);
5976 sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, surface);
5977 ASSERT_NE(previewOutput, nullptr);
5978
5979 Size sketchSize;
5980 sketchSize.width = 640;
5981 sketchSize.height = 480;
5982
5983 SketchWrapper* sketchWrapper = new (std::nothrow) SketchWrapper(previewOutput->GetStream(), sketchSize);
5984 ASSERT_NE(sketchWrapper, nullptr);
5985 sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
5986 ASSERT_NE(session, nullptr);
5987 auto modeName = session->GetFeaturesMode();
5988 int ret = sketchWrapper->Init(deviceMetadata, modeName);
5989 EXPECT_EQ(ret, CAMERA_OK);
5990
5991 sketchWrapper->sketchStream_ = nullptr;
5992 ret = sketchWrapper->AttachSketchSurface(nullptr);
5993 EXPECT_EQ(ret, CAMERA_INVALID_STATE);
5994 EXPECT_EQ(sketchWrapper->StartSketchStream(), CAMERA_UNKNOWN_ERROR);
5995
5996 std::shared_ptr<OHOS::Camera::CameraMetadata> metadata;
5997 sketchWrapper->UpdateSketchEnableRatio(metadata);
5998 sketchWrapper->UpdateSketchReferenceFovRatio(metadata);
5999 sketchWrapper->UpdateSketchConfigFromMoonCaptureBoostConfig(metadata);
6000 }
6001
6002 /*
6003 * Feature: Framework
6004 * Function: Test sketchwrapper
6005 * SubFunction: NA
6006 * FunctionPoints: NA
6007 * EnvConditions: NA
6008 * CaseDescription: Test sketchwrapper
6009 */
6010 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_075, TestSize.Level0)
6011 {
6012 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6013
6014 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
6015 ASSERT_NE(input, nullptr);
6016 sptr<CameraInput> cameraInput = (sptr<CameraInput>&)input;
6017
6018 std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata =
6019 cameraInput->GetCameraDeviceInfo()->GetMetadata();
6020 ASSERT_NE(deviceMetadata, nullptr);
6021
6022 int32_t width = 1440;
6023 int32_t height = 1080;
6024 CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
6025 Size previewSize;
6026 previewSize.width = width;
6027 previewSize.height = height;
6028 sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
6029 Profile previewProfile = Profile(previewFormat, previewSize);
6030 sptr<CaptureOutput> previewOutput =
6031 cameraManager->CreatePreviewOutput(previewProfile, surface);
6032 ASSERT_NE(previewOutput, nullptr);
6033
6034 Size sketchSize;
6035 sketchSize.width = 640;
6036 sketchSize.height = 480;
6037
6038 sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
6039 ASSERT_NE(session, nullptr);
6040 SketchWrapper *sketchWrapper = new (std::nothrow)
6041 SketchWrapper(previewOutput->GetStream(), sketchSize);
6042 ASSERT_NE(sketchWrapper, nullptr);
6043
6044 auto modeName = session->GetFeaturesMode();
6045 int ret = sketchWrapper->Init(deviceMetadata, modeName);
6046 EXPECT_EQ(ret, CAMERA_OK);
6047
6048 float sketchRatio = sketchWrapper->GetSketchEnableRatio(session->GetFeaturesMode());
6049 EXPECT_EQ(sketchRatio, -1.0);
6050 sketchWrapper->hostStream_ = nullptr;
6051 EXPECT_EQ(sketchWrapper->UpdateSketchRatio(sketchRatio), CAMERA_INVALID_STATE);
6052 EXPECT_EQ(sketchWrapper->Destroy(), CAMERA_INVALID_STATE);
6053 }
6054
6055 /*
6056 * Feature: Framework
6057 * Function: Test sketchwrapper with different tag
6058 * SubFunction: NA
6059 * FunctionPoints: NA
6060 * EnvConditions: NA
6061 * CaseDescription: Test sketchwrapper with different tag
6062 */
6063 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_076, TestSize.Level0)
6064 {
6065 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6066
6067 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
6068 ASSERT_NE(input, nullptr);
6069 sptr<CameraInput> cameraInput = (sptr<CameraInput>&)input;
6070
6071 std::shared_ptr<OHOS::Camera::CameraMetadata> deviceMetadata =
6072 cameraInput->GetCameraDeviceInfo()->GetMetadata();
6073 ASSERT_NE(deviceMetadata, nullptr);
6074
6075 int32_t width = 1440;
6076 int32_t height = 1080;
6077 CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
6078 Size previewSize;
6079 previewSize.width = width;
6080 previewSize.height = height;
6081 sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
6082 Profile previewProfile = Profile(previewFormat, previewSize);
6083 sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, surface);
6084 ASSERT_NE(previewOutput, nullptr);
6085
6086 Size sketchSize;
6087 sketchSize.width = 640;
6088 sketchSize.height = 480;
6089
6090 sptr<CaptureSession> session = cameraManager->CreateCaptureSession();
6091 ASSERT_NE(session, nullptr);
6092 SketchWrapper *sketchWrapper = new (std::nothrow)
6093 SketchWrapper(previewOutput->GetStream(), sketchSize);
6094 ASSERT_NE(sketchWrapper, nullptr);
6095
6096 auto modeName = session->GetFeaturesMode();
6097 std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
6098 camera_metadata_item_t item;
6099 OHOS::Camera::FindCameraMetadataItem(metadata->get(), OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS, &item);
6100 const camera_device_metadata_tag_t tag1 = OHOS_CONTROL_ZOOM_RATIO;
6101 EXPECT_EQ(sketchWrapper->OnMetadataDispatch(modeName, tag1, item), 0);
6102 const camera_device_metadata_tag_t tag2 = OHOS_CONTROL_CAMERA_MACRO;
6103 EXPECT_EQ(sketchWrapper->OnMetadataDispatch(modeName, tag2, item), CAM_META_SUCCESS);
6104 }
6105
6106 /*
6107 * Feature: Framework
6108 * Function: Test videooutput with cameraserverdied
6109 * SubFunction: NA
6110 * FunctionPoints: NA
6111 * EnvConditions: NA
6112 * CaseDescription: Test videooutput with cameraserverdied
6113 */
6114 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_077, TestSize.Level0)
6115 {
6116 int32_t width = VIDEO_DEFAULT_WIDTH;
6117 int32_t height = VIDEO_DEFAULT_HEIGHT;
6118 sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
6119 CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
6120 Size videoSize;
6121 videoSize.width = width;
6122 videoSize.height = height;
6123 std::vector<int32_t> videoFramerates = {30, 30};
6124 VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
6125 sptr<VideoOutput> video = cameraManager->CreateVideoOutput(videoProfile, surface);
6126 ASSERT_NE(video, nullptr);
6127
6128 pid_t pid = 0;
6129 video->CameraServerDied(pid);
6130 }
6131
6132 /*
6133 * Feature: Framework
6134 * Function: Test videooutput with cameraserverdied when stream_ is nullptr
6135 * SubFunction: NA
6136 * FunctionPoints: NA
6137 * EnvConditions: NA
6138 * CaseDescription: Test videooutput with cameraserverdied when stream_ is nullptr
6139 */
6140 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_078, TestSize.Level0)
6141 {
6142 int32_t width = VIDEO_DEFAULT_WIDTH;
6143 int32_t height = VIDEO_DEFAULT_HEIGHT;
6144 sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
6145 CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
6146 Size videoSize;
6147 videoSize.width = width;
6148 videoSize.height = height;
6149 std::vector<int32_t> videoFramerates = {30, 30};
6150 VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
6151 sptr<VideoOutput> video = cameraManager->CreateVideoOutput(videoProfile, surface);
6152 ASSERT_NE(video, nullptr);
6153
6154 pid_t pid = 0;
6155 video->stream_ = nullptr;
6156 std::shared_ptr<VideoStateCallback> setCallback =
6157 std::make_shared<TestVideoOutputCallback>("VideoStateCallback");
6158 video->SetCallback(setCallback);
6159 video->CameraServerDied(pid);
6160 }
6161
6162 /*
6163 * Feature: Framework
6164 * Function: Test videooutput when destruction
6165 * SubFunction: NA
6166 * FunctionPoints: NA
6167 * EnvConditions: NA
6168 * CaseDescription: Test videooutput when destruction
6169 */
6170 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_079, TestSize.Level0)
6171 {
6172 int32_t width = VIDEO_DEFAULT_WIDTH;
6173 int32_t height = VIDEO_DEFAULT_HEIGHT;
6174 sptr<Surface> surface = Surface::CreateSurfaceAsConsumer();
6175 CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
6176 Size videoSize;
6177 videoSize.width = width;
6178 videoSize.height = height;
6179 std::vector<int32_t> videoFramerates = {30, 30};
6180 VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
6181 sptr<VideoOutput> video = cameraManager->CreateVideoOutput(videoProfile, surface);
6182 ASSERT_NE(video, nullptr);
6183 }
6184
6185 /*
6186 * Feature: Framework
6187 * Function: Test HCameraDevice when settings is nullptr
6188 * SubFunction: NA
6189 * FunctionPoints: NA
6190 * EnvConditions: NA
6191 * CaseDescription: Test HCameraDevice when settings is nullptr
6192 */
6193 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_080, TestSize.Level0)
6194 {
6195 std::vector<int32_t> result;
6196 result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6197 result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6198
6199 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6200
6201 sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6202 std::string cameraId = cameras[0]->GetID();
6203 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6204 sptr<HCameraDevice> camDevice = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken);
6205 ASSERT_NE(camDevice, nullptr);
6206 std::shared_ptr<OHOS::Camera::CameraMetadata> settings;
6207 EXPECT_EQ(camDevice->UpdateSettingOnce(settings), CAMERA_INVALID_ARG);
6208 }
6209
6210 /*
6211 * Feature: Framework
6212 * Function: Test HCameraDevice
6213 * SubFunction: NA
6214 * FunctionPoints: NA
6215 * EnvConditions: NA
6216 * CaseDescription: Test HCameraDevice
6217 */
6218 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_081, TestSize.Level0)
6219 {
6220 std::vector<int32_t> result;
6221 result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6222 result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6223
6224 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6225
6226 sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6227 std::string cameraId = cameras[0]->GetID();
6228 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6229 sptr<HCameraDevice> camDevice = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken);
6230 ASSERT_NE(camDevice, nullptr);
6231 std::shared_ptr<OHOS::Camera::CameraMetadata> settings = cameras[0]->GetMetadata();
6232 EXPECT_EQ(camDevice->UpdateSettingOnce(settings), 0);
6233
6234 camDevice->RegisterFoldStatusListener();
6235 camDevice->UnRegisterFoldStatusListener();
6236 }
6237
6238 /*
6239 * Feature: Framework
6240 * Function: Test HCameraDevice
6241 * SubFunction: NA
6242 * FunctionPoints: NA
6243 * EnvConditions: NA
6244 * CaseDescription: Test HCameraDevice
6245 */
6246 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_082, TestSize.Level0)
6247 {
6248 std::vector<int32_t> result;
6249 result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6250 result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6251
6252 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6253
6254 sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6255 std::string cameraId = cameras[0]->GetID();
6256 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6257 sptr<HCameraDevice> camDevice = new(std::nothrow) HCameraDevice(cameraHostManager, cameraId, callerToken);
6258 ASSERT_NE(camDevice, nullptr);
6259
6260 camDevice->UnRegisterFoldStatusListener();
6261 camDevice->RegisterFoldStatusListener();
6262 camDevice->UnRegisterFoldStatusListener();
6263 camDevice->cameraHostManager_ = nullptr;
6264 camDevice->RegisterFoldStatusListener();
6265 camDevice->UnRegisterFoldStatusListener();
6266
6267 std::vector<int32_t> results = {};
6268 EXPECT_EQ(camDevice->EnableResult(results), CAMERA_INVALID_ARG);
6269 EXPECT_EQ(camDevice->DisableResult(results), CAMERA_INVALID_ARG);
6270
6271 std::shared_ptr<OHOS::Camera::CameraMetadata> metaIn;
6272 std::shared_ptr<OHOS::Camera::CameraMetadata> metaOut;
6273 EXPECT_EQ(camDevice->GetStatus(metaIn, metaOut), CAMERA_INVALID_ARG);
6274
6275 camDevice->Close();
6276 }
6277
6278 /*
6279 * Feature: Framework
6280 * Function: Test HCameraDevice when hdiCameraDevice_ is nullptr
6281 * SubFunction: NA
6282 * FunctionPoints: NA
6283 * EnvConditions: NA
6284 * CaseDescription: Test HCameraDevice when hdiCameraDevice_ is nullptr
6285 */
6286 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_083, 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 camDevice->hdiCameraDevice_ = nullptr;
6302 EXPECT_EQ(camDevice->InitStreamOperator(), CAMERA_UNKNOWN_ERROR);
6303 }
6304
6305 /*
6306 * Feature: Framework
6307 * Function: Test HCameraDevice when streamOperator_ is nullptr
6308 * SubFunction: NA
6309 * FunctionPoints: NA
6310 * EnvConditions: NA
6311 * CaseDescription: Test HCameraDevice when streamOperator_ is nullptr
6312 */
6313 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_084, TestSize.Level0)
6314 {
6315 std::vector<int32_t> result;
6316 result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6317 result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6318
6319 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6320
6321 sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6322 std::string cameraId = cameras[0]->GetID();
6323 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6324 sptr<HCameraDevice> camDevice = new(std::nothrow)
6325 HCameraDevice(cameraHostManager, cameraId, callerToken);
6326 ASSERT_NE(camDevice, nullptr);
6327
6328 std::vector<HDI::Camera::V1_1::StreamInfo_V1_1> streamInfos = {};
6329 camDevice->CreateStreams(streamInfos);
6330
6331 std::shared_ptr<OHOS::Camera::CameraMetadata> deviceSettings = cameras[0]->GetMetadata();
6332 int32_t operationMode = 0;
6333 camDevice->streamOperator_ = nullptr;
6334 EXPECT_EQ(camDevice->CommitStreams(deviceSettings, operationMode), CAMERA_UNKNOWN_ERROR);
6335 }
6336
6337 /*
6338 * Feature: Framework
6339 * Function: Test HCameraDevice when streamOperator is nullptr
6340 * SubFunction: NA
6341 * FunctionPoints: NA
6342 * EnvConditions: NA
6343 * CaseDescription: Test HCameraDevice when streamOperator is nullptr
6344 */
6345 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_085, TestSize.Level0)
6346 {
6347 std::vector<int32_t> result;
6348 result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6349 result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6350
6351 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6352
6353 sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6354 std::string cameraId = cameras[0]->GetID();
6355 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6356 sptr<HCameraDevice> camDevice = new(std::nothrow)
6357 HCameraDevice(cameraHostManager, cameraId, callerToken);
6358 ASSERT_NE(camDevice, nullptr);
6359
6360 std::vector<StreamInfo_V1_1> streamInfos = {};
6361 EXPECT_EQ(camDevice->UpdateStreams(streamInfos), CAMERA_UNKNOWN_ERROR);
6362 }
6363
6364 /*
6365 * Feature: Framework
6366 * Function: Test HCameraDevice when streamOperatorCallback is nullptr
6367 * SubFunction: NA
6368 * FunctionPoints: NA
6369 * EnvConditions: NA
6370 * CaseDescription: Test HCameraDevice when streamOperatorCallback is nullptr
6371 */
6372 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_086, TestSize.Level0)
6373 {
6374 std::vector<int32_t> result;
6375 result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6376 result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6377
6378 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6379
6380 sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6381 std::string cameraId = cameras[0]->GetID();
6382 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6383 sptr<HCameraDevice> camDevice = new(std::nothrow)
6384 HCameraDevice(cameraHostManager, cameraId, callerToken);
6385 ASSERT_NE(camDevice, nullptr);
6386
6387 int32_t captureId = 0;
6388 const std::vector<int32_t> streamIds = {1, 2};
6389 EXPECT_EQ(camDevice->OnCaptureStarted(captureId, streamIds), CAMERA_INVALID_STATE);
6390
6391 HDI::Camera::V1_2::CaptureStartedInfo it1;
6392 it1.streamId_ = 1;
6393 it1.exposureTime_ = 1;
6394 HDI::Camera::V1_2::CaptureStartedInfo it2;
6395 it2.streamId_ = 2;
6396 it2.exposureTime_ = 2;
6397 std::vector<OHOS::HDI::Camera::V1_2::CaptureStartedInfo> captureStartedInfo = {};
6398 captureStartedInfo.push_back(it1);
6399 captureStartedInfo.push_back(it2);
6400 EXPECT_EQ(camDevice->OnCaptureStarted_V1_2(captureId, captureStartedInfo), CAMERA_INVALID_STATE);
6401 }
6402
6403 /*
6404 * Feature: Framework
6405 * Function: Test HCameraDevice when streamOperatorCallback is nullptr
6406 * SubFunction: NA
6407 * FunctionPoints: NA
6408 * EnvConditions: NA
6409 * CaseDescription: Test HCameraDevice when streamOperatorCallback is nullptr
6410 */
6411 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_087, TestSize.Level0)
6412 {
6413 std::vector<int32_t> result;
6414 result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6415 result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6416
6417 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6418
6419 sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6420 std::string cameraId = cameras[0]->GetID();
6421 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6422 sptr<HCameraDevice> camDevice = new(std::nothrow)
6423 HCameraDevice(cameraHostManager, cameraId, callerToken);
6424 ASSERT_NE(camDevice, nullptr);
6425
6426 int32_t captureId = 0;
6427 const std::vector<int32_t> streamIds = {1, 2};
6428 EXPECT_EQ(camDevice->OnCaptureStarted(captureId, streamIds), CAMERA_INVALID_STATE);
6429 const std::vector<OHOS::HDI::Camera::V1_2::CaptureStartedInfo> captureStartedInfo = {};
6430 EXPECT_EQ(camDevice->OnCaptureStarted_V1_2(captureId, captureStartedInfo), CAMERA_INVALID_STATE);
6431
6432 CaptureEndedInfo it1;
6433 it1.streamId_ = 1;
6434 it1.frameCount_ = 1;
6435 CaptureEndedInfo it2;
6436 it2.streamId_ = 2;
6437 it2.frameCount_ = 2;
6438 std::vector<CaptureEndedInfo> captureEndedInfo = {};
6439 captureEndedInfo.push_back(it1);
6440 captureEndedInfo.push_back(it2);
6441 EXPECT_EQ(camDevice->OnCaptureEnded(captureId, captureEndedInfo), CAMERA_INVALID_STATE);
6442 }
6443
6444 /*
6445 * Feature: Framework
6446 * Function: Test HCameraDevice when streamOperatorCallback is nullptr
6447 * SubFunction: NA
6448 * FunctionPoints: NA
6449 * EnvConditions: NA
6450 * CaseDescription: Test HCameraDevice when streamOperatorCallback is nullptr
6451 */
6452 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_088, TestSize.Level0)
6453 {
6454 std::vector<int32_t> result;
6455 result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6456 result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6457
6458 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6459
6460 sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6461 std::string cameraId = cameras[0]->GetID();
6462 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6463 sptr<HCameraDevice> camDevice = new(std::nothrow)
6464 HCameraDevice(cameraHostManager, cameraId, callerToken);
6465 ASSERT_NE(camDevice, nullptr);
6466
6467 int32_t captureId = 0;
6468 CaptureErrorInfo it1;
6469 it1.streamId_ = 2;
6470 it1.error_ = BUFFER_LOST;
6471 CaptureErrorInfo it2;
6472 it2.streamId_ = 1;
6473 it2.error_ = BUFFER_LOST;
6474 std::vector<CaptureErrorInfo> captureErrorInfo = {};
6475 captureErrorInfo.push_back(it1);
6476 captureErrorInfo.push_back(it2);
6477 EXPECT_EQ(camDevice->OnCaptureError(captureId, captureErrorInfo), CAMERA_INVALID_STATE);
6478
6479 const std::vector<int32_t> streamIds = {1, 2};
6480 uint64_t timestamp = 5;
6481 EXPECT_EQ(camDevice->OnFrameShutter(captureId, streamIds, timestamp), CAMERA_INVALID_STATE);
6482 EXPECT_EQ(camDevice->OnFrameShutterEnd(captureId, streamIds, timestamp), CAMERA_INVALID_STATE);
6483 EXPECT_EQ(camDevice->OnCaptureReady(captureId, streamIds, timestamp), CAMERA_INVALID_STATE);
6484 }
6485
6486 /*
6487 * Feature: Framework
6488 * Function: Test HCameraDevice with CheckOnResultData
6489 * SubFunction: NA
6490 * FunctionPoints: NA
6491 * EnvConditions: NA
6492 * CaseDescription: Test HCameraDevice with CheckOnResultData
6493 */
6494 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_089, TestSize.Level0)
6495 {
6496 std::vector<int32_t> result;
6497 result.push_back(OHOS_SENSOR_EXPOSURE_TIME);
6498 result.push_back(OHOS_SENSOR_COLOR_CORRECTION_GAINS);
6499
6500 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6501
6502 sptr<HCameraHostManager> cameraHostManager = (sptr<HCameraHostManager> &)mockCameraHostManager;
6503 std::string cameraId = cameras[0]->GetID();
6504 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6505 sptr<HCameraDevice> camDevice = new(std::nothrow)
6506 HCameraDevice(cameraHostManager, cameraId, callerToken);
6507 ASSERT_NE(camDevice, nullptr);
6508
6509 std::shared_ptr<OHOS::Camera::CameraMetadata> cameraResult = cameras[0]->GetMetadata();
6510 camDevice->CheckOnResultData(nullptr);
6511 camDevice->CheckOnResultData(cameraResult);
6512 }
6513
6514 /*
6515 * Feature: coverage
6516 * Function: Test HStreamRepeat
6517 * SubFunction: NA
6518 * FunctionPoints: NA
6519 * EnvConditions: NA
6520 * CaseDescription: Test HStreamRepeat
6521 */
6522 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_090, TestSize.Level0)
6523 {
6524 int32_t format = CAMERA_FORMAT_YUV_420_SP;
6525 int32_t width = PHOTO_DEFAULT_WIDTH;
6526 int32_t height = PHOTO_DEFAULT_HEIGHT;
6527
6528 sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6529 sptr<IBufferProducer> producer = Surface->GetProducer();
6530 auto streamRepeat = new (std::nothrow)
6531 HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6532 ASSERT_NE(streamRepeat, nullptr);
6533 sptr<HStreamRepeat> streamRepeat1 =
6534 new (std::nothrow) HStreamRepeat(producer, 4, 1280, 960, RepeatStreamType::PREVIEW);
6535 ASSERT_NE(streamRepeat1, nullptr);
6536
6537 SketchStatus status = SketchStatus::STARTED;
6538 streamRepeat->repeatStreamType_ = RepeatStreamType::SKETCH;
6539 streamRepeat->parentStreamRepeat_ = streamRepeat1;
6540 streamRepeat->UpdateSketchStatus(status);
6541 }
6542
6543 /*
6544 * Feature: coverage
6545 * Function: Test HStreamRepeat when status is STARTED
6546 * SubFunction: NA
6547 * FunctionPoints: NA
6548 * EnvConditions: NA
6549 * CaseDescription: Test HStreamRepeat when status is STARTED
6550 */
6551 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_091, TestSize.Level0)
6552 {
6553 int32_t format = CAMERA_FORMAT_YUV_420_SP;
6554 int32_t width = PHOTO_DEFAULT_WIDTH;
6555 int32_t height = PHOTO_DEFAULT_HEIGHT;
6556
6557 sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6558 sptr<IBufferProducer> producer = Surface->GetProducer();
6559 auto streamRepeat = new (std::nothrow)
6560 HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6561 ASSERT_NE(streamRepeat, nullptr);
6562
6563 SketchStatus status = SketchStatus::STARTED;
6564 EXPECT_EQ(streamRepeat->OnSketchStatusChanged(status), 0);
6565 }
6566
6567 /*
6568 * Feature: coverage
6569 * Function: Test HStreamRepeat when sketchStream is nullptr
6570 * SubFunction: NA
6571 * FunctionPoints: NA
6572 * EnvConditions: NA
6573 * CaseDescription: Test HStreamRepeat when sketchStream is nullptr
6574 */
6575 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_092, TestSize.Level0)
6576 {
6577 int32_t format = CAMERA_FORMAT_YUV_420_SP;
6578 int32_t width = PHOTO_DEFAULT_WIDTH;
6579 int32_t height = PHOTO_DEFAULT_HEIGHT;
6580
6581 sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6582 sptr<IBufferProducer> producer = Surface->GetProducer();
6583 auto streamRepeat = new (std::nothrow)
6584 HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6585 ASSERT_NE(streamRepeat, nullptr);
6586
6587 sptr<IStreamRepeat> sketchStream = nullptr;
6588 float sketchRatio = 0;
6589 EXPECT_EQ(streamRepeat->ForkSketchStreamRepeat(0, 1, sketchStream, sketchRatio), CAMERA_INVALID_ARG);
6590 EXPECT_EQ(streamRepeat->ForkSketchStreamRepeat(1, 0, sketchStream, sketchRatio), CAMERA_INVALID_ARG);
6591 }
6592
6593 /*
6594 * Feature: coverage
6595 * Function: Test HStreamRepeat when sketchStreamRepeat_ is nullptr
6596 * SubFunction: NA
6597 * FunctionPoints: NA
6598 * EnvConditions: NA
6599 * CaseDescription: Test HStreamRepeat when sketchStreamRepeat_ is nullptr
6600 */
6601 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_093, TestSize.Level0)
6602 {
6603 int32_t format = CAMERA_FORMAT_YUV_420_SP;
6604 int32_t width = PHOTO_DEFAULT_WIDTH;
6605 int32_t height = PHOTO_DEFAULT_HEIGHT;
6606
6607 sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6608 sptr<IBufferProducer> producer = Surface->GetProducer();
6609 auto streamRepeat = new (std::nothrow)
6610 HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6611 ASSERT_NE(streamRepeat, nullptr);
6612
6613 float sketchRatio = 0;
6614 streamRepeat->sketchStreamRepeat_ = nullptr;
6615 EXPECT_EQ(streamRepeat->RemoveSketchStreamRepeat(), 0);
6616 EXPECT_EQ(streamRepeat->UpdateSketchRatio(sketchRatio), CAMERA_INVALID_STATE);
6617 }
6618
6619 /*
6620 * Feature: coverage
6621 * Function: Test HStreamRepeat
6622 * SubFunction: NA
6623 * FunctionPoints: NA
6624 * EnvConditions: NA
6625 * CaseDescription: Test HStreamRepeat
6626 */
6627 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_094, TestSize.Level0)
6628 {
6629 int32_t format = CAMERA_FORMAT_YUV_420_SP;
6630 int32_t width = PHOTO_DEFAULT_WIDTH;
6631 int32_t height = PHOTO_DEFAULT_HEIGHT;
6632
6633 sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6634 sptr<IBufferProducer> producer = Surface->GetProducer();
6635 auto streamRepeat = new (std::nothrow)
6636 HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6637 ASSERT_NE(streamRepeat, nullptr);
6638
6639 uint32_t interfaceCode = 5;
6640 EXPECT_EQ(streamRepeat->OperatePermissionCheck(interfaceCode), 0);
6641 }
6642
6643 /*
6644 * Feature: coverage
6645 * Function: Test HCaptureSession when stream is nullptr
6646 * SubFunction: NA
6647 * FunctionPoints: NA
6648 * EnvConditions: NA
6649 * CaseDescription: Test HCaptureSession when stream is nullptr
6650 */
6651 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_095, TestSize.Level0)
6652 {
6653 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6654 SceneMode mode = PORTRAIT;
6655 sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6656 ASSERT_NE(camSession, nullptr);
6657
6658 std::vector<StreamInfo_V1_1> streamInfos = {};
6659 EXPECT_EQ(camSession->GetCurrentStreamInfos(streamInfos), 0);
6660 EXPECT_EQ(camSession->AddOutputStream(nullptr), CAMERA_INVALID_ARG);
6661 EXPECT_EQ(camSession->RemoveOutputStream(nullptr), CAMERA_INVALID_ARG);
6662 }
6663
6664 /*
6665 * Feature: coverage
6666 * Function: Test HCaptureSession when cameraDevice_ is nullptr
6667 * SubFunction: NA
6668 * FunctionPoints: NA
6669 * EnvConditions: NA
6670 * CaseDescription: Test HCaptureSession when cameraDevice_ is nullptr
6671 */
6672 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_096, TestSize.Level0)
6673 {
6674 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6675 SceneMode mode = PORTRAIT;
6676 sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6677 ASSERT_NE(camSession, nullptr);
6678
6679 camSession->cameraDevice_ = nullptr;
6680 EXPECT_EQ(camSession->LinkInputAndOutputs(), CAMERA_INVALID_SESSION_CFG);
6681 }
6682
6683 /*
6684 * Feature: coverage
6685 * Function: Test HCaptureSession with SetColorSpace
6686 * SubFunction: NA
6687 * FunctionPoints: NA
6688 * EnvConditions: NA
6689 * CaseDescription: Test HCaptureSession with SetColorSpace
6690 */
6691 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_097, TestSize.Level0)
6692 {
6693 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6694 SceneMode mode = PORTRAIT;
6695 sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6696 ASSERT_NE(camSession, nullptr);
6697
6698 bool isNeedUpdate = false;
6699 ColorSpace colorSpace = ColorSpace::SRGB;
6700 ColorSpace captureColorSpace = ColorSpace::SRGB;
6701 camSession->currColorSpace_ = ColorSpace::BT709;
6702 camSession->currCaptureColorSpace_ = ColorSpace::BT709;
6703 EXPECT_EQ(camSession->SetColorSpace(colorSpace, captureColorSpace, isNeedUpdate), CAMERA_INVALID_STATE);
6704 camSession->currColorSpace_ = ColorSpace::SRGB;
6705 EXPECT_EQ(camSession->SetColorSpace(colorSpace, captureColorSpace, isNeedUpdate), CAMERA_INVALID_STATE);
6706 }
6707
6708 /*
6709 * Feature: coverage
6710 * Function: Test HCaptureSession with CheckIfColorSpaceMatchesFormat
6711 * SubFunction: NA
6712 * FunctionPoints: NA
6713 * EnvConditions: NA
6714 * CaseDescription: Test HCaptureSession with CheckIfColorSpaceMatchesFormat
6715 */
6716 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_098, TestSize.Level0)
6717 {
6718 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6719 SceneMode mode = PORTRAIT;
6720 sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6721 ASSERT_NE(camSession, nullptr);
6722
6723 camSession->RestartStreams();
6724
6725 ColorSpace colorSpace = ColorSpace::SRGB;
6726 EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6727 colorSpace = ColorSpace::BT2020_HLG ;
6728 EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6729 colorSpace = ColorSpace::BT2020_PQ ;
6730 EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6731 colorSpace = ColorSpace::BT2020_HLG_LIMIT ;
6732 EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6733 colorSpace = ColorSpace::BT2020_PQ_LIMIT;
6734 EXPECT_EQ(camSession->CheckIfColorSpaceMatchesFormat(colorSpace), 0);
6735 }
6736
6737 /*
6738 * Feature: coverage
6739 * Function: Test HCaptureSession
6740 * SubFunction: NA
6741 * FunctionPoints: NA
6742 * EnvConditions: NA
6743 * CaseDescription: Test HCaptureSession
6744 */
6745 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_099, TestSize.Level0)
6746 {
6747 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6748 SceneMode mode = PORTRAIT;
6749 sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6750 ASSERT_NE(camSession, nullptr);
6751 }
6752
6753 /*
6754 * Feature: coverage
6755 * Function: Test HCaptureSession when isSessionStarted_ is true
6756 * SubFunction: NA
6757 * FunctionPoints: NA
6758 * EnvConditions: NA
6759 * CaseDescription: Test HCaptureSession when isSessionStarted_ is true
6760 */
6761 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_100, TestSize.Level0)
6762 {
6763 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6764 SceneMode mode = PORTRAIT;
6765 sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6766 ASSERT_NE(camSession, nullptr);
6767
6768 camSession->SetColorSpaceForStreams();
6769
6770 std::vector<StreamInfo_V1_1> streamInfos = {};
6771 camSession->CancelStreamsAndGetStreamInfos(streamInfos);
6772
6773 camSession->isSessionStarted_ = true;
6774 camSession->RestartStreams();
6775 }
6776
6777 /*
6778 * Feature: coverage
6779 * Function: Test HCaptureSession when cameraDevice is nullptr
6780 * SubFunction: NA
6781 * FunctionPoints: NA
6782 * EnvConditions: NA
6783 * CaseDescription: Test HCaptureSession when cameraDevice is nullptr
6784 */
6785 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_101, TestSize.Level0)
6786 {
6787 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
6788 SceneMode mode = PORTRAIT;
6789 sptr<HCaptureSession> camSession = new (std::nothrow) HCaptureSession(callerToken, mode);
6790 ASSERT_NE(camSession, nullptr);
6791
6792 float currentFps = 0;
6793 float currentZoomRatio = 0;
6794 EXPECT_EQ(camSession->QueryFpsAndZoomRatio(currentFps, currentZoomRatio), false);
6795 std::vector<float> crossZoomAndTime = {0, 0};
6796 int32_t operationMode = 0;
6797 EXPECT_EQ(camSession->QueryZoomPerformance(crossZoomAndTime, operationMode), false);
6798 int32_t smoothZoomType = 0;
6799 float targetZoomRatio = 0;
6800 float duration = 0;
6801 EXPECT_EQ(camSession->SetSmoothZoom(smoothZoomType, operationMode,
6802 targetZoomRatio, duration), 11);
6803 }
6804
6805 /*
6806 * Feature: Framework
6807 * Function: Test metadataoutput when appStateCallback_ is not nullptr
6808 * SubFunction: NA
6809 * FunctionPoints: NA
6810 * EnvConditions: NA
6811 * CaseDescription: Test metadataoutput when appStateCallback_ is not nullptr
6812 */
6813 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_102, TestSize.Level0)
6814 {
6815 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6816
6817 sptr<CaptureOutput> output = cameraManager->CreateMetadataOutput();
6818 ASSERT_NE(output, nullptr);
6819 sptr<MetadataOutput> metadatOutput = (sptr<MetadataOutput>&)output;
6820
6821 std::shared_ptr<MetadataStateCallback> metadataStateCallback =
6822 std::make_shared<AppMetadataCallback>();
6823 metadatOutput->SetCallback(metadataStateCallback);
6824
6825 pid_t pid = 0;
6826 metadatOutput->CameraServerDied(pid);
6827 }
6828
6829 /*
6830 * Feature: coverage
6831 * Function: Test HStreamRepeat when repeatStreamType_ is SKETCH
6832 * SubFunction: NA
6833 * FunctionPoints: NA
6834 * EnvConditions: NA
6835 * CaseDescription: Test HStreamRepeat when repeatStreamType_ is SKETCH
6836 */
6837 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_103, TestSize.Level0)
6838 {
6839 int32_t format = CAMERA_FORMAT_YUV_420_SP;
6840 int32_t width = PHOTO_DEFAULT_WIDTH;
6841 int32_t height = PHOTO_DEFAULT_HEIGHT;
6842
6843 sptr<IConsumerSurface> Surface = IConsumerSurface::Create();
6844 sptr<IBufferProducer> producer = Surface->GetProducer();
6845 auto streamRepeat = new (std::nothrow)
6846 HStreamRepeat(producer, format, width, height, RepeatStreamType::PREVIEW);
6847 ASSERT_NE(streamRepeat, nullptr);
6848
6849 StreamInfo_V1_1 streamInfo;
6850 streamRepeat->repeatStreamType_ = RepeatStreamType::SKETCH;
6851 streamRepeat->SetStreamInfo(streamInfo);
6852 }
6853
6854 /*
6855 * Feature: Framework
6856 * Function: Test PortraitSession when output is nullptr
6857 * SubFunction: NA
6858 * FunctionPoints: NA
6859 * EnvConditions: NA
6860 * CaseDescription: Test PortraitSession when output is nullptr
6861 */
6862 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_104, TestSize.Level0)
6863 {
6864 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6865 SceneMode mode = PORTRAIT;
6866 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
6867 ASSERT_TRUE(modes.size() != 0);
6868
6869 sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
6870 ASSERT_NE(ability, nullptr);
6871 std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
6872 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
6873 ASSERT_NE(input, nullptr);
6874 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
6875 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
6876 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
6877 std::string cameraSettings = camInput->GetCameraSettings();
6878 camInput->SetCameraSettings(cameraSettings);
6879 camInput->GetCameraDevice()->Open();
6880
6881 sptr<CaptureOutput> preview = CreatePreviewOutput();
6882 ASSERT_NE(preview, nullptr);
6883 sptr<CaptureOutput> photo = CreatePhotoOutput();
6884 ASSERT_NE(photo, nullptr);
6885 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
6886 ASSERT_NE(captureSession, nullptr);
6887 sptr<PortraitSession> portraitSession = nullptr;
6888 portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
6889 ASSERT_NE(portraitSession, nullptr);
6890 sptr<CaptureOutput> output = nullptr;
6891 EXPECT_EQ(portraitSession->CanAddOutput(output), false);
6892 EXPECT_EQ(portraitSession->BeginConfig(), 0);
6893 EXPECT_EQ(portraitSession->AddInput(input), 0);
6894 EXPECT_EQ(portraitSession->AddOutput(preview), 0);
6895 EXPECT_EQ(portraitSession->AddOutput(photo), 0);
6896 EXPECT_EQ(portraitSession->CommitConfig(), 0);
6897
6898 const float aperture = 0.1;
6899 EXPECT_EQ(portraitSession->CanAddOutput(output), false);
6900 std::vector<float> supportedVirtualApertures = {};
6901 std::vector<float> virtualApertures = {};
6902 portraitSession->GetSupportedVirtualApertures(virtualApertures);
6903 EXPECT_EQ(virtualApertures, supportedVirtualApertures);
6904 float virtualAperture = 0.0f;
6905 portraitSession->GetVirtualAperture(virtualAperture);
6906 EXPECT_EQ(virtualAperture, 0.0);
6907 portraitSession->SetVirtualAperture(aperture);
6908 std::vector<std::vector<float>> supportedPhysicalApertures;
6909 std::vector<std::vector<float>> physicalApertures;
6910 portraitSession->GetSupportedPhysicalApertures(physicalApertures);
6911 EXPECT_EQ(physicalApertures, supportedPhysicalApertures);
6912 float physicalAperture = 0.0f;
6913 portraitSession->GetPhysicalAperture(physicalAperture);
6914 EXPECT_EQ(physicalAperture, 0.0f);
6915 portraitSession->SetPhysicalAperture(aperture);
6916
6917 portraitSession->Release();
6918 input->Close();
6919 }
6920
6921 /*
6922 * Feature: Framework
6923 * Function: Test PortraitSession without CommitConfig
6924 * SubFunction: NA
6925 * FunctionPoints: NA
6926 * EnvConditions: NA
6927 * CaseDescription: Test PortraitSession without CommitConfig
6928 */
6929 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_105, TestSize.Level0)
6930 {
6931 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6932 SceneMode mode = PORTRAIT;
6933 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
6934 ASSERT_TRUE(modes.size() != 0);
6935 sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
6936 ASSERT_NE(ability, nullptr);
6937 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
6938 ASSERT_NE(input, nullptr);
6939 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
6940 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
6941 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
6942 std::string cameraSettings = camInput->GetCameraSettings();
6943 camInput->SetCameraSettings(cameraSettings);
6944 camInput->GetCameraDevice()->Open();
6945
6946 sptr<CaptureOutput> preview = CreatePreviewOutput();
6947 ASSERT_NE(preview, nullptr);
6948 sptr<CaptureOutput> photo = CreatePhotoOutput();
6949 ASSERT_NE(photo, nullptr);
6950 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
6951 ASSERT_NE(captureSession, nullptr);
6952 sptr<PortraitSession> portraitSession = nullptr;
6953 portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
6954 ASSERT_NE(portraitSession, nullptr);
6955
6956 EXPECT_EQ(portraitSession->BeginConfig(), 0);
6957 EXPECT_EQ(portraitSession->AddInput(input), 0);
6958 EXPECT_EQ(portraitSession->AddOutput(preview), 0);
6959 EXPECT_EQ(portraitSession->AddOutput(photo), 0);
6960
6961 const float physicalAperture = 0.1;
6962 const float virtualAperture = 0.1;
6963 std::vector<float> supportedVirtualApertures = {};
6964 std::vector<float> virtualApertures = {};
6965 portraitSession->GetSupportedVirtualApertures(virtualApertures);
6966 EXPECT_EQ(virtualApertures, supportedVirtualApertures);
6967 float virtualApertureResult = 0.0f;
6968 portraitSession->GetVirtualAperture(virtualApertureResult);
6969 EXPECT_EQ(virtualApertureResult, 0.0);
6970 portraitSession->SetVirtualAperture(virtualAperture);
6971 std::vector<std::vector<float>> supportedPhysicalApertures;
6972 std::vector<std::vector<float>> physicalApertures;
6973 portraitSession->GetSupportedPhysicalApertures(physicalApertures);
6974 EXPECT_EQ(physicalApertures, supportedPhysicalApertures);
6975 float physicalApertureResult = 0.0f;
6976 portraitSession->GetPhysicalAperture(physicalApertureResult);
6977 EXPECT_EQ(physicalApertureResult, 0.0f);
6978 portraitSession->SetPhysicalAperture(physicalAperture);
6979 portraitSession->Release();
6980 input->Close();
6981 }
6982
6983 /*
6984 * Feature: Framework
6985 * Function: Test PortraitSession when innerInputDevice_ is nullptr
6986 * SubFunction: NA
6987 * FunctionPoints: NA
6988 * EnvConditions: NA
6989 * CaseDescription: Test PortraitSession when innerInputDevice_ is nullptr
6990 */
6991 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_106, TestSize.Level0)
6992 {
6993 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
6994 SceneMode mode = PORTRAIT;
6995 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
6996 ASSERT_TRUE(modes.size() != 0);
6997
6998 sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
6999 ASSERT_NE(ability, nullptr);
7000 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7001 ASSERT_NE(input, nullptr);
7002 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7003 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7004 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7005 std::string cameraSettings = camInput->GetCameraSettings();
7006 camInput->SetCameraSettings(cameraSettings);
7007 camInput->GetCameraDevice()->Open();
7008
7009 sptr<CaptureOutput> preview = CreatePreviewOutput();
7010 ASSERT_NE(preview, nullptr);
7011 sptr<CaptureOutput> photo = CreatePhotoOutput();
7012 ASSERT_NE(photo, nullptr);
7013 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7014 ASSERT_NE(captureSession, nullptr);
7015 sptr<PortraitSession> portraitSession = nullptr;
7016 portraitSession = static_cast<PortraitSession *> (captureSession.GetRefPtr());
7017 ASSERT_NE(portraitSession, nullptr);
7018
7019 EXPECT_EQ(portraitSession->BeginConfig(), 0);
7020 EXPECT_EQ(portraitSession->AddInput(input), 0);
7021 EXPECT_EQ(portraitSession->AddOutput(preview), 0);
7022 EXPECT_EQ(portraitSession->AddOutput(photo), 0);
7023 EXPECT_EQ(portraitSession->CommitConfig(), 0);
7024
7025 portraitSession->innerInputDevice_ = nullptr;
7026 std::vector<PortraitEffect> supportedPortraitEffects = {};
7027 EXPECT_EQ(portraitSession->GetSupportedPortraitEffects(), supportedPortraitEffects);
7028 EXPECT_EQ(portraitSession->GetPortraitEffect(), PortraitEffect::OFF_EFFECT);
7029 std::vector<float> supportedVirtualApertures = {};
7030 std::vector<float> virtualApertures = {};
7031 portraitSession->GetSupportedVirtualApertures(virtualApertures);
7032 EXPECT_EQ(virtualApertures, supportedVirtualApertures);
7033 float virtualAperture = 0.0f;
7034 portraitSession->GetVirtualAperture(virtualAperture);
7035 EXPECT_EQ(virtualAperture, 0.0);
7036 std::vector<std::vector<float>> supportedPhysicalApertures;
7037 std::vector<std::vector<float>> physicalApertures;
7038 portraitSession->GetSupportedPhysicalApertures(physicalApertures);
7039 EXPECT_EQ(physicalApertures, supportedPhysicalApertures);
7040 float physicalAperture = 0.0f;
7041 portraitSession->GetPhysicalAperture(physicalAperture);
7042 EXPECT_EQ(physicalAperture, 0.0);
7043
7044 portraitSession->Release();
7045 input->Close();
7046 }
7047
7048 /*
7049 * Feature: Framework
7050 * Function: Test NightSession about exposure
7051 * SubFunction: NA
7052 * FunctionPoints: NA
7053 * EnvConditions: NA
7054 * CaseDescription: Test NightSession about exposure
7055 */
7056 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_107, TestSize.Level0)
7057 {
7058 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7059 SceneMode mode = NIGHT;
7060 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
7061 ASSERT_TRUE(modes.size() != 0);
7062 sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
7063 ASSERT_NE(ability, nullptr);
7064 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7065 ASSERT_NE(input, nullptr);
7066 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7067 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7068 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7069 std::string cameraSettings = camInput->GetCameraSettings();
7070 camInput->SetCameraSettings(cameraSettings);
7071 camInput->GetCameraDevice()->Open();
7072
7073 sptr<CaptureOutput> preview = CreatePreviewOutput();
7074 ASSERT_NE(preview, nullptr);
7075 sptr<CaptureOutput> photo = CreatePhotoOutput();
7076 ASSERT_NE(photo, nullptr);
7077 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7078 ASSERT_NE(captureSession, nullptr);
7079 sptr<NightSession> nightSession = static_cast<NightSession*>(captureSession.GetRefPtr());
7080 ASSERT_NE(nightSession, nullptr);
7081
7082 EXPECT_EQ(nightSession->BeginConfig(), 0);
7083 EXPECT_EQ(nightSession->AddInput(input), 0);
7084 EXPECT_EQ(nightSession->AddOutput(preview), 0);
7085 EXPECT_EQ(nightSession->AddOutput(photo), 0);
7086 EXPECT_EQ(nightSession->CommitConfig(), 0);
7087
7088 std::vector<uint32_t> exposureRange = {};
7089 uint32_t exposureValue = 0;
7090 EXPECT_EQ(nightSession->GetExposureRange(exposureRange), CameraErrorCode::INVALID_ARGUMENT);
7091 EXPECT_EQ(nightSession->GetExposure(exposureValue), CameraErrorCode::INVALID_ARGUMENT);
7092
7093 nightSession->Release();
7094 input->Close();
7095 }
7096
7097 /*
7098 * Feature: Framework
7099 * Function: Test NightSession when innerInputDevice_ and output is nullptr
7100 * SubFunction: NA
7101 * FunctionPoints: NA
7102 * EnvConditions: NA
7103 * CaseDescription: Test NightSession when innerInputDevice_ and output is nullptr
7104 */
7105 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_108, TestSize.Level0)
7106 {
7107 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7108 SceneMode mode = NIGHT;
7109 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
7110 ASSERT_TRUE(modes.size() != 0);
7111 sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
7112 ASSERT_NE(ability, nullptr);
7113 std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameras[0]->GetMetadata();
7114 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7115 ASSERT_NE(input, nullptr);
7116
7117 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7118 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7119 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7120 std::string cameraSettings = camInput->GetCameraSettings();
7121 camInput->SetCameraSettings(cameraSettings);
7122 camInput->GetCameraDevice()->Open();
7123
7124 sptr<CaptureOutput> preview = CreatePreviewOutput();
7125 ASSERT_NE(preview, nullptr);
7126 sptr<CaptureOutput> photo = CreatePhotoOutput();
7127 ASSERT_NE(photo, nullptr);
7128 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7129 ASSERT_NE(captureSession, nullptr);
7130 sptr<NightSession> nightSession = static_cast<NightSession*>(captureSession.GetRefPtr());
7131 ASSERT_NE(nightSession, nullptr);
7132
7133 EXPECT_EQ(nightSession->BeginConfig(), 0);
7134 EXPECT_EQ(nightSession->AddInput(input), 0);
7135 EXPECT_EQ(nightSession->AddOutput(preview), 0);
7136 EXPECT_EQ(nightSession->AddOutput(photo), 0);
7137 EXPECT_EQ(nightSession->CommitConfig(), 0);
7138
7139 nightSession->innerInputDevice_ = nullptr;
7140 std::vector<uint32_t> exposureRange = {};
7141 EXPECT_EQ(nightSession->GetExposureRange(exposureRange), CameraErrorCode::INVALID_ARGUMENT);
7142 sptr<CaptureOutput> output = nullptr;
7143 EXPECT_EQ(nightSession->CanAddOutput(output), false);
7144
7145 nightSession->Release();
7146 input->Close();
7147 }
7148
7149 /*
7150 * Feature: Framework
7151 * Function: Test ScanSession when output is nullptr
7152 * SubFunction: NA
7153 * FunctionPoints: NA
7154 * EnvConditions: NA
7155 * CaseDescription: Test ScanSession when output is nullptr
7156 */
7157 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_109, TestSize.Level0)
7158 {
7159 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7160 SceneMode mode = SCAN;
7161 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
7162 ASSERT_TRUE(modes.size() != 0);
7163
7164 sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
7165 ASSERT_NE(ability, nullptr);
7166
7167 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7168 ASSERT_NE(input, nullptr);
7169
7170 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7171 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7172 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7173 std::string cameraSettings = camInput->GetCameraSettings();
7174 camInput->SetCameraSettings(cameraSettings);
7175 camInput->GetCameraDevice()->Open();
7176
7177 sptr<CaptureOutput> preview = CreatePreviewOutput();
7178 ASSERT_NE(preview, nullptr);
7179
7180 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7181 ASSERT_NE(captureSession, nullptr);
7182 sptr<ScanSession> scanSession = static_cast<ScanSession*>(captureSession.GetRefPtr());
7183 ASSERT_NE(scanSession, nullptr);
7184
7185 EXPECT_EQ(scanSession->BeginConfig(), 0);
7186 EXPECT_EQ(scanSession->AddInput(input), 0);
7187 EXPECT_EQ(scanSession->AddOutput(preview), 0);
7188 EXPECT_EQ(scanSession->CommitConfig(), 0);
7189
7190 sptr<CaptureOutput> output = nullptr;
7191 scanSession->CanAddOutput(output);
7192
7193 scanSession->Release();
7194 input->Close();
7195 }
7196
7197 /*
7198 * Feature: Framework
7199 * Function: Test ScanSession when innerInputDevice_ is nullptr
7200 * SubFunction: NA
7201 * FunctionPoints: NA
7202 * EnvConditions: NA
7203 * CaseDescription: Test ScanSession when innerInputDevice_ is nullptr
7204 */
7205 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_110, TestSize.Level0)
7206 {
7207 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7208 SceneMode mode = SCAN;
7209 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
7210 ASSERT_TRUE(modes.size() != 0);
7211
7212 sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
7213 ASSERT_NE(ability, nullptr);
7214
7215 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7216 ASSERT_NE(input, nullptr);
7217
7218 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7219 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7220 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7221 std::string cameraSettings = camInput->GetCameraSettings();
7222 camInput->SetCameraSettings(cameraSettings);
7223 camInput->GetCameraDevice()->Open();
7224
7225 sptr<CaptureOutput> preview = CreatePreviewOutput();
7226 ASSERT_NE(preview, nullptr);
7227
7228 sptr<CaptureOutput> photo = CreatePhotoOutput();
7229 ASSERT_NE(photo, nullptr);
7230
7231 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7232 ASSERT_NE(captureSession, nullptr);
7233 sptr<ScanSession> scanSession = static_cast<ScanSession*>(captureSession.GetRefPtr());
7234 ASSERT_NE(scanSession, nullptr);
7235
7236 EXPECT_EQ(scanSession->CanAddOutput(photo), false);
7237 EXPECT_EQ(scanSession->BeginConfig(), 0);
7238 EXPECT_EQ(scanSession->AddInput(input), 0);
7239 EXPECT_EQ(scanSession->AddOutput(preview), 0);
7240
7241 scanSession->CanAddOutput(photo);
7242
7243 scanSession->innerInputDevice_ = nullptr;
7244 int32_t ret = scanSession->AddOutput(preview);
7245 EXPECT_EQ(ret, SESSION_NOT_CONFIG);
7246
7247 ret = scanSession->CommitConfig();
7248 EXPECT_EQ(ret, 0);
7249
7250 scanSession->Release();
7251 input->Close();
7252 }
7253
7254 /*
7255 * Feature: Framework
7256 * Function: Test ScanSession
7257 * SubFunction: NA
7258 * FunctionPoints: NA
7259 * EnvConditions: NA
7260 * CaseDescription: Test ScanSession
7261 */
7262 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_111, TestSize.Level0)
7263 {
7264 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7265 SceneMode mode = SCAN;
7266 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
7267 ASSERT_TRUE(modes.size() != 0);
7268
7269 sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
7270 ASSERT_NE(ability, nullptr);
7271
7272 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7273 ASSERT_NE(input, nullptr);
7274
7275 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7276 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7277 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7278 std::string cameraSettings = camInput->GetCameraSettings();
7279 camInput->SetCameraSettings(cameraSettings);
7280 camInput->GetCameraDevice()->Open();
7281
7282 sptr<CaptureOutput> preview = CreatePreviewOutput();
7283 ASSERT_NE(preview, nullptr);
7284
7285 sptr<CaptureOutput> photo = CreatePhotoOutput();
7286 ASSERT_NE(photo, nullptr);
7287
7288 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(mode);
7289 ASSERT_NE(captureSession, nullptr);
7290 sptr<ScanSession> scanSession = static_cast<ScanSession*>(captureSession.GetRefPtr());
7291 ASSERT_NE(scanSession, nullptr);
7292
7293 EXPECT_EQ(scanSession->CanAddOutput(photo), false);
7294 EXPECT_EQ(scanSession->BeginConfig(), 0);
7295 EXPECT_EQ(scanSession->AddInput(input), 0);
7296 EXPECT_EQ(scanSession->AddOutput(preview), 0);
7297
7298 scanSession->CanAddOutput(photo);
7299
7300 scanSession->innerInputDevice_ = nullptr;
7301 int32_t ret = scanSession->AddOutput(preview);
7302 EXPECT_EQ(ret, SESSION_NOT_CONFIG);
7303
7304 ret = scanSession->CommitConfig();
7305 EXPECT_EQ(ret, 0);
7306
7307 scanSession->Release();
7308 input->Close();
7309 }
7310
7311 /*
7312 * Feature: Framework
7313 * Function: Test anomalous branch
7314 * SubFunction: NA
7315 * FunctionPoints: NA
7316 * EnvConditions: NA
7317 * CaseDescription: Test HCameraService with anomalous branch
7318 */
7319 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_112, TestSize.Level0)
7320 {
7321 InSequence s;
7322 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7323
7324 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7325 ASSERT_NE(input, nullptr);
7326
7327 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7328 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7329 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7330 std::string cameraSettings = camInput->GetCameraSettings();
7331 camInput->SetCameraSettings(cameraSettings);
7332 camInput->GetCameraDevice()->Open();
7333
7334 sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
7335 sptr<HCameraService> cameraService = (sptr<HCameraService> &)mockHCameraService;
7336 ASSERT_NE(cameraService, nullptr);
7337
7338 sptr<ICameraServiceCallback> callback = nullptr;
7339 int32_t intResult = cameraService->SetCameraCallback(callback);
7340 EXPECT_EQ(intResult, 2);
7341
7342 callback = new(std::nothrow) CameraStatusServiceCallback(cameraManager);
7343 ASSERT_NE(callback, nullptr);
7344 intResult = cameraService->SetCameraCallback(callback);
7345 EXPECT_EQ(intResult, 0);
7346
7347 sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7348 ASSERT_NE(deviceObj, nullptr);
7349
7350 sptr<ICameraMuteServiceCallback> callback_2 = nullptr;
7351 intResult = cameraService->SetMuteCallback(callback_2);
7352 EXPECT_EQ(intResult, 2);
7353
7354 callback_2 = new(std::nothrow) CameraMuteServiceCallback(cameraManager);
7355 ASSERT_NE(callback_2, nullptr);
7356 intResult = cameraService->SetMuteCallback(callback_2);
7357 EXPECT_EQ(intResult, 0);
7358
7359 std::string cameraId = camInput->GetCameraId();
7360 int activeTime = 0;
7361 EffectParam effectParam = {0, 0, 0};
7362 intResult = cameraService->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::TRANSIENT_ACTIVE_PARAM_OHOS,
7363 activeTime, effectParam);
7364 EXPECT_EQ(intResult, 2);
7365
7366 intResult = cameraService->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::PERSISTENT_DEFAULT_PARAM_OHOS,
7367 activeTime, effectParam);
7368 EXPECT_EQ(intResult, 2);
7369
7370 input->Close();
7371 }
7372
TestPhotoSessionPreconfig(sptr<CaptureInput> & input,PreconfigType preconfigType,ProfileSizeRatio profileSizeRatio)7373 void CameraFrameworkUnitTest::TestPhotoSessionPreconfig(
7374 sptr<CaptureInput>& input, PreconfigType preconfigType, ProfileSizeRatio profileSizeRatio)
7375 {
7376 sptr<CaptureSession> photoSession = cameraManager->CreateCaptureSession(SceneMode::CAPTURE);
7377 ASSERT_NE(photoSession, nullptr);
7378 if (photoSession->CanPreconfig(preconfigType, profileSizeRatio)) {
7379 int32_t intResult = photoSession->Preconfig(preconfigType, profileSizeRatio);
7380 EXPECT_EQ(intResult, 0);
7381
7382 sptr<Surface> preivewSurface = Surface::CreateSurfaceAsConsumer();
7383 ASSERT_NE(preivewSurface, nullptr);
7384
7385 sptr<PreviewOutput> previewOutput = nullptr;
7386 intResult = cameraManager->CreatePreviewOutputWithoutProfile(preivewSurface, &previewOutput);
7387 EXPECT_EQ(intResult, 0);
7388 ASSERT_NE(previewOutput, nullptr);
7389
7390 sptr<IConsumerSurface> photoSurface = IConsumerSurface::Create();
7391 ASSERT_NE(photoSurface, nullptr);
7392 auto photoProducer = photoSurface->GetProducer();
7393 ASSERT_NE(photoProducer, nullptr);
7394 sptr<PhotoOutput> photoOutput = nullptr;
7395 intResult = cameraManager->CreatePhotoOutputWithoutProfile(photoProducer, &photoOutput);
7396 EXPECT_EQ(intResult, 0);
7397 ASSERT_NE(photoOutput, nullptr);
7398
7399 intResult = photoSession->BeginConfig();
7400 EXPECT_EQ(intResult, 0);
7401
7402 intResult = photoSession->AddInput(input);
7403 EXPECT_EQ(intResult, 0);
7404
7405 sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
7406 intResult = photoSession->AddOutput(previewOutputCaptureUpper);
7407 EXPECT_EQ(intResult, 0);
7408 sptr<CaptureOutput> photoOutputCaptureUpper = photoOutput;
7409 intResult = photoSession->AddOutput(photoOutputCaptureUpper);
7410 EXPECT_EQ(intResult, 0);
7411
7412 intResult = photoSession->CommitConfig();
7413 EXPECT_EQ(intResult, 0);
7414
7415 intResult = photoSession->Start();
7416 EXPECT_EQ(intResult, 0);
7417
7418 intResult = photoSession->Stop();
7419 EXPECT_EQ(intResult, 0);
7420
7421 intResult = photoSession->BeginConfig();
7422 EXPECT_EQ(intResult, 0);
7423
7424 intResult = photoSession->RemoveInput(input);
7425 EXPECT_EQ(intResult, 0);
7426
7427 intResult = photoSession->Release();
7428 EXPECT_EQ(intResult, 0);
7429 }
7430 }
7431
7432 /*
7433 * Feature: Framework
7434 * Function: Test PhotoSession preconfig
7435 * SubFunction: NA
7436 * FunctionPoints: NA
7437 * EnvConditions: NA
7438 * CaseDescription: Test preconfig PhotoSession all config.
7439 */
7440 HWTEST_F(CameraFrameworkUnitTest, camera_preconfig_unittest_001, TestSize.Level0)
7441 {
7442 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7443 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7444 ASSERT_NE(input, nullptr);
7445
7446 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7447 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7448 sptr<CameraInput> camInput = (sptr<CameraInput>&)input;
7449 std::string cameraSettings = camInput->GetCameraSettings();
7450 camInput->SetCameraSettings(cameraSettings);
7451 camInput->GetCameraDevice()->Open();
7452
7453 sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
7454 sptr<HCameraService> cameraService = (sptr<HCameraService>&)mockHCameraService;
7455 ASSERT_NE(cameraService, nullptr);
7456
7457 sptr<ICameraServiceCallback> callback = new (std::nothrow) CameraStatusServiceCallback(cameraManager);
7458 ASSERT_NE(callback, nullptr);
7459 int32_t intResult = cameraService->SetCameraCallback(callback);
7460 EXPECT_EQ(intResult, 0);
7461
7462 sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7463 ASSERT_NE(deviceObj, nullptr);
7464
7465 std::vector<PreconfigType> preconfigTypes = { PRECONFIG_720P, PRECONFIG_1080P, PRECONFIG_4K,
7466 PRECONFIG_HIGH_QUALITY };
7467 std::vector<ProfileSizeRatio> profileSizeRatios = { UNSPECIFIED, RATIO_1_1, RATIO_4_3, RATIO_16_9 };
7468 for (auto& preconfigType : preconfigTypes) {
7469 for (auto& profileSizeRatio : profileSizeRatios) {
7470 TestPhotoSessionPreconfig(input, preconfigType, profileSizeRatio);
7471 }
7472 }
7473
7474 input->Close();
7475 }
7476
TestVideoSessionPreconfig(sptr<CaptureInput> & input,PreconfigType preconfigType,ProfileSizeRatio profileSizeRatio)7477 void CameraFrameworkUnitTest::TestVideoSessionPreconfig(
7478 sptr<CaptureInput>& input, PreconfigType preconfigType, ProfileSizeRatio profileSizeRatio)
7479 {
7480 sptr<CaptureSession> videoSession = cameraManager->CreateCaptureSession(SceneMode::VIDEO);
7481 ASSERT_NE(videoSession, nullptr);
7482 if (videoSession->CanPreconfig(preconfigType, profileSizeRatio)) {
7483 int32_t intResult = videoSession->Preconfig(preconfigType, profileSizeRatio);
7484 EXPECT_EQ(intResult, 0);
7485
7486 sptr<PreviewOutput> previewOutput = nullptr;
7487 intResult =
7488 cameraManager->CreatePreviewOutputWithoutProfile(Surface::CreateSurfaceAsConsumer(), &previewOutput);
7489 EXPECT_EQ(intResult, 0);
7490 ASSERT_NE(previewOutput, nullptr);
7491
7492 sptr<IConsumerSurface> photoSurface = IConsumerSurface::Create();
7493 ASSERT_NE(photoSurface, nullptr);
7494 auto photoProducer = photoSurface->GetProducer();
7495 ASSERT_NE(photoProducer, nullptr);
7496 sptr<PhotoOutput> photoOutput = nullptr;
7497 intResult = cameraManager->CreatePhotoOutputWithoutProfile(photoProducer, &photoOutput);
7498 EXPECT_EQ(intResult, 0);
7499 ASSERT_NE(photoOutput, nullptr);
7500
7501 sptr<VideoOutput> videoOutput = nullptr;
7502 intResult = cameraManager->CreateVideoOutputWithoutProfile(Surface::CreateSurfaceAsConsumer(), &videoOutput);
7503 EXPECT_EQ(intResult, 0);
7504 ASSERT_NE(videoOutput, nullptr);
7505
7506 intResult = videoSession->BeginConfig();
7507 EXPECT_EQ(intResult, 0);
7508
7509 intResult = videoSession->AddInput(input);
7510 EXPECT_EQ(intResult, 0);
7511
7512 sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
7513 intResult = videoSession->AddOutput(previewOutputCaptureUpper);
7514 EXPECT_EQ(intResult, 0);
7515 sptr<CaptureOutput> photoOutputCaptureUpper = photoOutput;
7516 intResult = videoSession->AddOutput(photoOutputCaptureUpper);
7517 EXPECT_EQ(intResult, 0);
7518 sptr<CaptureOutput> videoOutputCaptureUpper = videoOutput;
7519 intResult = videoSession->AddOutput(videoOutputCaptureUpper);
7520 EXPECT_EQ(intResult, 0);
7521
7522 intResult = videoSession->CommitConfig();
7523 EXPECT_EQ(intResult, 0);
7524
7525 intResult = videoSession->Start();
7526 EXPECT_EQ(intResult, 0);
7527
7528 intResult = videoSession->Stop();
7529 EXPECT_EQ(intResult, 0);
7530
7531 intResult = videoSession->BeginConfig();
7532 EXPECT_EQ(intResult, 0);
7533
7534 intResult = videoSession->RemoveInput(input);
7535 EXPECT_EQ(intResult, 0);
7536
7537 intResult = videoSession->Release();
7538 EXPECT_EQ(intResult, 0);
7539 }
7540 }
7541
7542 /*
7543 * Feature: Framework
7544 * Function: Test VideoSession preconfig
7545 * SubFunction: NA
7546 * FunctionPoints: NA
7547 * EnvConditions: NA
7548 * CaseDescription: Test preconfig VideoSession all config.
7549 */
7550 HWTEST_F(CameraFrameworkUnitTest, camera_preconfig_unittest_002, TestSize.Level0)
7551 {
7552 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7553 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
7554 ASSERT_NE(input, nullptr);
7555
7556 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7557 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7558 sptr<CameraInput> camInput = (sptr<CameraInput>&)input;
7559 std::string cameraSettings = camInput->GetCameraSettings();
7560 camInput->SetCameraSettings(cameraSettings);
7561 camInput->GetCameraDevice()->Open();
7562
7563 sptr<FakeHCameraService> mockHCameraService = new FakeHCameraService(mockCameraHostManager);
7564 sptr<HCameraService> cameraService = (sptr<HCameraService>&)mockHCameraService;
7565 ASSERT_NE(cameraService, nullptr);
7566
7567 sptr<ICameraServiceCallback> callback = new (std::nothrow) CameraStatusServiceCallback(cameraManager);
7568 ASSERT_NE(callback, nullptr);
7569 int32_t intResult = cameraService->SetCameraCallback(callback);
7570 EXPECT_EQ(intResult, 0);
7571
7572 sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7573 ASSERT_NE(deviceObj, nullptr);
7574
7575 std::vector<PreconfigType> preconfigTypes = { PRECONFIG_720P, PRECONFIG_1080P, PRECONFIG_4K,
7576 PRECONFIG_HIGH_QUALITY };
7577 std::vector<ProfileSizeRatio> profileSizeRatios = { UNSPECIFIED, RATIO_1_1, RATIO_4_3, RATIO_16_9 };
7578 for (auto& preconfigType : preconfigTypes) {
7579 for (auto& profileSizeRatio : profileSizeRatios) {
7580 TestVideoSessionPreconfig(input, preconfigType, profileSizeRatio);
7581 }
7582 }
7583
7584 input->Close();
7585 }
7586
7587 /*
7588 * Feature: Framework
7589 * Function: Test HCaptureSession::NewInstance
7590 * SubFunction: NA
7591 * FunctionPoints: NA
7592 * EnvConditions: NA
7593 * CaseDescription: Test HCaptureSession::NewInstance
7594 */
7595 HWTEST_F(CameraFrameworkUnitTest, camera_fwcoverage_unittest_121, TestSize.Level0)
7596 {
7597 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
7598 SceneMode opMode = PORTRAIT;
7599 sptr<HCaptureSession> session = HCaptureSession::NewInstance(callerToken, opMode);
7600 ASSERT_NE(session, nullptr);
7601 }
7602
7603 /*
7604 * Feature: Framework
7605 * Function: Test normal branch that is support secure camera for open camera
7606 * SubFunction: NA
7607 * FunctionPoints: NA
7608 * EnvConditions: NA
7609 * CaseDescription: Test normal branch for open camera
7610 */
7611 HWTEST_F(CameraFrameworkUnitTest, camera_opencamera_unittest_001, TestSize.Level0)
7612 {
7613 InSequence s;
7614 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7615
7616 for (sptr<CameraDevice> camDevice : cameras) {
7617 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7618 ASSERT_TRUE(modes.size() != 0);
7619
7620 if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7621 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7622 ASSERT_NE(input, nullptr);
7623 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7624 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7625 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7626 std::string cameraSettings = camInput->GetCameraSettings();
7627 camInput->SetCameraSettings(cameraSettings);
7628
7629 uint64_t secureSeqId = 0;
7630 sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7631 ASSERT_NE(deviceObj, nullptr);
7632
7633 int intResult = camInput->Open(true, &secureSeqId);
7634 EXPECT_EQ(intResult, 0);
7635 EXPECT_NE(secureSeqId, 0);
7636 input->Close();
7637 break;
7638 }
7639 }
7640 }
7641
7642 /*
7643 * Feature: Framework
7644 * Function: Test anomalous branch that is not support secure camera for open camera
7645 * SubFunction: NA
7646 * FunctionPoints: NA
7647 * EnvConditions: NA
7648 * CaseDescription: Test anomalous branch for open camera
7649 */
7650 HWTEST_F(CameraFrameworkUnitTest, camera_opencamera_unittest_002, TestSize.Level0)
7651 {
7652 InSequence s;
7653 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7654
7655 for (sptr<CameraDevice> camDevice : cameras) {
7656 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7657 ASSERT_TRUE(modes.size() != 0);
7658
7659 if (find(modes.begin(), modes.end(), SceneMode::SECURE) == modes.end()) {
7660 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7661 ASSERT_NE(input, nullptr);
7662 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7663 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7664 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7665 std::string cameraSettings = camInput->GetCameraSettings();
7666 camInput->SetCameraSettings(cameraSettings);
7667
7668 uint64_t secureSeqId = 0;
7669 sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7670 ASSERT_NE(deviceObj, nullptr);
7671
7672 int intResult = camInput->Open(true, &secureSeqId);
7673 EXPECT_EQ(intResult, 0);
7674 EXPECT_EQ(secureSeqId, 0);
7675 input->Close();
7676 break;
7677 }
7678 }
7679 }
7680
7681 /*
7682 * Feature: Framework
7683 * Function: Test anomalous branch when open secure camera that seq is null
7684 * SubFunction: NA
7685 * FunctionPoints: NA
7686 * EnvConditions: NA
7687 * CaseDescription: Test anomalous branch for open camera
7688 */
7689 HWTEST_F(CameraFrameworkUnitTest, camera_opencamera_unittest_003, TestSize.Level0)
7690 {
7691 InSequence s;
7692 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7693
7694 for (sptr<CameraDevice> camDevice : cameras) {
7695 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7696 ASSERT_TRUE(modes.size() != 0);
7697
7698 if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7699 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7700 ASSERT_NE(input, nullptr);
7701 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7702 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7703 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7704 std::string cameraSettings = camInput->GetCameraSettings();
7705 camInput->SetCameraSettings(cameraSettings);
7706
7707 sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7708 ASSERT_NE(deviceObj, nullptr);
7709
7710 uint64_t* secureSeqId = nullptr;
7711 int intResult = camInput->Open(true, secureSeqId);
7712 EXPECT_EQ(intResult, CAMERA_INVALID_ARG);
7713 input->Close();
7714 break;
7715 }
7716 }
7717 }
7718
7719 /*
7720 * Feature: Framework
7721 * Function: Test normal branch that is open non-secure camera
7722 * SubFunction: NA
7723 * FunctionPoints: NA
7724 * EnvConditions: NA
7725 * CaseDescription: Test normal branch that is open non-secure camera
7726 */
7727 HWTEST_F(CameraFrameworkUnitTest, camera_opencamera_unittest_004, TestSize.Level0)
7728 {
7729 InSequence s;
7730 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7731
7732 for (sptr<CameraDevice> camDevice : cameras) {
7733 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7734 ASSERT_TRUE(modes.size() != 0);
7735
7736 if (find(modes.begin(), modes.end(), SceneMode::SECURE) == modes.end()) {
7737 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7738 ASSERT_NE(input, nullptr);
7739 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7740 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7741 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7742 std::string cameraSettings = camInput->GetCameraSettings();
7743 camInput->SetCameraSettings(cameraSettings);
7744
7745 sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
7746 ASSERT_NE(deviceObj, nullptr);
7747
7748 uint64_t secureSeqId = 0;
7749 int intResult = camInput->Open(false, &secureSeqId);
7750 EXPECT_EQ(intResult, CAMERA_OK);
7751 EXPECT_EQ(secureSeqId, 0);
7752 input->Close();
7753 break;
7754 }
7755 }
7756 }
7757
7758 /*
7759 * Feature: Framework
7760 * Function: Test normal branch that is add secure output flag
7761 * SubFunction: NA
7762 * FunctionPoints: NA
7763 * EnvConditions: NA
7764 * CaseDescription: Test normal branch that is add secure output flag
7765 */
7766 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_001, TestSize.Level0)
7767 {
7768 InSequence s;
7769 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7770
7771 for (sptr<CameraDevice> camDevice : cameras) {
7772 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7773 ASSERT_TRUE(modes.size() != 0);
7774
7775 if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7776 sptr<CameraOutputCapability> ability = cameraManager->
7777 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7778 ASSERT_NE(ability, nullptr);
7779 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7780 ASSERT_NE(input, nullptr);
7781 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7782 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7783 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7784 std::string cameraSettings = camInput->GetCameraSettings();
7785 camInput->SetCameraSettings(cameraSettings);
7786 uint64_t secureSeqId = 0;
7787 int intResult = camInput->Open(true, &secureSeqId);
7788 EXPECT_EQ(intResult, CAMERA_OK);
7789 EXPECT_NE(secureSeqId, 0);
7790
7791 sptr<CaptureOutput> preview = CreatePreviewOutput();
7792 ASSERT_NE(preview, nullptr);
7793 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
7794 ASSERT_NE(captureSession, nullptr);
7795 sptr<SecureCameraSession> secureSession = nullptr;
7796 secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
7797 ASSERT_NE(secureSession, nullptr);
7798
7799 EXPECT_EQ(secureSession->BeginConfig(), 0);
7800 EXPECT_EQ(secureSession->AddInput(input), 0);
7801 EXPECT_EQ(secureSession->AddOutput(preview), 0);
7802 EXPECT_EQ(secureSession->AddSecureOutput(preview), 0);
7803 EXPECT_EQ(secureSession->CommitConfig(), 0);
7804 secureSession->Release();
7805 input->Close();
7806 break;
7807 }
7808 }
7809 }
7810
7811 /*
7812 * Feature: Framework
7813 * Function: Test normal branch that is add secure output flag
7814 * SubFunction: NA
7815 * FunctionPoints: NA
7816 * EnvConditions: NA
7817 * CaseDescription: Test normal branch that is add secure output flag
7818 */
7819 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_002, TestSize.Level0)
7820 {
7821 InSequence s;
7822 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7823
7824 for (sptr<CameraDevice> camDevice : cameras) {
7825 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7826 ASSERT_TRUE(modes.size() != 0);
7827
7828 if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7829 sptr<CameraOutputCapability> ability = cameraManager->
7830 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7831 ASSERT_NE(ability, nullptr);
7832 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7833 ASSERT_NE(input, nullptr);
7834 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7835 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7836 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7837 std::string cameraSettings = camInput->GetCameraSettings();
7838 camInput->SetCameraSettings(cameraSettings);
7839 uint64_t secureSeqId = 0;
7840 int intResult = camInput->Open(false, &secureSeqId);
7841 EXPECT_EQ(intResult, CAMERA_OK);
7842 EXPECT_NE(secureSeqId, 0);
7843 sptr<CaptureOutput> preview = CreatePreviewOutput();
7844 ASSERT_NE(preview, nullptr);
7845 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
7846 ASSERT_NE(captureSession, nullptr);
7847 sptr<SecureCameraSession> secureSession = nullptr;
7848 secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
7849 ASSERT_NE(secureSession, nullptr);
7850
7851 EXPECT_EQ(secureSession->BeginConfig(), 0);
7852 EXPECT_EQ(secureSession->AddInput(input), 0);
7853 EXPECT_EQ(secureSession->AddOutput(preview), 0);
7854 EXPECT_EQ(secureSession->AddSecureOutput(preview), 0);
7855 EXPECT_EQ(secureSession->CommitConfig(), 0);
7856 secureSession->Release();
7857 input->Close();
7858 break;
7859 }
7860 }
7861 }
7862
7863 /*
7864 * Feature: Framework
7865 * Function: Test abnormal branch that is add secure output flag twice
7866 * SubFunction: NA
7867 * FunctionPoints: NA
7868 * EnvConditions: NA
7869 * CaseDescription: Test abnormal branch that is add secure output flag twice
7870 */
7871 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_003, TestSize.Level0)
7872 {
7873 InSequence s;
7874 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7875
7876 for (sptr<CameraDevice> camDevice : cameras) {
7877 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7878 ASSERT_TRUE(modes.size() != 0);
7879
7880 if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7881 sptr<CameraOutputCapability> ability = cameraManager->
7882 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7883 ASSERT_NE(ability, nullptr);
7884 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7885 ASSERT_NE(input, nullptr);
7886 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7887 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7888 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7889 std::string cameraSettings = camInput->GetCameraSettings();
7890 camInput->SetCameraSettings(cameraSettings);
7891 uint64_t secureSeqId = 0;
7892 int intResult = camInput->Open(false, &secureSeqId);
7893 EXPECT_EQ(intResult, CAMERA_OK);
7894 EXPECT_NE(secureSeqId, 0);
7895
7896 sptr<CaptureOutput> preview1 = CreatePreviewOutput();
7897 ASSERT_NE(preview1, nullptr);
7898 sptr<CaptureOutput> preview2 = CreatePreviewOutput();
7899 ASSERT_NE(preview2, nullptr);
7900 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
7901 ASSERT_NE(captureSession, nullptr);
7902 sptr<SecureCameraSession> secureSession = nullptr;
7903 secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
7904 ASSERT_NE(secureSession, nullptr);
7905
7906 EXPECT_EQ(secureSession->BeginConfig(), 0);
7907 EXPECT_EQ(secureSession->AddInput(input), 0);
7908 EXPECT_EQ(secureSession->AddOutput(preview1), 0);
7909 EXPECT_EQ(secureSession->AddOutput(preview2), 0);
7910 EXPECT_EQ(secureSession->AddSecureOutput(preview1), 0);
7911 EXPECT_EQ(secureSession->AddSecureOutput(preview2), OPERATION_NOT_ALLOWED);
7912 EXPECT_EQ(secureSession->CommitConfig(), 0);
7913 secureSession->Release();
7914 input->Close();
7915 break;
7916 }
7917 }
7918 }
7919
7920 /*
7921 * Feature: Framework
7922 * Function: Test abnormal branch that is add secure output flag twice
7923 * SubFunction: NA
7924 * FunctionPoints: NA
7925 * EnvConditions: NA
7926 * CaseDescription: Test abnormal branch that is add secure output flag twice
7927 */
7928 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_004, TestSize.Level0)
7929 {
7930 InSequence s;
7931 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7932
7933 for (sptr<CameraDevice> camDevice : cameras) {
7934 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7935 ASSERT_TRUE(modes.size() != 0);
7936
7937 if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7938 sptr<CameraOutputCapability> ability = cameraManager->
7939 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7940 ASSERT_NE(ability, nullptr);
7941 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7942 ASSERT_NE(input, nullptr);
7943 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
7944 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
7945 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
7946 std::string cameraSettings = camInput->GetCameraSettings();
7947 camInput->SetCameraSettings(cameraSettings);
7948 uint64_t secureSeqId = 0;
7949 int intResult = camInput->Open(false, &secureSeqId);
7950 EXPECT_EQ(intResult, CAMERA_OK);
7951 EXPECT_NE(secureSeqId, 0);
7952 sptr<CaptureOutput> preview1 = CreatePreviewOutput();
7953 ASSERT_NE(preview1, nullptr);
7954 sptr<CaptureOutput> preview2 = CreatePreviewOutput();
7955 ASSERT_NE(preview2, nullptr);
7956 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
7957 ASSERT_NE(captureSession, nullptr);
7958 sptr<SecureCameraSession> secureSession = nullptr;
7959 secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
7960 ASSERT_NE(secureSession, nullptr);
7961
7962 EXPECT_EQ(secureSession->BeginConfig(), 0);
7963 EXPECT_EQ(secureSession->AddInput(input), 0);
7964 EXPECT_EQ(secureSession->AddOutput(preview1), 0);
7965 EXPECT_EQ(secureSession->AddOutput(preview2), 0);
7966 EXPECT_EQ(secureSession->AddSecureOutput(preview1), 0);
7967 EXPECT_EQ(secureSession->AddSecureOutput(preview2), OPERATION_NOT_ALLOWED);
7968 EXPECT_EQ(secureSession->CommitConfig(), 0);
7969 secureSession->Release();
7970 input->Close();
7971 break;
7972 }
7973 }
7974 }
7975
7976 /*
7977 * Feature: Framework
7978 * Function: Test abnormal branch that secure output is added after commiting
7979 * SubFunction: NA
7980 * FunctionPoints: NA
7981 * EnvConditions: NA
7982 * CaseDescription: Test abnormal branch that secure output is added after commiting
7983 */
7984 HWTEST_F(CameraFrameworkUnitTest, camera_securecamera_unittest_005, TestSize.Level0)
7985 {
7986 InSequence s;
7987 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
7988
7989 for (sptr<CameraDevice> camDevice : cameras) {
7990 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
7991 ASSERT_TRUE(modes.size() != 0);
7992
7993 if (find(modes.begin(), modes.end(), SceneMode::SECURE) != modes.end()) {
7994 sptr<CameraOutputCapability> ability = cameraManager->
7995 GetSupportedOutputCapability(camDevice, SceneMode::SECURE);
7996 ASSERT_NE(ability, nullptr);
7997 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
7998 ASSERT_NE(input, nullptr);
7999 EXPECT_CALL(*mockCameraHostManager, OpenCameraDevice(_, _, _, _));
8000 EXPECT_CALL(*mockCameraDevice, SetResultMode(ON_CHANGED));
8001 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
8002 std::string cameraSettings = camInput->GetCameraSettings();
8003 camInput->SetCameraSettings(cameraSettings);
8004 uint64_t secureSeqId = 0;
8005 int intResult = camInput->Open(false, &secureSeqId);
8006 EXPECT_EQ(intResult, CAMERA_OK);
8007 EXPECT_NE(secureSeqId, 0);
8008 sptr<CaptureOutput> preview = CreatePreviewOutput();
8009 ASSERT_NE(preview, nullptr);
8010 sptr<CaptureSession> captureSession = cameraManager->CreateCaptureSession(SceneMode::SECURE);
8011 ASSERT_NE(captureSession, nullptr);
8012 sptr<SecureCameraSession> secureSession = nullptr;
8013 secureSession = static_cast<SecureCameraSession *> (captureSession.GetRefPtr());
8014 ASSERT_NE(secureSession, nullptr);
8015
8016 EXPECT_EQ(secureSession->BeginConfig(), 0);
8017 EXPECT_EQ(secureSession->AddInput(input), 0);
8018 EXPECT_EQ(secureSession->AddOutput(preview), 0);
8019 EXPECT_EQ(secureSession->CommitConfig(), 0);
8020 EXPECT_EQ(secureSession->AddSecureOutput(preview), OPERATION_NOT_ALLOWED);
8021 secureSession->Release();
8022 input->Close();
8023 break;
8024 }
8025 }
8026 }
8027
8028 HWTEST_F(CameraFrameworkUnitTest, test_createDeferredPhotoProcessingSession, TestSize.Level0)
8029 {
8030 sptr<DeferredPhotoProcSession> deferredProcSession;
8031 deferredProcSession = cameraManager->CreateDeferredPhotoProcessingSession(g_userId_,
8032 std::make_shared<TestDeferredPhotoProcSessionCallback>());
8033 ASSERT_NE(deferredProcSession, nullptr);
8034 }
8035
8036 /**
8037 * @tc.name : Test IsSlowMotionDetectionSupported API
8038 * @tc.number : IsSlowMotionDetectionSupported_001
8039 * @tc.desc : Test IsSlowMotionDetectionSupported interface, when session is not committed.
8040 * @tc.require : slow motion only support videoStream & previewStrem & 1080p & 240fps
8041 */
8042 HWTEST_F(CameraFrameworkUnitTest, IsSlowMotionDetectionSupported_001, TestSize.Level0)
8043 {
8044 sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::SLOW_MOTION);
8045 ASSERT_NE(session, nullptr);
8046 sptr<SlowMotionSession> slowSession = static_cast<SlowMotionSession *> (session.GetRefPtr());
8047 bool result = slowSession->IsSlowMotionDetectionSupported();
8048 EXPECT_EQ(false, result);
8049 }
8050
8051 /**
8052 * @tc.name : Test IsSlowMotionDetectionSupported API
8053 * @tc.number : IsSlowMotionDetectionSupported_002
8054 * @tc.desc : Test IsSlowMotionDetectionSupported interface, when camera device is null.
8055 * @tc.require : slow motion only support videoStream & previewStrem & 1080p & 240fps
8056 */
8057 HWTEST_F(CameraFrameworkUnitTest, IsSlowMotionDetectionSupported_002, TestSize.Level0)
8058 {
8059 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
8060 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
8061 ASSERT_NE(input, nullptr);
8062 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
8063 std::string cameraSettings = camInput->GetCameraSettings();
8064 camInput->SetCameraSettings(cameraSettings);
8065 camInput->GetCameraDevice()->Open();
8066
8067 sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::SLOW_MOTION);
8068 ASSERT_NE(session, nullptr);
8069
8070 sptr<Surface> videoSurface = Surface::CreateSurfaceAsConsumer();
8071 CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
8072 Size videoSize;
8073 videoSize.width = 1920;
8074 videoSize.height = 1080;
8075 std::vector<int32_t> videoFramerates = {0, 0};
8076 VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
8077 sptr<VideoOutput> videoOutput = cameraManager->CreateVideoOutput(videoProfile, videoSurface);
8078 ASSERT_NE(videoOutput, nullptr);
8079
8080 sptr<Surface> previewSurface = Surface::CreateSurfaceAsConsumer();
8081 CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
8082 Size previewSize;
8083 previewSize.width = 1920;
8084 previewSize.height = 1080;
8085 Profile previewProfile = Profile(previewFormat, previewSize);
8086 sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, previewSurface);
8087 ASSERT_NE(previewOutput, nullptr);
8088
8089 int32_t intResult = session->BeginConfig();
8090 EXPECT_EQ(intResult, 0);
8091
8092 intResult = session->AddInput(input);
8093 EXPECT_EQ(intResult, 0);
8094
8095 sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
8096 intResult = session->AddOutput(previewOutputCaptureUpper);
8097 EXPECT_EQ(intResult, 0);
8098
8099 sptr<CaptureOutput> videoOutputCaptureUpper = videoOutput;
8100 intResult = session->AddOutput(videoOutputCaptureUpper);
8101 EXPECT_EQ(intResult, 0);
8102
8103 intResult = session->CommitConfig();
8104 EXPECT_EQ(intResult, 0);
8105
8106 intResult = input->Release();
8107 EXPECT_EQ(intResult, 0);
8108
8109 sptr<SlowMotionSession> slowSession = nullptr;
8110 slowSession = static_cast<SlowMotionSession *> (session.GetRefPtr());
8111 bool result = slowSession->IsSlowMotionDetectionSupported();
8112 EXPECT_EQ(false, result);
8113 }
8114
8115 /**
8116 * @tc.name : Test IsSlowMotionDetectionSupported API
8117 * @tc.number : IsSlowMotionDetectionSupported_003
8118 * @tc.desc : Test IsSlowMotionDetectionSupported interface, when metadata item not found.
8119 * Test IsSlowMotionDetectionSupported interface, when metadata item data is 0.
8120 * Test IsSlowMotionDetectionSupported interface, when metadata item data is 1.
8121 * @tc.require : slow motion only support videoStream & previewStrem & 1080p & 240fps
8122 */
8123 HWTEST_F(CameraFrameworkUnitTest, IsSlowMotionDetectionSupported_003, TestSize.Level0)
8124 {
8125 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
8126 sptr<CaptureInput> input = cameraManager->CreateCameraInput(cameras[0]);
8127 ASSERT_NE(input, nullptr);
8128 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
8129 std::string cameraSettings = camInput->GetCameraSettings();
8130 camInput->SetCameraSettings(cameraSettings);
8131 camInput->GetCameraDevice()->Open();
8132
8133 sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::SLOW_MOTION);
8134 ASSERT_NE(session, nullptr);
8135
8136 sptr<Surface> videoSurface = Surface::CreateSurfaceAsConsumer();
8137 CameraFormat videoFormat = CAMERA_FORMAT_YUV_420_SP;
8138 Size videoSize;
8139 videoSize.width = 1920;
8140 videoSize.height = 1080;
8141 std::vector<int32_t> videoFramerates = {0, 0};
8142 VideoProfile videoProfile = VideoProfile(videoFormat, videoSize, videoFramerates);
8143 sptr<VideoOutput> videoOutput = cameraManager->CreateVideoOutput(videoProfile, videoSurface);
8144 ASSERT_NE(videoOutput, nullptr);
8145
8146 sptr<Surface> previewSurface = Surface::CreateSurfaceAsConsumer();
8147 CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
8148 Size previewSize;
8149 previewSize.width = 1920;
8150 previewSize.height = 1080;
8151 Profile previewProfile = Profile(previewFormat, previewSize);
8152 sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, previewSurface);
8153 ASSERT_NE(previewOutput, nullptr);
8154
8155 int32_t intResult = session->BeginConfig();
8156 EXPECT_EQ(intResult, 0);
8157
8158 intResult = session->AddInput(input);
8159 EXPECT_EQ(intResult, 0);
8160
8161 sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
8162 intResult = session->AddOutput(previewOutputCaptureUpper);
8163 EXPECT_EQ(intResult, 0);
8164
8165 sptr<CaptureOutput> videoOutputCaptureUpper = videoOutput;
8166 intResult = session->AddOutput(videoOutputCaptureUpper);
8167 EXPECT_EQ(intResult, 0);
8168
8169 intResult = session->CommitConfig();
8170 EXPECT_EQ(intResult, 0);
8171
8172 sptr<SlowMotionSession> slowSession = static_cast<SlowMotionSession *> (session.GetRefPtr());
8173 std::shared_ptr<OHOS::Camera::CameraMetadata> metadata =
8174 slowSession->GetInputDevice()->GetCameraDeviceInfo()->GetMetadata();
8175 uint8_t value_u8 = 0;
8176 bool result = false;
8177 // metadata item not found.
8178 result = slowSession->IsSlowMotionDetectionSupported();
8179 EXPECT_EQ(false, result);
8180 // metadata item data is 0.
8181 metadata->addEntry(OHOS_ABILITY_MOTION_DETECTION_SUPPORT, &value_u8, sizeof(uint8_t));
8182 result = slowSession->IsSlowMotionDetectionSupported();
8183 EXPECT_EQ(false, result);
8184 value_u8 = 1;
8185 // metadata item data is 1.
8186 metadata->updateEntry(OHOS_ABILITY_MOTION_DETECTION_SUPPORT, &value_u8, sizeof(uint8_t));
8187 result = slowSession->IsSlowMotionDetectionSupported();
8188 EXPECT_EQ(true, result);
8189
8190 Rect rect;
8191 rect.topLeftX = 0.1;
8192 rect.topLeftY = 0.1;
8193 rect.width = 0.8;
8194 rect.height = 0.8;
8195 slowSession->SetSlowMotionDetectionArea(rect);
8196
8197 std::shared_ptr<TestSlowMotionStateCallback> callback = std::make_shared<TestSlowMotionStateCallback>();
8198 slowSession->SetCallback(callback);
8199 EXPECT_EQ(slowSession->GetApplicationCallback(), callback);
8200 }
8201
8202 /*
8203 * Feature: Framework
8204 * Function: Test PanoramaSession preview
8205 * SubFunction: NA
8206 * FunctionPoints: NA
8207 * EnvConditions: NA
8208 * CaseDescription: Test PanoramaSession preview
8209 */
8210 HWTEST_F(CameraFrameworkUnitTest, camera_panorama_unittest_001, TestSize.Level0)
8211 {
8212 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
8213 for (sptr<CameraDevice> camDevice : cameras) {
8214 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
8215 if (find(modes.begin(), modes.end(), SceneMode::PANORAMA_PHOTO) != modes.end()) {
8216 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
8217 ASSERT_NE(input, nullptr);
8218
8219 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
8220 std::string cameraSettings = camInput->GetCameraSettings();
8221 camInput->SetCameraSettings(cameraSettings);
8222 camInput->GetCameraDevice()->Open();
8223
8224 sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::PANORAMA_PHOTO);
8225 sptr<PanoramaSession> panoramaSession = static_cast<PanoramaSession *> (session.GetRefPtr());
8226 ASSERT_NE(panoramaSession, nullptr);
8227
8228 sptr<Surface> previewSurface = Surface::CreateSurfaceAsConsumer();
8229 CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
8230 Size previewSize;
8231 previewSize.width = 1920;
8232 previewSize.height = 1080;
8233 Profile previewProfile = Profile(previewFormat, previewSize);
8234 sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, previewSurface);
8235 ASSERT_NE(previewOutput, nullptr);
8236
8237 int32_t intResult = panoramaSession->BeginConfig();
8238 EXPECT_EQ(intResult, 0);
8239
8240 intResult = panoramaSession->AddInput(input);
8241 EXPECT_EQ(intResult, 0);
8242
8243 sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
8244 intResult = panoramaSession->AddOutput(previewOutputCaptureUpper);
8245 EXPECT_EQ(intResult, 0);
8246
8247 intResult = panoramaSession->CommitConfig();
8248 EXPECT_EQ(intResult, 0);
8249
8250 panoramaSession->Release();
8251 camInput->Close();
8252 }
8253 }
8254 }
8255
8256 /*
8257 * Feature: Framework
8258 * Function: Test PanoramaSession set white balance lock
8259 * SubFunction: NA
8260 * FunctionPoints: NA
8261 * EnvConditions: NA
8262 * CaseDescription: Test PanoramaSession set white balance lock
8263 */
8264 HWTEST_F(CameraFrameworkUnitTest, camera_panorama_unittest_002, TestSize.Level0)
8265 {
8266 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
8267 for (sptr<CameraDevice> camDevice : cameras) {
8268 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(camDevice);
8269 if (find(modes.begin(), modes.end(), SceneMode::PANORAMA_PHOTO) != modes.end()) {
8270 sptr<CaptureInput> input = cameraManager->CreateCameraInput(camDevice);
8271 ASSERT_NE(input, nullptr);
8272
8273 sptr<CameraInput> camInput = (sptr<CameraInput> &)input;
8274 std::string cameraSettings = camInput->GetCameraSettings();
8275 camInput->SetCameraSettings(cameraSettings);
8276 camInput->GetCameraDevice()->Open();
8277
8278 sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::PANORAMA_PHOTO);
8279 sptr<PanoramaSession> panoramaSession = static_cast<PanoramaSession *> (session.GetRefPtr());
8280 ASSERT_NE(panoramaSession, nullptr);
8281
8282 sptr<Surface> previewSurface = Surface::CreateSurfaceAsConsumer();
8283 CameraFormat previewFormat = CAMERA_FORMAT_YUV_420_SP;
8284 Size previewSize;
8285 previewSize.width = 1920;
8286 previewSize.height = 1080;
8287 Profile previewProfile = Profile(previewFormat, previewSize);
8288 sptr<CaptureOutput> previewOutput = cameraManager->CreatePreviewOutput(previewProfile, previewSurface);
8289 ASSERT_NE(previewOutput, nullptr);
8290
8291 int32_t intResult = panoramaSession->BeginConfig();
8292 EXPECT_EQ(intResult, 0);
8293
8294 intResult = panoramaSession->AddInput(input);
8295 EXPECT_EQ(intResult, 0);
8296
8297 sptr<CaptureOutput> previewOutputCaptureUpper = previewOutput;
8298 intResult = panoramaSession->AddOutput(previewOutputCaptureUpper);
8299 EXPECT_EQ(intResult, 0);
8300
8301 intResult = panoramaSession->CommitConfig();
8302 EXPECT_EQ(intResult, 0);
8303
8304 panoramaSession->SetWhiteBalanceMode(AWB_MODE_LOCKED);
8305 WhiteBalanceMode mode;
8306 panoramaSession->GetWhiteBalanceMode(mode);
8307 EXPECT_EQ(AWB_MODE_LOCKED, mode);
8308
8309 panoramaSession->Release();
8310 camInput->Close();
8311 }
8312 }
8313 }
8314
8315 HWTEST_F(CameraFrameworkUnitTest, test_capture_session_callbacks, TestSize.Level0)
8316 {
8317 sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::CAPTURE);
8318 ASSERT_NE(session, nullptr);
8319
8320 bool isSessionStarted = session->IsSessionStarted();
8321 EXPECT_EQ(isSessionStarted, false);
8322 std::string deviceClass;
8323 int32_t intResult = session->SetPreviewRotation(deviceClass);
8324 EXPECT_EQ(intResult, 0);
8325
8326 std::shared_ptr<TestExposureCallback> exposureCallback = std::make_shared<TestExposureCallback>();
8327 session->SetExposureCallback(exposureCallback);
8328 EXPECT_EQ(session->GetExposureCallback(), exposureCallback);
8329
8330 std::shared_ptr<TestSmoothZoomCallback> smoothZoomCallback = std::make_shared<TestSmoothZoomCallback>();
8331 session->SetSmoothZoomCallback(smoothZoomCallback);
8332 EXPECT_EQ(session->GetSmoothZoomCallback(), smoothZoomCallback);
8333
8334 std::shared_ptr<TestAbilityCallback> abilityCallback = std::make_shared<TestAbilityCallback>();
8335 session->SetAbilityCallback(abilityCallback);
8336
8337 std::shared_ptr<TestFocusCallback> focusCallback = std::make_shared<TestFocusCallback>();
8338 session->SetFocusCallback(focusCallback);
8339 EXPECT_EQ(session->GetFocusCallback(), focusCallback);
8340
8341 std::shared_ptr<TestARCallback> aRCallback = std::make_shared<TestARCallback>();
8342 session->SetARCallback(aRCallback);
8343 EXPECT_EQ(session->GetARCallback(), aRCallback);
8344 }
8345
8346 HWTEST_F(CameraFrameworkUnitTest, test_CheckFrameRateRangeWithCurrentFps, TestSize.Level0)
8347 {
8348 sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::CAPTURE);
8349 ASSERT_NE(session, nullptr);
8350 ASSERT_EQ(session->CheckFrameRateRangeWithCurrentFps(30, 30, 30, 60), false);
8351 ASSERT_EQ(session->CheckFrameRateRangeWithCurrentFps(30, 30, 30, 60), false);
8352 ASSERT_EQ(session->CheckFrameRateRangeWithCurrentFps(20, 40, 20, 40), true);
8353 ASSERT_EQ(session->CheckFrameRateRangeWithCurrentFps(20, 40, 30, 60), false);
8354 }
8355
8356 HWTEST_F(CameraFrameworkUnitTest, test_CanPreconfig, TestSize.Level0)
8357 {
8358 sptr<CaptureSession> session = cameraManager->CreateCaptureSession(SceneMode::CAPTURE);
8359 ASSERT_NE(session, nullptr);
8360 PreconfigType preconfigType = PreconfigType::PRECONFIG_720P;
8361 ProfileSizeRatio preconfigRatio = ProfileSizeRatio::RATIO_16_9;
8362 EXPECT_EQ(session->CanPreconfig(preconfigType, preconfigRatio), true);
8363 int32_t result = session->Preconfig(preconfigType, preconfigRatio);
8364 EXPECT_EQ(result, 0);
8365 }
8366
8367 /*
8368 * Feature: Framework
8369 * Function: Test cameraManager GetSupportedOutputCapability with yuv photo
8370 * SubFunction: NA
8371 * FunctionPoints: NA
8372 * EnvConditions: NA
8373 * CaseDescription: Test cameraManager GetSupportedOutputCapability with yuv photo
8374 */
8375 HWTEST_F(CameraFrameworkUnitTest, camera_framework_unittest_can_get_yuv_photo_profile, TestSize.Level0)
8376 {
8377 std::vector<sptr<CameraDevice>> cameras = cameraManager->GetSupportedCameras();
8378
8379 SceneMode mode = PORTRAIT;
8380 std::vector<SceneMode> modes = cameraManager->GetSupportedModes(cameras[0]);
8381 ASSERT_TRUE(modes.size() != 0);
8382
8383 sptr<CameraOutputCapability> ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
8384 ASSERT_NE(ability, nullptr);
8385
8386 vector<Profile> photoProfiles = ability->GetPhotoProfiles();
8387 auto it = std::find_if(photoProfiles.begin(), photoProfiles.end(),
__anon779f14c50802(const auto& profile)8388 [](const auto& profile){ return profile.format_ == CAMERA_FORMAT_YUV_420_SP;});
8389
8390
8391 mode = SceneMode::CAPTURE;
8392 ability = cameraManager->GetSupportedOutputCapability(cameras[0], mode);
8393 ASSERT_NE(ability, nullptr);
8394
8395 it = std::find_if(photoProfiles.begin(), photoProfiles.end(),
__anon779f14c50902(const auto& profile)8396 [](const auto& profile){ return profile.format_ == CAMERA_FORMAT_YUV_420_SP;});
8397 }
8398
8399 HWTEST_F(CameraFrameworkUnitTest, test_CreateBurstDisplayName, TestSize.Level0)
8400 {
8401 uint32_t callerToken = IPCSkeleton::GetCallingTokenID();
8402 SceneMode opMode = CAPTURE;
8403 sptr<HCaptureSession> session = HCaptureSession::NewInstance(callerToken, opMode);
8404 std::string displayName = session->CreateBurstDisplayName(1, 1);
8405 cout << "displayName: " << displayName <<endl;
8406 ASSERT_NE(displayName, "");
8407 ASSERT_THAT(displayName, testing::EndsWith("_COVER"));
8408 displayName = session->CreateBurstDisplayName(2, 2);
8409 cout << "displayName: " << displayName <<endl;
8410 ASSERT_THAT(displayName, Not(testing::EndsWith("_COVER")));
8411 displayName = session->CreateBurstDisplayName(-1, -1);
8412 cout << "displayName: " << displayName <<endl;
8413 }
8414
8415 /*
8416 * Feature: Framework
8417 * Function: Verify that the method returns the correct list of cameras when the device is not foldable.
8418 * SubFunction: NA
8419 * FunctionPoints: NA
8420 * EnvConditions: NA
8421 * CaseDescription: Verify that the method returns the correct list of cameras when the device is not foldable.
8422 */
8423 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_not_foldable, TestSize.Level0)
8424 {
8425 EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8426 .WillRepeatedly(Return(false));
8427 std::vector<sptr<CameraDevice>> expectedCameraList;
8428 auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8429 auto camera0 = new CameraDevice("device0", changedMetadata);
8430 auto camera1 = new CameraDevice("device1", changedMetadata);
8431 auto camera2 = new CameraDevice("device2", changedMetadata);
8432 expectedCameraList.emplace_back(camera0);
8433 expectedCameraList.emplace_back(camera1);
8434 expectedCameraList.emplace_back(camera2);
8435 mockCameraManager->cameraDeviceList_ = expectedCameraList;
8436 auto result = mockCameraManager->GetSupportedCameras();
8437 ASSERT_EQ(result.size(), expectedCameraList.size());
8438 }
8439
8440 /*
8441 * Feature: Framework
8442 * Function: The goal is to verify that the method correctly returns the list of supported cameras when the device is
8443 collapsible and in the "expand" state
8444 * SubFunction: NA
8445 * FunctionPoints: NA
8446 * EnvConditions: NA
8447 * CaseDescription: The goal is to verify that the method correctly returns the list of supported cameras when the
8448 device is collapsible and in the "expand" state
8449 */
8450 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_foldable_expand01, TestSize.Level0)
8451 {
8452 EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8453 .WillRepeatedly(Return(true));
8454
8455 EXPECT_CALL(*mockCameraManager, GetFoldStatus())
8456 .WillRepeatedly(Return(FoldStatus::EXPAND));
8457
8458 auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8459 int32_t cameraPosition = CAMERA_POSITION_BACK;
8460 changedMetadata->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8461 int32_t foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED | OHOS_CAMERA_FOLD_STATUS_FOLDED;
8462 changedMetadata->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8463 auto camera0 = new CameraDevice("device0", changedMetadata);
8464
8465 auto changedMetadata1 = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8466 cameraPosition = CAMERA_POSITION_FRONT;
8467 changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8468 foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED;
8469 changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8470 auto camera1 = new CameraDevice("device1", changedMetadata1);
8471
8472 std::vector<sptr<CameraDevice>> expectedCameraList;
8473 expectedCameraList.emplace_back(camera0);
8474 expectedCameraList.emplace_back(camera1);
8475 mockCameraManager->cameraDeviceList_ = expectedCameraList;
8476 auto result = mockCameraManager->GetSupportedCameras();
8477
8478 ASSERT_EQ(result.size(), 2);
8479 }
8480
8481 /*
8482 * Feature: Framework
8483 * Function: The goal is to verify that the method correctly returns the list of supported cameras when the device is
8484 collapsible and in the "expand" state
8485 * SubFunction: NA
8486 * FunctionPoints: NA
8487 * EnvConditions: NA
8488 * CaseDescription: The goal is to verify that the method correctly returns the list of supported cameras when the
8489 device is collapsible and in the "expand" state
8490 */
8491 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_foldable_expand02, TestSize.Level0)
8492 {
8493 EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8494 .WillRepeatedly(Return(true));
8495
8496 EXPECT_CALL(*mockCameraManager, GetFoldStatus())
8497 .WillRepeatedly(Return(FoldStatus::EXPAND));
8498
8499 auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8500 int32_t cameraPosition = CAMERA_POSITION_BACK;
8501 changedMetadata->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8502 int32_t foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED | OHOS_CAMERA_FOLD_STATUS_FOLDED;
8503 changedMetadata->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8504 auto camera0 = new CameraDevice("device0", changedMetadata);
8505
8506 auto changedMetadata1 = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8507 cameraPosition = CAMERA_POSITION_FRONT;
8508 changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8509 foldStatus = OHOS_CAMERA_FOLD_STATUS_FOLDED;
8510 changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8511 auto camera1 = new CameraDevice("device1", changedMetadata1);
8512
8513 std::vector<sptr<CameraDevice>> expectedCameraList;
8514 expectedCameraList.emplace_back(camera0);
8515 expectedCameraList.emplace_back(camera1);
8516 mockCameraManager->cameraDeviceList_ = expectedCameraList;
8517 auto result = mockCameraManager->GetSupportedCameras();
8518
8519 ASSERT_EQ(result.size(), 1);
8520 }
8521
8522 /*
8523 * Feature: Framework
8524 * Function: In the scenario where the device is foldable and in a folded state, the goal is to ensure that the method
8525 correctly returns the list of cameras that support the current folded state.
8526 * SubFunction: NA
8527 * FunctionPoints: NA
8528 * EnvConditions: NA
8529 * CaseDescription: In the scenario where the device is foldable and in a folded state, the goal is to ensure that the
8530 method correctly returns the list of cameras that support the current folded state.
8531 */
8532 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_foldable_fold, TestSize.Level0)
8533 {
8534 EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8535 .WillRepeatedly(Return(true));
8536
8537 EXPECT_CALL(*mockCameraManager, GetFoldStatus())
8538 .WillRepeatedly(Return(FoldStatus::FOLDED));
8539
8540 auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8541 int32_t cameraPosition = CAMERA_POSITION_BACK;
8542 changedMetadata->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8543 int32_t foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED | OHOS_CAMERA_FOLD_STATUS_FOLDED;
8544 changedMetadata->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8545 auto camera0 = new CameraDevice("device0", changedMetadata);
8546
8547 auto changedMetadata1 = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8548 cameraPosition = CAMERA_POSITION_FRONT;
8549 changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8550 foldStatus = OHOS_CAMERA_FOLD_STATUS_FOLDED;
8551 changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8552 auto camera1 = new CameraDevice("device1", changedMetadata1);
8553
8554 std::vector<sptr<CameraDevice>> expectedCameraList;
8555 expectedCameraList.emplace_back(camera0);
8556 expectedCameraList.emplace_back(camera1);
8557 mockCameraManager->cameraDeviceList_ = expectedCameraList;
8558 auto result = mockCameraManager->GetSupportedCameras();
8559
8560 ASSERT_EQ(result.size(), 2);
8561 }
8562
8563 /*
8564 * Feature: Framework
8565 * Function: The unit test get_supported_cameras_foldable_half_fold checks the behavior of the
8566 CameraManager::GetSupportedCameras method when the device is foldable and in a half-folded state.
8567 * SubFunction: NA
8568 * FunctionPoints: NA
8569 * EnvConditions: NA
8570 * CaseDescription: The unit test get_supported_cameras_foldable_half_fold checks the behavior of the
8571 CameraManager::GetSupportedCameras method when the device is foldable and in a half-folded state.
8572 */
8573 HWTEST_F(CameraFrameworkUnitTest, get_supported_cameras_foldable_half_fold, TestSize.Level0)
8574 {
8575 EXPECT_CALL(*mockCameraManager, GetIsFoldable())
8576 .WillRepeatedly(Return(true));
8577
8578 EXPECT_CALL(*mockCameraManager, GetFoldStatus())
8579 .WillRepeatedly(Return(FoldStatus::HALF_FOLD));
8580
8581 auto changedMetadata = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8582 int32_t cameraPosition = CAMERA_POSITION_BACK;
8583 changedMetadata->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8584 int32_t foldStatus = OHOS_CAMERA_FOLD_STATUS_EXPANDED | OHOS_CAMERA_FOLD_STATUS_FOLDED;
8585 changedMetadata->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8586 auto camera0 = new CameraDevice("device0", changedMetadata);
8587
8588 auto changedMetadata1 = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
8589 cameraPosition = CAMERA_POSITION_FRONT;
8590 changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_POSITION, &cameraPosition, 1);
8591 foldStatus = OHOS_CAMERA_FOLD_STATUS_FOLDED;
8592 changedMetadata1->addEntry(OHOS_ABILITY_CAMERA_FOLD_STATUS, &foldStatus, 1);
8593 auto camera1 = new CameraDevice("device1", changedMetadata1);
8594
8595 std::vector<sptr<CameraDevice>> expectedCameraList;
8596 expectedCameraList.emplace_back(camera0);
8597 expectedCameraList.emplace_back(camera1);
8598 mockCameraManager->cameraDeviceList_ = expectedCameraList;
8599 auto result = mockCameraManager->GetSupportedCameras();
8600 ASSERT_EQ(result.size(), 1);
8601 }
8602 } // CameraStandard
8603 } // OHOS
8604