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