1 /*
2 * Copyright (c) 2025 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 "accesstoken_kit.h"
17 #include "camera_error_code.h"
18 #include "camera_log.h"
19 #include "camera_manager.h"
20 #include "camera_util.h"
21 #include "camera_base_function_moduletest.h"
22 #include "gtest/gtest.h"
23 #include "hap_token_info.h"
24 #include "nativetoken_kit.h"
25 #include "surface.h"
26 #include "system_ability_definition.h"
27 #include "test_common.h"
28 #include "test_token.h"
29 #include "token_setproc.h"
30
31 using namespace testing::ext;
32
33 namespace OHOS {
34 namespace CameraStandard {
OnCameraMute(bool muteMode) const35 void TestCameraMuteListener::OnCameraMute(bool muteMode) const
36 {
37 MEDIA_INFO_LOG("TestCameraMuteListener::OnCameraMute called %{public}d", muteMode);
38 }
OnTorchStatusChange(const TorchStatusInfo & torchStatusInfo) const39 void TestTorchListener::OnTorchStatusChange(const TorchStatusInfo &torchStatusInfo) const
40 {
41 MEDIA_INFO_LOG("TestTorchListener::OnTorchStatusChange called %{public}d %{public}d %{public}f",
42 torchStatusInfo.isTorchAvailable, torchStatusInfo.isTorchActive, torchStatusInfo.torchLevel);
43 }
OnFoldStatusChanged(const FoldStatusInfo & foldStatusInfo) const44 void TestFoldListener::OnFoldStatusChanged(const FoldStatusInfo &foldStatusInfo) const
45 {
46 MEDIA_INFO_LOG("TestFoldListener::OnFoldStatusChanged called %{public}d", foldStatusInfo.foldStatus);
47 }
OnControlCenterStatusChanged(bool status) const48 void TestControlCenterStatusListener::OnControlCenterStatusChanged(bool status) const
49 {
50 MEDIA_INFO_LOG("TestControlCenterStatusListener::OnControlCenterStatusChanged called %{public}d", status);
51 }
OnError(int32_t errorCode)52 void TestSessionCallback::OnError(int32_t errorCode)
53 {
54 MEDIA_INFO_LOG("TestSessionCallback::OnError called %{public}d", errorCode);
55 }
OnExposureState(ExposureState state)56 void TestExposureCallback::OnExposureState(ExposureState state)
57 {
58 MEDIA_INFO_LOG("TestExposureCallback::OnExposureState called %{public}d", state);
59 }
OnFocusState(FocusState state)60 void TestFocusCallback::OnFocusState(FocusState state)
61 {
62 MEDIA_INFO_LOG("TestFocusCallback::OnFocusState callecd %{public}d", state);
63 }
OnMacroStatusChanged(MacroStatus status)64 void TestMacroStatusCallback::OnMacroStatusChanged(MacroStatus status)
65 {
66 MEDIA_INFO_LOG("TestMacroStatusCallback::OnMacroStatusChanged called %{public}d", status);
67 }
OnMoonCaptureBoostStatusChanged(MoonCaptureBoostStatus status)68 void TestMoonCaptureBoostStatusCallback::OnMoonCaptureBoostStatusChanged(MoonCaptureBoostStatus status)
69 {
70 MEDIA_INFO_LOG("TestMoonCaptureBoostStatusCallback::OnMoonCaptureBoostStatusChanged called %{public}d", status);
71 }
OnFeatureDetectionStatusChanged(SceneFeature feature,FeatureDetectionStatus status)72 void TestFeatureDetectionStatusCallback::OnFeatureDetectionStatusChanged(SceneFeature feature,
73 FeatureDetectionStatus status)
74 {
75 MEDIA_INFO_LOG("TestFeatureDetectionStatusCallback::OnFeatureDetectionStatusChanged called %{public}d %{public}d",
76 feature, status);
77 }
IsFeatureSubscribed(SceneFeature feature)78 bool TestFeatureDetectionStatusCallback::IsFeatureSubscribed(SceneFeature feature)
79 {
80 return true;
81 }
OnSmoothZoom(int32_t duration)82 void TestSmoothZoomCallback::OnSmoothZoom(int32_t duration)
83 {
84 MEDIA_INFO_LOG("TestSmoothZoomCallback::OnSmoothZoom called %{public}d", duration);
85 }
OnResult(const ARStatusInfo & arStatusInfo) const86 void TestARCallback::OnResult(const ARStatusInfo &arStatusInfo) const
87 {
88 MEDIA_INFO_LOG("TestARCallback::OnResult called ");
89 }
OnEffectSuggestionChange(EffectSuggestionType effectSuggestionType)90 void TestEffectSuggestionCallback::OnEffectSuggestionChange(EffectSuggestionType effectSuggestionType)
91 {
92 MEDIA_INFO_LOG("TestEffectSuggestionCallback::OnEffectSuggestionChange called %{public}d", effectSuggestionType);
93 }
OnLcdFlashStatusChanged(LcdFlashStatusInfo lcdFlashStatusInfo)94 void TestLcdFlashStatusCallback::OnLcdFlashStatusChanged(LcdFlashStatusInfo lcdFlashStatusInfo)
95 {
96 MEDIA_INFO_LOG("TestLcdFlashStatusCallback::OnLcdFlashStatusChanged called");
97 }
OnAutoDeviceSwitchStatusChange(bool isDeviceSwitched,bool isDeviceCapabilityChanged) const98 void TestAutoDeviceSwitchCallback::OnAutoDeviceSwitchStatusChange(bool isDeviceSwitched,
99 bool isDeviceCapabilityChanged) const
100 {
101 MEDIA_INFO_LOG("TestAutoDeviceSwitchCallback::OnAutoDeviceSwitchStatusChange called %{public}d %{public}d",
102 isDeviceSwitched, isDeviceCapabilityChanged);
103 }
OnError(int32_t errorCode) const104 void TestMetadataStateCallback::OnError(int32_t errorCode) const
105 {
106 MEDIA_INFO_LOG("TestMetadataStateCallback::OnError called %{public}d", errorCode);
107 }
108
OnThumbnailAvailable(const int32_t captureId,const int64_t timestamp,unique_ptr<Media::PixelMap> pixelMap) const109 void TestThumbnailCallback::OnThumbnailAvailable(
110 const int32_t captureId, const int64_t timestamp, unique_ptr<Media::PixelMap> pixelMap) const
111 {
112 MEDIA_DEBUG_LOG("TestThumbnailCallback::OnThumbnailAvailable is called!");
113 }
114
WAIT(uint32_t duration)115 void WAIT(uint32_t duration)
116 {
117 std::this_thread::sleep_for(std::chrono::milliseconds(duration));
118 }
119
SetUpTestCase(void)120 void CameraBaseFunctionModuleTest::SetUpTestCase(void)
121 {
122 MEDIA_INFO_LOG("SetUpTestCase start.");
123 ASSERT_TRUE(TestToken().GetAllCameraPermission());
124 MEDIA_INFO_LOG("SetUpTestCase end.");
125 }
126
TearDownTestCase(void)127 void CameraBaseFunctionModuleTest::TearDownTestCase(void)
128 {
129 MEDIA_INFO_LOG("TearDownTestCase start.");
130 MEDIA_INFO_LOG("TearDownTestCase end.");
131 }
132
SetUp()133 void CameraBaseFunctionModuleTest::SetUp()
134 {
135 MEDIA_INFO_LOG("SetUp start.");
136 cameraManager_ = CameraManager::GetInstance();
137 ASSERT_NE(cameraManager_, nullptr);
138 cameraManagerForSys_ = CameraManagerForSys::GetInstance();
139 ASSERT_NE(cameraManagerForSys_, nullptr);
140 cameraDevices_ = cameraManager_->GetSupportedCameras();
141 ASSERT_TRUE(!cameraDevices_.empty());
142 cameraInput_ = cameraManager_->CreateCameraInput(cameraDevices_[deviceBackIndex]);
143 ASSERT_NE(cameraInput_, nullptr);
144
145 EXPECT_EQ(cameraInput_->Open(), SUCCESS);
146
147 MEDIA_INFO_LOG("SetUp end.");
148 }
149
TearDown()150 void CameraBaseFunctionModuleTest::TearDown()
151 {
152 MEDIA_INFO_LOG("TearDown start.");
153
154 cameraDevices_.clear();
155 photoProfiles_.clear();
156 previewProfiles_.clear();
157 videoProfiles_.clear();
158 depthProfiles_.clear();
159 metadataObjectTypes_.clear();
160
161 if (cameraInput_) {
162 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
163 cameraInput_ = nullptr;
164 }
165 if (captureSession_) {
166 EXPECT_EQ(captureSession_->Release(), SUCCESS);
167 captureSession_ = nullptr;
168 }
169 if (captureSessionForSys_) {
170 EXPECT_EQ(captureSessionForSys_->Release(), SUCCESS);
171 captureSessionForSys_ = nullptr;
172 }
173
174 MEDIA_INFO_LOG("TearDown end.");
175 }
176
CreateNormalSession()177 void CameraBaseFunctionModuleTest::CreateNormalSession()
178 {
179 captureSession_ = cameraManager_->CreateCaptureSession();
180 ASSERT_NE(captureSession_, nullptr);
181 UpdateCameraOutputCapability(deviceBackIndex);
182 }
183
CreateSystemSession()184 void CameraBaseFunctionModuleTest::CreateSystemSession()
185 {
186 captureSessionForSys_ = cameraManagerForSys_->CreateCaptureSessionForSys(SceneMode::VIDEO);
187 ASSERT_NE(captureSessionForSys_, nullptr);
188 UpdateCameraOutputCapabilityForSys(deviceBackIndex, SceneMode::VIDEO);
189 }
190
UpdateCameraOutputCapability(int32_t index,int32_t modeName)191 void CameraBaseFunctionModuleTest::UpdateCameraOutputCapability(int32_t index, int32_t modeName)
192 {
193 ASSERT_NE(cameraManager_, nullptr);
194 ASSERT_TRUE(!cameraDevices_.empty());
195
196 sptr<CameraOutputCapability> outputCapability_ = cameraManager_->GetSupportedOutputCapability(
197 cameraDevices_[index], modeName);
198 ASSERT_NE(outputCapability_, nullptr);
199
200 previewProfiles_ = outputCapability_->GetPreviewProfiles();
201 ASSERT_TRUE(!previewProfiles_.empty());
202 FilterPreviewProfiles(previewProfiles_);
203 photoProfiles_ = outputCapability_->GetPhotoProfiles();
204 ASSERT_TRUE(!photoProfiles_.empty());
205 videoProfiles_ = outputCapability_->GetVideoProfiles();
206 ASSERT_TRUE(!videoProfiles_.empty());
207 depthProfiles_ = outputCapability_->GetDepthProfiles();
208 metadataObjectTypes_ = outputCapability_->GetSupportedMetadataObjectType();
209
210 for (auto previewProfile : previewProfiles_) {
211 MEDIA_DEBUG_LOG("module test preview profile format:%{public}d, w:%{public}d , h:%{public}d",
212 previewProfile.GetCameraFormat(), previewProfile.GetSize().width, previewProfile.GetSize().height);
213 }
214 for (auto photoProfile : photoProfiles_) {
215 MEDIA_DEBUG_LOG("module test photo profile format:%{public}d, w:%{public}d , h:%{public}d",
216 photoProfile.GetCameraFormat(), photoProfile.GetSize().width, photoProfile.GetSize().height);
217 }
218 for (auto videoProfile : videoProfiles_) {
219 MEDIA_DEBUG_LOG("module test video profile format:%{public}d, w:%{public}d , h:%{public}d",
220 videoProfile.GetCameraFormat(), videoProfile.GetSize().width, videoProfile.GetSize().height);
221 }
222 }
223
224
UpdateCameraOutputCapabilityForSys(int32_t index,int32_t modeName)225 void CameraBaseFunctionModuleTest::UpdateCameraOutputCapabilityForSys(int32_t index, int32_t modeName)
226 {
227 ASSERT_NE(cameraManager_, nullptr);
228 ASSERT_TRUE(!cameraDevices_.empty());
229
230 sptr<CameraOutputCapability> outputCapabilityForsys = cameraManager_->GetSupportedOutputCapability(
231 cameraDevices_[index], SceneMode::VIDEO);
232 ASSERT_NE(outputCapabilityForsys, nullptr);
233
234 previewProfilesForSys_ = outputCapabilityForsys->GetPreviewProfiles();
235 ASSERT_TRUE(!previewProfilesForSys_.empty());
236 FilterPreviewProfiles(previewProfilesForSys_);
237 photoProfilesForSys_ = outputCapabilityForsys->GetPhotoProfiles();
238 ASSERT_TRUE(!photoProfilesForSys_.empty());
239 videoProfilesForSys_ = outputCapabilityForsys->GetVideoProfiles();
240 ASSERT_TRUE(!videoProfilesForSys_.empty());
241
242 for (auto previewProfile : previewProfilesForSys_) {
243 MEDIA_DEBUG_LOG("module test preview profile format:%{public}d, w:%{public}d , h:%{public}d",
244 previewProfile.GetCameraFormat(), previewProfile.GetSize().width, previewProfile.GetSize().height);
245 }
246 for (auto photoProfile : photoProfilesForSys_) {
247 MEDIA_DEBUG_LOG("module test photo profile format:%{public}d, w:%{public}d , h:%{public}d",
248 photoProfile.GetCameraFormat(), photoProfile.GetSize().width, photoProfile.GetSize().height);
249 }
250 for (auto videoProfile : videoProfilesForSys_) {
251 MEDIA_DEBUG_LOG("module test video profile format:%{public}d, w:%{public}d , h:%{public}d",
252 videoProfile.GetCameraFormat(), videoProfile.GetSize().width, videoProfile.GetSize().height);
253 }
254 }
255
FilterPreviewProfiles(std::vector<Profile> & previewProfiles)256 void CameraBaseFunctionModuleTest::FilterPreviewProfiles(std::vector<Profile>& previewProfiles)
257 {
258 std::vector<Profile>::iterator itr = previewProfiles.begin();
259 while (itr != previewProfiles.end()) {
260 Profile profile = *itr;
261 if ((profile.size_.width == PRVIEW_WIDTH_176 && profile.size_.height == PRVIEW_HEIGHT_144) ||
262 (profile.size_.width == PRVIEW_WIDTH_480 && profile.size_.height == PRVIEW_HEIGHT_480) ||
263 (profile.size_.width == PRVIEW_WIDTH_640 && profile.size_.height == PRVIEW_HEIGHT_640) ||
264 (profile.size_.width == PRVIEW_WIDTH_4096 && profile.size_.height == PRVIEW_HEIGHT_3072) ||
265 (profile.size_.width == PRVIEW_WIDTH_4160 && profile.size_.height == PRVIEW_HEIGHT_3120) ||
266 (profile.size_.width == PRVIEW_WIDTH_8192 && profile.size_.height == PRVIEW_HEIGHT_6144)) {
267 MEDIA_DEBUG_LOG("SetUp skip previewProfile width:%{public}d height:%{public}d",
268 profile.size_.width, profile.size_.height);
269 itr = previewProfiles.erase(itr);
270 } else {
271 ++itr;
272 }
273 }
274 }
275
CreatePreviewOutput(Profile & previewProfile)276 sptr<PreviewOutput> CameraBaseFunctionModuleTest::CreatePreviewOutput(Profile &previewProfile)
277 {
278 MEDIA_INFO_LOG("CreatePreviewOutput preview profile format:%{public}d, w:%{public}d , h:%{public}d",
279 previewProfile.GetCameraFormat(), previewProfile.GetSize().width, previewProfile.GetSize().height);
280
281 sptr<IConsumerSurface> previewSurface = IConsumerSurface::Create();
282 sptr<SurfaceListener> listener = new SurfaceListener("Preview", SurfaceType::PREVIEW, previewFd_, previewSurface);
283 previewSurface->RegisterConsumerListener((sptr<IBufferConsumerListener>&)listener);
284 previewSurface->SetUserData(CameraManager::surfaceFormat, std::to_string(previewProfile.GetCameraFormat()));
285 previewSurface->SetDefaultWidthAndHeight(previewProfile.GetSize().width, previewProfile.GetSize().height);
286
287 sptr<IBufferProducer> bp = previewSurface->GetProducer();
288 sptr<Surface> pSurface = Surface::CreateSurfaceAsProducer(bp);
289
290 return cameraManager_->CreatePreviewOutput(previewProfile, pSurface);
291 }
292
CreatePhotoOutput(Profile & photoProfile)293 sptr<PhotoOutput> CameraBaseFunctionModuleTest::CreatePhotoOutput(Profile &photoProfile)
294 {
295 MEDIA_INFO_LOG("CreatePhotoOutput photo profile format:%{public}d, w:%{public}d , h:%{public}d",
296 photoProfile.GetCameraFormat(), photoProfile.GetSize().width, photoProfile.GetSize().height);
297
298 sptr<IConsumerSurface> photoSurface = IConsumerSurface::Create();
299 sptr<IBufferProducer> bp = photoSurface->GetProducer();
300
301 return cameraManager_->CreatePhotoOutput(photoProfile, bp);
302 }
303
CreateVideoOutput(VideoProfile & videoProfile)304 sptr<VideoOutput> CameraBaseFunctionModuleTest::CreateVideoOutput(VideoProfile &videoProfile)
305 {
306 MEDIA_INFO_LOG("CreateVideoOutput video profile format:%{public}d, w:%{public}d , h:%{public}d",
307 videoProfile.GetCameraFormat(), videoProfile.GetSize().width, videoProfile.GetSize().height);
308
309 sptr<IConsumerSurface> videoSurface = IConsumerSurface::Create();
310 sptr<SurfaceListener> listener = new SurfaceListener("Video", SurfaceType::VIDEO, videoFd_, videoSurface);
311 videoSurface->RegisterConsumerListener((sptr<IBufferConsumerListener>&)listener);
312 videoSurface->SetUserData(CameraManager::surfaceFormat, std::to_string(videoProfile.GetCameraFormat()));
313 videoSurface->SetDefaultWidthAndHeight(videoProfile.GetSize().width, videoProfile.GetSize().height);
314
315 sptr<IBufferProducer> bp = videoSurface->GetProducer();
316 sptr<Surface> pSurface = Surface::CreateSurfaceAsProducer(bp);
317
318 return cameraManager_->CreateVideoOutput(videoProfile, pSurface);
319 }
320
CreateAndConfigureDefaultCaptureOutput(sptr<PhotoOutput> & photoOutput,sptr<VideoOutput> & videoOutput)321 void CameraBaseFunctionModuleTest::CreateAndConfigureDefaultCaptureOutput(sptr<PhotoOutput> &photoOutput,
322 sptr<VideoOutput> &videoOutput)
323 {
324 ASSERT_NE(captureSession_, nullptr);
325
326 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
327 ASSERT_NE(previewOutput, nullptr);
328 photoOutput = CreatePhotoOutput(photoProfiles_[0]);
329 ASSERT_NE(photoOutput, nullptr);
330 for (auto profile : videoProfiles_) {
331 if (profile.framerates_.size() >= VEDIO_FRAMERATES_SIZE && profile.framerates_[0] != VEDIO_FRAMERATES_120
332 && profile.framerates_[1] != VEDIO_FRAMERATES_120 && profile.framerates_[0] != VEDIO_FRAMERATES_240
333 && profile.framerates_[1] != VEDIO_FRAMERATES_240) {
334 videoOutput = CreateVideoOutput(profile);
335 break;
336 }
337 }
338 ASSERT_NE(videoOutput, nullptr);
339
340 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
341 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
342 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
343 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
344 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
345 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
346 }
347
CreateAndConfigureDefaultCaptureOutputForSys(sptr<PhotoOutput> & photoOutput,sptr<VideoOutput> & videoOutput)348 void CameraBaseFunctionModuleTest::CreateAndConfigureDefaultCaptureOutputForSys(sptr<PhotoOutput> &photoOutput,
349 sptr<VideoOutput> &videoOutput)
350 {
351 ASSERT_NE(captureSessionForSys_, nullptr);
352
353 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfilesForSys_[0]);
354 ASSERT_NE(previewOutput, nullptr);
355 photoOutput = CreatePhotoOutput(photoProfilesForSys_[0]);
356 ASSERT_NE(photoOutput, nullptr);
357 for (auto profile : videoProfilesForSys_) {
358 if (profile.framerates_.size() >= VEDIO_FRAMERATES_SIZE && profile.framerates_[0] != VEDIO_FRAMERATES_120
359 && profile.framerates_[1] != VEDIO_FRAMERATES_120 && profile.framerates_[0] != VEDIO_FRAMERATES_240
360 && profile.framerates_[1] != VEDIO_FRAMERATES_240) {
361 videoOutput = CreateVideoOutput(profile);
362 break;
363 }
364 }
365 ASSERT_NE(videoOutput, nullptr);
366
367 EXPECT_EQ(captureSessionForSys_->BeginConfig(), SUCCESS);
368 EXPECT_EQ(captureSessionForSys_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
369 EXPECT_EQ(captureSessionForSys_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
370 EXPECT_EQ(captureSessionForSys_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
371 EXPECT_EQ(captureSessionForSys_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
372 EXPECT_EQ(captureSessionForSys_->CommitConfig(), SUCCESS);
373 }
374
CreateAndConfigureDefaultCaptureOutput(sptr<PhotoOutput> & photoOutput)375 void CameraBaseFunctionModuleTest::CreateAndConfigureDefaultCaptureOutput(sptr<PhotoOutput> &photoOutput)
376 {
377 ASSERT_NE(captureSession_, nullptr);
378
379 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
380 ASSERT_NE(previewOutput, nullptr);
381 photoOutput = CreatePhotoOutput(photoProfiles_[0]);
382 ASSERT_NE(photoOutput, nullptr);
383
384 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
385 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
386 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
387 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
388 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
389 }
390
StartDefaultCaptureOutput(sptr<PhotoOutput> photoOutput,sptr<VideoOutput> videoOutput)391 void CameraBaseFunctionModuleTest::StartDefaultCaptureOutput(sptr<PhotoOutput> photoOutput,
392 sptr<VideoOutput> videoOutput)
393 {
394 ASSERT_NE(captureSession_, nullptr);
395 ASSERT_NE(photoOutput, nullptr);
396 ASSERT_NE(videoOutput, nullptr);
397
398 EXPECT_EQ(captureSession_->Start(), SUCCESS);
399 WAIT(DURATION_AFTER_SESSION_START);
400 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
401 WAIT(DURATION_AFTER_CAPTURE);
402 EXPECT_EQ(videoOutput->Start(), SUCCESS);
403 WAIT(DURATION_DURING_RECORDING);
404 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
405 WAIT(DURATION_AFTER_RECORDING);
406 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
407 }
408
StartDefaultCaptureOutputForSys(sptr<PhotoOutput> photoOutput,sptr<VideoOutput> videoOutput)409 void CameraBaseFunctionModuleTest::StartDefaultCaptureOutputForSys(sptr<PhotoOutput> photoOutput,
410 sptr<VideoOutput> videoOutput)
411 {
412 ASSERT_NE(captureSessionForSys_, nullptr);
413 ASSERT_NE(photoOutput, nullptr);
414 ASSERT_NE(videoOutput, nullptr);
415
416 EXPECT_EQ(captureSessionForSys_->Start(), SUCCESS);
417 WAIT(DURATION_AFTER_SESSION_START);
418 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
419 WAIT(DURATION_AFTER_CAPTURE);
420 EXPECT_EQ(videoOutput->Start(), SUCCESS);
421 WAIT(DURATION_DURING_RECORDING);
422 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
423 WAIT(DURATION_AFTER_RECORDING);
424 EXPECT_EQ(captureSessionForSys_->Stop(), SUCCESS);
425 }
426
StartDefaultCaptureOutput(sptr<PhotoOutput> photoOutput)427 void CameraBaseFunctionModuleTest::StartDefaultCaptureOutput(sptr<PhotoOutput> photoOutput)
428 {
429 ASSERT_NE(captureSession_, nullptr);
430 ASSERT_NE(photoOutput, nullptr);
431
432 EXPECT_EQ(captureSession_->Start(), SUCCESS);
433 WAIT(DURATION_AFTER_SESSION_START);
434 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
435 WAIT(DURATION_AFTER_CAPTURE);
436 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
437 }
438
439 /*
440 * Feature: Camera base function
441 * Function: Test the camera's ability to take multiple photos.
442 * SubFunction: NA
443 * FunctionPoints: NA
444 * EnvConditions: NA
445 * CaseDescription: Test the captureSession by adding previewOutput and photoOutput.
446 * PreviewOutput and photoOutput can be added normally, and the function of taking multiple photos is normal.
447 */
448 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_001, TestSize.Level0)
449 {
450 CreateNormalSession();
451 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
452 ASSERT_NE(previewOutput, nullptr);
453 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
454 ASSERT_NE(photoOutput, nullptr);
455
456 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
457 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
458 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
459 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
460 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
461
462 EXPECT_EQ(captureSession_->Start(), SUCCESS);
463 WAIT(DURATION_AFTER_SESSION_START);
464
465 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
466 WAIT(DURATION_AFTER_CAPTURE);
467 EXPECT_EQ(photoOutput->CancelCapture(), SUCCESS);
468
469 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
470 }
471
472 /*
473 * Feature: Camera base function
474 * Function: Test the camera's ability to record multiple times.
475 * SubFunction: NA
476 * FunctionPoints: NA
477 * EnvConditions: NA
478 * CaseDescription: Test the captureSession by adding previewOutput and videoOutput.
479 * PreviewOutput and videoOutput can be added normally, and the multiple recording function is normal.
480 */
481 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_002, TestSize.Level0)
482 {
483 CreateNormalSession();
484 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
485 ASSERT_NE(previewOutput, nullptr);
486 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
487 ASSERT_NE(videoOutput, nullptr);
488
489 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
490 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
491 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
492 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
493 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
494
495 EXPECT_EQ(captureSession_->Start(), SUCCESS);
496 WAIT(DURATION_AFTER_SESSION_START);
497
498 EXPECT_EQ(videoOutput->Start(), SUCCESS);
499 WAIT(DURATION_DURING_RECORDING);
500 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
501 WAIT(DURATION_AFTER_RECORDING);
502
503 EXPECT_EQ(videoOutput->Start(), SUCCESS);
504 WAIT(DURATION_DURING_RECORDING);
505 EXPECT_EQ(videoOutput->Pause(), SUCCESS);
506 EXPECT_EQ(videoOutput->Resume(), SUCCESS);
507 WAIT(DURATION_DURING_RECORDING);
508 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
509 WAIT(DURATION_AFTER_RECORDING);
510
511 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
512 }
513
514 /*
515 * Feature: Camera base function
516 * Function: Test the camera's ability to switch cameras when taking photos.
517 * SubFunction: NA
518 * FunctionPoints: NA
519 * EnvConditions: NA
520 * CaseDescription: Test captureSession by adding two different cameraInputs,
521 * both cameraInputs can be added normally, and taking photos is normal before and after switching cameras.
522 */
523 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_003, TestSize.Level0)
524 {
525 CreateNormalSession();
526 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
527 ASSERT_NE(previewOutput, nullptr);
528 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
529 ASSERT_NE(photoOutput, nullptr);
530
531 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
532 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
533 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
534 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
535 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
536
537 EXPECT_EQ(captureSession_->Start(), SUCCESS);
538 WAIT(DURATION_AFTER_SESSION_START);
539 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
540 WAIT(DURATION_AFTER_CAPTURE);
541 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
542
543 if (cameraDevices_.size() <= 1) {
544 MEDIA_ERR_LOG("The current device only has a camera and cannot switch cameras");
545 GTEST_SKIP();
546 }
547 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
548 EXPECT_EQ(captureSession_->RemoveInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
549 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
550 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
551 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
552 cameraInput_ = nullptr;
553 WAIT(DURATION_AFTER_DEVICE_CLOSE);
554
555 sptr<CameraInput> otherCameraInput = cameraManager_->CreateCameraInput(cameraDevices_[deviceFrontIndex]);
556 ASSERT_NE(otherCameraInput, nullptr);
557 EXPECT_EQ(otherCameraInput->Open(), SUCCESS);
558 UpdateCameraOutputCapability(deviceFrontIndex);
559
560 sptr<PreviewOutput> otherPreviewOutput = CreatePreviewOutput(previewProfiles_[0]);
561 ASSERT_NE(otherPreviewOutput, nullptr);
562 sptr<PhotoOutput> otherPhotoOutput = CreatePhotoOutput(photoProfiles_[0]);
563 ASSERT_NE(otherPhotoOutput, nullptr);
564 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)otherCameraInput), SUCCESS);
565 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)otherPreviewOutput), SUCCESS);
566 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)otherPhotoOutput), SUCCESS);
567 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
568
569 EXPECT_EQ(captureSession_->Start(), SUCCESS);
570 WAIT(DURATION_AFTER_SESSION_START);
571 EXPECT_EQ(otherPhotoOutput->Capture(), SUCCESS);
572 WAIT(DURATION_AFTER_CAPTURE);
573 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
574
575 EXPECT_EQ(otherCameraInput->Release(), SUCCESS);
576 WAIT(DURATION_AFTER_DEVICE_CLOSE);
577 }
578
579 /*
580 * Feature: Camera base function
581 * Function: Test the camera's ability to switch cameras when video recording.
582 * SubFunction: NA
583 * FunctionPoints: NA
584 * EnvConditions: NA
585 * CaseDescription: Test captureSession by adding two different cameraInputs,
586 * both cameraInputs can be added normally, and video recording is normal before and after switching cameras.
587 */
588 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_004, TestSize.Level0)
589 {
590 CreateNormalSession();
591 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
592 ASSERT_NE(previewOutput, nullptr);
593 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
594 ASSERT_NE(videoOutput, nullptr);
595
596 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
597 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
598 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
599 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
600 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
601
602 EXPECT_EQ(captureSession_->Start(), SUCCESS);
603 WAIT(DURATION_AFTER_SESSION_START);
604 EXPECT_EQ(videoOutput->Start(), SUCCESS);
605 WAIT(DURATION_DURING_RECORDING);
606 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
607 WAIT(DURATION_AFTER_RECORDING);
608 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
609
610 if (cameraDevices_.size() <= 1) {
611 MEDIA_ERR_LOG("The current device only has a camera and cannot switch cameras");
612 GTEST_SKIP();
613 }
614 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
615 EXPECT_EQ(captureSession_->RemoveInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
616 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
617 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
618 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
619 cameraInput_ = nullptr;
620 WAIT(DURATION_AFTER_DEVICE_CLOSE);
621
622 sptr<CameraInput> otherCameraInput = cameraManager_->CreateCameraInput(cameraDevices_[deviceFrontIndex]);
623 ASSERT_NE(otherCameraInput, nullptr);
624 EXPECT_EQ(otherCameraInput->Open(), SUCCESS);
625 UpdateCameraOutputCapability(deviceFrontIndex);
626
627 sptr<PreviewOutput> otherPreviewOutput = CreatePreviewOutput(previewProfiles_[0]);
628 ASSERT_NE(otherPreviewOutput, nullptr);
629 sptr<VideoOutput> otherVideoOutput = CreateVideoOutput(videoProfiles_[0]);
630 ASSERT_NE(otherVideoOutput, nullptr);
631 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)otherCameraInput), SUCCESS);
632 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)otherPreviewOutput), SUCCESS);
633 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)otherVideoOutput), SUCCESS);
634 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
635
636 EXPECT_EQ(captureSession_->Start(), SUCCESS);
637 WAIT(DURATION_AFTER_SESSION_START);
638 EXPECT_EQ(otherVideoOutput->Start(), SUCCESS);
639 WAIT(DURATION_DURING_RECORDING);
640 EXPECT_EQ(otherVideoOutput->Stop(), SUCCESS);
641 WAIT(DURATION_AFTER_RECORDING);
642 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
643
644 EXPECT_EQ(otherCameraInput->Release(), SUCCESS);
645 WAIT(DURATION_AFTER_DEVICE_CLOSE);
646 }
647
648 /*
649 * Feature: Camera base function
650 * Function: Test the camera to switch from taking photos to recording.
651 * SubFunction: NA
652 * FunctionPoints: NA
653 * EnvConditions: NA
654 * CaseDescription: To test captureSession, first add cameraInput, preivewOutput and photoOutput for taking photos,
655 * then remove photoOutput and add videoOutput for recording. The flow distribution is normal, and both photography
656 * and recording are normal.
657 */
658 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_005, TestSize.Level0)
659 {
660 CreateNormalSession();
661 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
662 ASSERT_NE(previewOutput, nullptr);
663 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
664 ASSERT_NE(photoOutput, nullptr);
665 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
666 ASSERT_NE(videoOutput, nullptr);
667
668 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
669 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
670 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
671 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
672 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
673 EXPECT_EQ(captureSession_->Start(), SUCCESS);
674 WAIT(DURATION_AFTER_SESSION_START);
675 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
676 WAIT(DURATION_AFTER_CAPTURE);
677 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
678
679 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
680 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
681 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
682 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
683 EXPECT_EQ(captureSession_->Start(), SUCCESS);
684 WAIT(DURATION_AFTER_SESSION_START);
685 EXPECT_EQ(videoOutput->Start(), SUCCESS);
686 WAIT(DURATION_DURING_RECORDING);
687 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
688 WAIT(DURATION_AFTER_RECORDING);
689 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
690 }
691
692 /*
693 * Feature: Camera base function
694 * Function: Test the camera to switch from recording to taking photos.
695 * SubFunction: NA
696 * FunctionPoints: NA
697 * EnvConditions: NA
698 * CaseDescription: To test captureSession, first add cameraInput, preivewOutput, and videoOutput for recording,
699 * then remove videoOutput and add photoOutput for taking photos. The flow distribution is normal, and both recording
700 * and taking photos are normal.
701 */
702 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_006, TestSize.Level1)
703 {
704 CreateNormalSession();
705 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
706 ASSERT_NE(previewOutput, nullptr);
707 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
708 ASSERT_NE(photoOutput, nullptr);
709 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
710 ASSERT_NE(videoOutput, nullptr);
711
712 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
713 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
714 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
715 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
716 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
717 EXPECT_EQ(captureSession_->Start(), SUCCESS);
718 WAIT(DURATION_AFTER_SESSION_START);
719 EXPECT_EQ(videoOutput->Start(), SUCCESS);
720 WAIT(DURATION_DURING_RECORDING);
721 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
722 WAIT(DURATION_AFTER_RECORDING);
723 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
724
725 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
726 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
727 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
728 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
729 EXPECT_EQ(captureSession_->Start(), SUCCESS);
730 WAIT(DURATION_AFTER_SESSION_START);
731 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
732 WAIT(DURATION_AFTER_CAPTURE);
733 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
734 }
735
736 /*
737 * Feature: Camera base function
738 * Function: Test the camera's flow distribution in different session states.
739 * SubFunction: NA
740 * FunctionPoints: NA
741 * EnvConditions: NA
742 * CaseDescription: Test captureSession adding captureOutput is successful when session state is In-progress,
743 * and adding captureOutput fail when session state is Init or Committed.
744 */
745 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_007, TestSize.Level1)
746 {
747 CreateNormalSession();
748 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
749 ASSERT_NE(previewOutput, nullptr);
750
751 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), OPERATION_NOT_ALLOWED);
752 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), OPERATION_NOT_ALLOWED);
753
754 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
755 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
756 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
757 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
758
759 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), OPERATION_NOT_ALLOWED);
760 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), OPERATION_NOT_ALLOWED);
761
762 EXPECT_EQ(captureSession_->Start(), SUCCESS);
763 WAIT(DURATION_AFTER_SESSION_START);
764 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
765 }
766
767 /*
768 * Feature: Camera base function
769 * Function: Test the camera's flow distribution without input.
770 * SubFunction: NA
771 * FunctionPoints: NA
772 * EnvConditions: NA
773 * CaseDescription: Testing captureSession only adds previewOutput without adding cameraInput,
774 * and the session fails when committing config.
775 */
776 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_008, TestSize.Level1)
777 {
778 CreateNormalSession();
779 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
780 ASSERT_NE(previewOutput, nullptr);
781
782 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
783 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SERVICE_FATL_ERROR);
784 EXPECT_EQ(captureSession_->CommitConfig(), SERVICE_FATL_ERROR);
785
786 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
787 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
788 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
789
790 EXPECT_EQ(captureSession_->Start(), SUCCESS);
791 WAIT(DURATION_AFTER_SESSION_START);
792 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
793 }
794
795 /*
796 * Feature: Camera base function
797 * Function: Test the camera's flow distribution without output.
798 * SubFunction: NA
799 * FunctionPoints: NA
800 * EnvConditions: NA
801 * CaseDescription: Testing captureSession only adds cameraInput without adding captureOutput,
802 * and the session fails when committing config.
803 */
804 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_009, TestSize.Level1)
805 {
806 CreateNormalSession();
807 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
808 ASSERT_NE(previewOutput, nullptr);
809
810 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
811 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
812 EXPECT_EQ(captureSession_->CommitConfig(), SERVICE_FATL_ERROR);
813
814 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
815 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
816
817 EXPECT_EQ(captureSession_->Start(), SUCCESS);
818 WAIT(DURATION_AFTER_SESSION_START);
819 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
820 }
821
822 /*
823 * Feature: Camera base function
824 * Function: Test the camera's flow distribution with multiple preview output streams.
825 * SubFunction: NA
826 * FunctionPoints: NA
827 * EnvConditions: NA
828 * CaseDescription: Test the captureSession and add two previewoutputs. Both previewoutputs can be added normally,
829 * and the camera preview is normal when two preview streams are enabled.
830 */
831 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_010, TestSize.Level1)
832 {
833 CreateNormalSession();
834 sptr<PreviewOutput> previewOutput1 = CreatePreviewOutput(previewProfiles_[0]);
835 ASSERT_NE(previewOutput1, nullptr);
836 sptr<PreviewOutput> previewOutput2 = CreatePreviewOutput(previewProfiles_[0]);
837 ASSERT_NE(previewOutput2, nullptr);
838
839 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
840 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
841 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput1), SUCCESS);
842 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput2), SUCCESS);
843 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
844
845 EXPECT_EQ(previewOutput1->Start(), SUCCESS);
846 WAIT(DURATION_AFTER_SESSION_START);
847 EXPECT_EQ(previewOutput1->Stop(), SUCCESS);
848
849 EXPECT_EQ(previewOutput2->Start(), SUCCESS);
850 WAIT(DURATION_AFTER_SESSION_START);
851 EXPECT_EQ(previewOutput2->Stop(), SUCCESS);
852 }
853
854 /*
855 * Feature: Camera base function
856 * Function: Test the camera's flow distribution with multiple photo output streams.
857 * SubFunction: NA
858 * FunctionPoints: NA
859 * EnvConditions: NA
860 * CaseDescription: Test the captureSession by adding previewOutput and two photoOutput streams.
861 * Service fatl error during session commit config.
862 */
863 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_011, TestSize.Level1)
864 {
865 CreateNormalSession();
866 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
867 ASSERT_NE(previewOutput, nullptr);
868 sptr<PhotoOutput> photoOutput1 = CreatePhotoOutput(photoProfiles_[0]);
869 ASSERT_NE(photoOutput1, nullptr);
870 sptr<PhotoOutput> photoOutput2 = CreatePhotoOutput(photoProfiles_[0]);
871 ASSERT_NE(photoOutput2, nullptr);
872
873 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
874 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
875 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
876 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput1), SUCCESS);
877 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput2), SUCCESS);
878
879 captureSession_->CommitConfig();
880 captureSession_->Start();
881 WAIT(DURATION_AFTER_SESSION_START);
882 photoOutput1->Capture();
883 WAIT(DURATION_AFTER_CAPTURE);
884 photoOutput2->Capture();
885 WAIT(DURATION_AFTER_CAPTURE);
886 captureSession_->Stop();
887 }
888
889 /*
890 * Feature: Camera base function
891 * Function: Test the camera's flow distribution with multiple video output streams.
892 * SubFunction: NA
893 * FunctionPoints: NA
894 * EnvConditions: NA
895 * CaseDescription: Test the captureSession by adding previewOutput and two videoOutput streams.
896 * Service fatl error during session commit config.
897 */
898 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_012, TestSize.Level1)
899 {
900 CreateNormalSession();
901 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
902 ASSERT_NE(previewOutput, nullptr);
903 sptr<VideoOutput> videoOutput1 = CreateVideoOutput(videoProfiles_[0]);
904 ASSERT_NE(videoOutput1, nullptr);
905 sptr<VideoOutput> videoOutput2 = CreateVideoOutput(videoProfiles_[0]);
906 ASSERT_NE(videoOutput2, nullptr);
907
908 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
909 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
910 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
911 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput1), SUCCESS);
912 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput2), SUCCESS);
913
914 captureSession_->CommitConfig();
915 captureSession_->Start();
916 WAIT(DURATION_AFTER_SESSION_START);
917 videoOutput1->Start();
918 WAIT(DURATION_DURING_RECORDING);
919 videoOutput1->Stop();
920 videoOutput2->Start();
921 WAIT(DURATION_DURING_RECORDING);
922 videoOutput2->Stop();
923 captureSession_->Stop();
924 }
925
926 /*
927 * Feature: Camera base function
928 * Function: Test the camera config metadata flow with stream start and stop is normal.
929 * SubFunction: NA
930 * FunctionPoints: NA
931 * EnvConditions: NA
932 * CaseDescription: Test the captureSession by adding metadata output streams. Metadata output stream
933 * starts and stops normally.
934 */
935 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_013, TestSize.Level0)
936 {
937 CreateNormalSession();
938 std::set<camera_face_detect_mode_t> metadataObjectTypes;
939 captureSession_->SetCaptureMetadataObjectTypes(metadataObjectTypes);
940
941 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
942 ASSERT_NE(previewOutput, nullptr);
943 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
944 ASSERT_NE(photoOutput, nullptr);
945 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
946 ASSERT_NE(videoOutput, nullptr);
947 sptr<MetadataOutput> metadataOutput = cameraManager_->CreateMetadataOutput();
948 ASSERT_NE(metadataOutput, nullptr);
949
950 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
951 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
952 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
953 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
954 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
955 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)metadataOutput), SUCCESS);
956 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
957
958 EXPECT_EQ(captureSession_->Start(), SUCCESS);
959 WAIT(DURATION_AFTER_SESSION_START);
960 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
961 }
962
963 /*
964 * Feature: Camera base function
965 * Function: Test the camera config metadata flow with query metadadta object type is normal.
966 * SubFunction: NA
967 * FunctionPoints: NA
968 * EnvConditions: NA
969 * CaseDescription: Test the captureSession by adding metadata output streams. Metadata output stream
970 * set callback and get metadata object types normally.
971 */
972 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_014, TestSize.Level0)
973 {
974 CreateNormalSession();
975 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
976 ASSERT_NE(previewOutput, nullptr);
977 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
978 ASSERT_NE(photoOutput, nullptr);
979 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
980 ASSERT_NE(videoOutput, nullptr);
981 sptr<MetadataOutput> metadataOutput = cameraManager_->CreateMetadataOutput();
982 ASSERT_NE(metadataOutput, nullptr);
983
984 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
985 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
986 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
987 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
988 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
989 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)metadataOutput), SUCCESS);
990 auto stateCallback = std::make_shared<TestMetadataStateCallback>();
991 ASSERT_NE(stateCallback, nullptr);
992 metadataOutput->SetCallback(stateCallback);
993 EXPECT_NE(metadataOutput->GetAppStateCallback(), nullptr);
994 auto objectCallback = std::make_shared<TestMetadataOutputObjectCallback>("");
995 ASSERT_NE(objectCallback, nullptr);
996 metadataOutput->SetCallback(objectCallback);
997 EXPECT_NE(metadataOutput->GetAppObjectCallback(), nullptr);
998 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
999
1000 std::vector<MetadataObjectType> objectTypes = metadataOutput->GetSupportedMetadataObjectTypes();
1001 if (!objectTypes.empty()) {
1002 metadataOutput->SetCapturingMetadataObjectTypes(objectTypes);
1003
1004 objectTypes.clear();
1005 objectTypes.push_back(MetadataObjectType::HUMAN_BODY);
1006 EXPECT_EQ(metadataOutput->AddMetadataObjectTypes(objectTypes), INVALID_ARGUMENT);
1007 EXPECT_EQ(metadataOutput->RemoveMetadataObjectTypes(objectTypes), INVALID_ARGUMENT);
1008 }
1009 EXPECT_EQ(captureSession_->Start(), SUCCESS);
1010 WAIT(DURATION_AFTER_SESSION_START);
1011 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
1012 }
1013
1014 /* *****cameraManager***** */
1015 /*
1016 * Feature: Camera base function
1017 * Function: Test the camera status change callback.
1018 * SubFunction: NA
1019 * FunctionPoints: NA
1020 * EnvConditions: NA
1021 * CaseDescription: Test the CameraMnager camera status callback function, register CameraMnagerCallback,
1022 * and print CameraStatus information correctly when the camera is turned on or off.
1023 */
1024 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_015, TestSize.Level1)
1025 {
1026 std::shared_ptr<TestCameraMngerCallback> callback = std::make_shared<TestCameraMngerCallback>("");
1027 ASSERT_NE(callback, nullptr);
1028 cameraManager_->SetCallback(callback);
1029 ASSERT_GT(cameraManager_->GetCameraStatusListenerManager()->GetListenerCount(), 0);
1030 }
1031
1032 /*
1033 * Feature: Camera base function
1034 * Function: Test the camera mute function.
1035 * SubFunction: NA
1036 * FunctionPoints: NA
1037 * EnvConditions: NA
1038 * CaseDescription: Test the camera manager mute function, check if the device supports mute, register
1039 * the mute status callback and set the mute status when supported, the camera can be muted normally.
1040 */
1041 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_016, TestSize.Level1)
1042 {
1043 cameraManager_->ClearCameraDeviceListCache();
1044 if (cameraManager_->IsCameraMuteSupported()) {
1045 MEDIA_INFO_LOG("The camera mute function is supported");
1046
1047 std::shared_ptr<TestCameraMuteListener> listener = std::make_shared<TestCameraMuteListener>();
1048 ASSERT_NE(listener, nullptr);
1049 cameraManager_->RegisterCameraMuteListener(listener);
1050 ASSERT_GT(cameraManager_->GetCameraMuteListenerManager()->GetListenerCount(), 0);
1051
1052 cameraManager_->MuteCamera(!(cameraManager_->IsCameraMuted()));
1053 } else {
1054 MEDIA_ERR_LOG("The camera mute function is not supported");
1055 }
1056 }
1057
1058 /*
1059 * Feature: Camera base function
1060 * Function: Test the camera prelaunch function.
1061 * SubFunction: NA
1062 * FunctionPoints: NA
1063 * EnvConditions: NA
1064 * CaseDescription: Test the camera manager prelaunch function, check if the device supports prelaunch,
1065 * prelaunch the camera by cameraId and set configuration items when supported, the camera prelaunch abnormally for
1066 * opening device.
1067 */
1068 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_017, TestSize.Level0)
1069 {
1070 if (cameraManager_->IsPrelaunchSupported(cameraInput_->GetCameraDeviceInfo())) {
1071 MEDIA_INFO_LOG("The camera prelaunch function is supported");
1072
1073 std::string cameraId = cameraInput_->GetCameraId();
1074 ASSERT_NE(cameraId, "");
1075 int activeTime = 0;
1076 EffectParam effectParam = {0, 0, 0};
1077 EXPECT_EQ(cameraManager_->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::PERSISTENT_DEFAULT_PARAM_OHOS,
1078 activeTime, effectParam), SUCCESS);
1079 EXPECT_EQ(cameraManager_->PrelaunchCamera(0), SERVICE_FATL_ERROR);
1080 EXPECT_EQ(cameraManager_->PreSwitchCamera(cameraId), SUCCESS);
1081
1082 activeTime = 15;
1083 effectParam = {5, 0, 0};
1084 EXPECT_EQ(cameraManager_->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::NO_NEED_RESTORE_PARAM_OHOS,
1085 activeTime, effectParam), SUCCESS);
1086
1087 cameraId = "";
1088 activeTime = 15;
1089 effectParam = {0, 0, 0};
1090 EXPECT_EQ(cameraManager_->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::TRANSIENT_ACTIVE_PARAM_OHOS,
1091 activeTime, effectParam), SERVICE_FATL_ERROR);
1092 } else {
1093 MEDIA_ERR_LOG("The camera prelaunch function is not supported");
1094 }
1095 }
1096
1097 /*
1098 * Feature: Camera base function
1099 * Function: Test the camera torch function.
1100 * SubFunction: NA
1101 * FunctionPoints: NA
1102 * EnvConditions: NA
1103 * CaseDescription: Test the camera manager torch function, check if the device supports torch,
1104 * register the torch status callback and switch the torch mode when supported, and the torch can
1105 * be turned on and off normally.
1106 */
1107 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_018, TestSize.Level0)
1108 {
1109 if (cameraManager_->IsTorchSupported()) {
1110 MEDIA_INFO_LOG("moduletest the camera torch function is supported");
1111
1112 std::shared_ptr<TestTorchListener> listener = std::make_shared<TestTorchListener>();
1113 ASSERT_NE(listener, nullptr);
1114 cameraManager_->RegisterTorchListener(listener);
1115 ASSERT_GT(cameraManager_->GetTorchServiceListenerManager()->GetListenerCount(), 0);
1116
1117 ASSERT_TRUE(cameraManager_->IsTorchModeSupported(TorchMode::TORCH_MODE_OFF));
1118 ASSERT_TRUE(cameraManager_->IsTorchModeSupported(TorchMode::TORCH_MODE_ON));
1119 ASSERT_TRUE(!(cameraManager_->IsTorchModeSupported(TorchMode::TORCH_MODE_AUTO)));
1120
1121 TorchMode currentTorchMode = cameraManager_->GetTorchMode();
1122 sptr<CameraDevice> device = cameraDevices_[deviceBackIndex];
1123 ASSERT_NE(device, nullptr);
1124 if (device->GetPosition() == CAMERA_POSITION_BACK) {
1125 EXPECT_EQ(cameraManager_->SetTorchMode(TorchMode::TORCH_MODE_ON), OPERATION_NOT_ALLOWED);
1126 EXPECT_EQ(cameraManager_->SetTorchMode(TorchMode::TORCH_MODE_OFF), OPERATION_NOT_ALLOWED);
1127 EXPECT_EQ(cameraManager_->GetTorchMode(), currentTorchMode);
1128 } else if (device->GetPosition() == CAMERA_POSITION_FRONT) {
1129 EXPECT_EQ(cameraManager_->SetTorchMode(TorchMode::TORCH_MODE_ON), SUCCESS);
1130 EXPECT_EQ(cameraManager_->GetTorchMode(), TorchMode::TORCH_MODE_ON);
1131 EXPECT_EQ(cameraManager_->SetTorchMode(TorchMode::TORCH_MODE_OFF), SUCCESS);
1132 EXPECT_EQ(cameraManager_->GetTorchMode(), TorchMode::TORCH_MODE_OFF);
1133 }
1134 } else {
1135 MEDIA_ERR_LOG("moduletest the camera torch function is not supported");
1136 }
1137 }
1138
1139 /*
1140 * Feature: Camera base function
1141 * Function: Test the camera folding state.
1142 * SubFunction: NA
1143 * FunctionPoints: NA
1144 * EnvConditions: NA
1145 * CaseDescription: Test the folding status of camera manager and check if the camera supports folding
1146 * and folding status.
1147 */
1148 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_019, TestSize.Level0)
1149 {
1150 sptr<CameraDevice> device = cameraInput_->GetCameraDeviceInfo();
1151 ASSERT_NE(device, nullptr);
1152 CameraFoldScreenType foldScreenType = device->GetCameraFoldScreenType();
1153 MEDIA_INFO_LOG("moduletest device get camera fold screen type: %{public}d", foldScreenType);
1154 uint32_t supportFoldStatus = device->GetSupportedFoldStatus();
1155 MEDIA_INFO_LOG("moduletest device get supported fold status: %{public}d", supportFoldStatus);
1156
1157 bool isFoldable = cameraManager_->GetIsFoldable();
1158 MEDIA_INFO_LOG("moduletest camera manager get isFoldable: %{public}d", isFoldable);
1159 FoldStatus foldStatus = cameraManager_->GetFoldStatus();
1160 MEDIA_INFO_LOG("moduletest camera manager get fold status: %{public}d", foldStatus);
1161 std::shared_ptr<TestFoldListener> listener = std::make_shared<TestFoldListener>();
1162 ASSERT_NE(listener, nullptr);
1163 cameraManager_->RegisterFoldListener(listener);
1164 ASSERT_GT(cameraManager_->GetFoldStatusListenerManager()->GetListenerCount(), 0);
1165 }
1166
1167 /* *****captureSession***** */
1168 /*
1169 * Feature: Camera base function
1170 * Function: Test the capture session with session call back.
1171 * SubFunction: NA
1172 * FunctionPoints: NA
1173 * EnvConditions: NA
1174 * CaseDescription: Test the captureSession add session callback. The callback function is set and
1175 * queried normally, and OnError is called when an error occurs during the session callback process.
1176 */
1177 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_020, TestSize.Level0)
1178 {
1179 CreateNormalSession();
1180 sptr<PhotoOutput> photoOutput;
1181 sptr<VideoOutput> videoOutput;
1182 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1183
1184 std::shared_ptr<TestSessionCallback> callback = std::make_shared<TestSessionCallback>();
1185 ASSERT_NE(callback, nullptr);
1186 captureSession_->SetCallback(callback);
1187 EXPECT_NE(captureSession_->GetApplicationCallback(), nullptr);
1188
1189 StartDefaultCaptureOutput(photoOutput, videoOutput);
1190 }
1191
1192 /*
1193 * Feature: Camera base function
1194 * Function: Test the capture session with exposure modes.
1195 * SubFunction: NA
1196 * FunctionPoints: NA
1197 * EnvConditions: NA
1198 * CaseDescription: Test captureSession check the exposure modes supported by the device and set and
1199 * query the exposure modes after completing the default allocation. Ensure that the camera function
1200 * is normal after the settings are completed.
1201 */
1202 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_021, TestSize.Level0)
1203 {
1204 CreateNormalSession();
1205 ExposureMode exposureMode = EXPOSURE_MODE_UNSUPPORTED;
1206 EXPECT_EQ(captureSession_->GetExposureMode(), EXPOSURE_MODE_UNSUPPORTED);
1207 EXPECT_EQ(captureSession_->GetExposureMode(exposureMode), SESSION_NOT_CONFIG);
1208 EXPECT_EQ(captureSession_->SetExposureMode(exposureMode), SESSION_NOT_CONFIG);
1209 EXPECT_EQ(captureSession_->IsExposureModeSupported(exposureMode), false);
1210
1211 bool isSupported = true;
1212 EXPECT_EQ(captureSession_->IsExposureModeSupported(exposureMode, isSupported), SESSION_NOT_CONFIG);
1213 EXPECT_EQ(captureSession_->GetSupportedExposureModes().empty(), true);
1214 std::vector<ExposureMode> exposureModes;
1215 EXPECT_EQ(captureSession_->GetSupportedExposureModes(exposureModes), SESSION_NOT_CONFIG);
1216
1217 sptr<PhotoOutput> photoOutput;
1218 sptr<VideoOutput> videoOutput;
1219 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1220
1221 EXPECT_EQ(captureSession_->GetSupportedExposureModes(exposureModes), SUCCESS);
1222 ASSERT_TRUE(!exposureModes.empty());
1223 for (auto mode : exposureModes) {
1224 ASSERT_TRUE(captureSession_->IsExposureModeSupported(mode));
1225 }
1226 captureSession_->LockForControl();
1227 EXPECT_EQ(captureSession_->SetExposureMode(ExposureMode::EXPOSURE_MODE_AUTO), SUCCESS);
1228 captureSession_->UnlockForControl();
1229 EXPECT_EQ(captureSession_->GetExposureMode(), ExposureMode::EXPOSURE_MODE_AUTO);
1230
1231 StartDefaultCaptureOutput(photoOutput, videoOutput);
1232 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
1233 cameraInput_ = nullptr;
1234
1235 EXPECT_EQ(captureSession_->GetSupportedExposureModes().empty(), true);
1236 EXPECT_EQ(captureSession_->GetSupportedExposureModes(exposureModes), SUCCESS);
1237 EXPECT_EQ(captureSession_->GetExposureMode(), EXPOSURE_MODE_UNSUPPORTED);
1238 EXPECT_EQ(captureSession_->GetExposureMode(exposureMode), SUCCESS);
1239 }
1240
1241 /*
1242 * Feature: Camera base function
1243 * Function: Test the capture session with metering points.
1244 * SubFunction: NA
1245 * FunctionPoints: NA
1246 * EnvConditions: NA
1247 * CaseDescription: Test captureSession set and query metering points after completing the default
1248 * allocation. Ensure that the camera function is normal after the settings are completed.
1249 */
1250 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_022, TestSize.Level1)
1251 {
1252 CreateNormalSession();
1253 Point point = captureSession_->GetMeteringPoint();
1254 EXPECT_EQ(point.x, 0);
1255 EXPECT_EQ(point.y, 0);
1256 EXPECT_EQ(captureSession_->SetMeteringPoint(point), SESSION_NOT_CONFIG);
1257 EXPECT_EQ(captureSession_->GetMeteringPoint(point), SESSION_NOT_CONFIG);
1258
1259 sptr<PhotoOutput> photoOutput;
1260 sptr<VideoOutput> videoOutput;
1261 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1262
1263 point = {1.0, 1.0};
1264 captureSession_->LockForControl();
1265 EXPECT_EQ(captureSession_->SetMeteringPoint(point), SUCCESS);
1266 captureSession_->UnlockForControl();
1267
1268 Point otherPoint = {0.0, 0.0};
1269 EXPECT_EQ(captureSession_->GetMeteringPoint(otherPoint), SUCCESS);
1270 EXPECT_EQ(otherPoint.x, point.x);
1271 EXPECT_EQ(otherPoint.y, point.y);
1272
1273 StartDefaultCaptureOutput(photoOutput, videoOutput);
1274 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
1275 cameraInput_ = nullptr;
1276
1277 EXPECT_EQ(captureSession_->GetMeteringPoint().x, 0);
1278 EXPECT_EQ(captureSession_->GetMeteringPoint().y, 0);
1279
1280 EXPECT_EQ(captureSession_->GetMeteringPoint(point), SUCCESS);
1281 captureSession_->LockForControl();
1282 EXPECT_EQ(captureSession_->SetMeteringPoint(point), SUCCESS);
1283 captureSession_->UnlockForControl();
1284 }
1285
1286 /*
1287 * Feature: Camera base function
1288 * Function: Test the capture session with exposure compensation value.
1289 * SubFunction: NA
1290 * FunctionPoints: NA
1291 * EnvConditions: NA
1292 * CaseDescription: Test captureSession query the camera exposure compensation value range and set
1293 * and query the exposure compensation value after completing the default allocation. Ensure that
1294 * the camera function is normal after the settings are completed.
1295 */
1296 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_023, TestSize.Level0)
1297 {
1298 CreateSystemSession();
1299 float exposureValue = 0.0;
1300 EXPECT_EQ(captureSessionForSys_->GetExposureValue(), 0);
1301 EXPECT_EQ(captureSessionForSys_->GetExposureValue(exposureValue), SESSION_NOT_CONFIG);
1302 EXPECT_EQ(captureSessionForSys_->SetExposureBias(exposureValue), SESSION_NOT_CONFIG);
1303
1304 std::vector<float> ranges;
1305 EXPECT_EQ(captureSessionForSys_->GetExposureBiasRange().empty(), true);
1306 EXPECT_EQ(captureSessionForSys_->GetExposureBiasRange(ranges), SESSION_NOT_CONFIG);
1307
1308 sptr<PhotoOutput> photoOutput;
1309 sptr<VideoOutput> videoOutput;
1310 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
1311
1312 EXPECT_EQ(captureSessionForSys_->GetExposureBiasRange(ranges), SUCCESS);
1313
1314 captureSessionForSys_->LockForControl();
1315 EXPECT_EQ(captureSessionForSys_->SetExposureBias(ranges[0]), SUCCESS);
1316 captureSessionForSys_->UnlockForControl();
1317 EXPECT_EQ(captureSessionForSys_->GetExposureValue(), ranges[0]);
1318
1319 captureSessionForSys_->LockForControl();
1320 EXPECT_EQ(captureSessionForSys_->SetExposureBias(ranges[1]), SUCCESS);
1321 captureSessionForSys_->UnlockForControl();
1322 EXPECT_EQ(captureSessionForSys_->GetExposureValue(), ranges[1]);
1323
1324 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
1325 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
1326 cameraInput_ = nullptr;
1327
1328 EXPECT_EQ(captureSessionForSys_->GetExposureBiasRange().empty(), true);
1329 EXPECT_EQ(captureSessionForSys_->GetExposureBiasRange(ranges), SUCCESS);
1330 EXPECT_EQ(captureSessionForSys_->GetExposureValue(), 0);
1331 EXPECT_EQ(captureSessionForSys_->GetExposureValue(exposureValue), SUCCESS);
1332 captureSessionForSys_->LockForControl();
1333 EXPECT_EQ(captureSessionForSys_->SetExposureBias(exposureValue), OPERATION_NOT_ALLOWED);
1334 captureSessionForSys_->UnlockForControl();
1335 }
1336
1337 /*
1338 * Feature: Camera base function
1339 * Function: Test the capture session with auto focus mode.
1340 * SubFunction: NA
1341 * FunctionPoints: NA
1342 * EnvConditions: NA
1343 * CaseDescription: Test captureSession check the autofocus mode supported by the device and set and
1344 * query the autofocus mode after completing the default allocation. Ensure that the photography
1345 * function is normal after the settings are completed.
1346 */
1347 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_024, TestSize.Level0)
1348 {
1349 CreateNormalSession();
1350 FocusMode focusMode = FOCUS_MODE_MANUAL;
1351 EXPECT_EQ(captureSession_->GetFocusMode(), FOCUS_MODE_MANUAL);
1352 EXPECT_EQ(captureSession_->GetFocusMode(focusMode), SESSION_NOT_CONFIG);
1353 EXPECT_EQ(captureSession_->SetFocusMode(focusMode), SESSION_NOT_CONFIG);
1354 EXPECT_EQ(captureSession_->IsFocusModeSupported(focusMode), false);
1355
1356 bool isSupported = true;
1357 EXPECT_EQ(captureSession_->IsFocusModeSupported(focusMode, isSupported), SESSION_NOT_CONFIG);
1358 std::vector<FocusMode> focusModes;
1359 EXPECT_EQ(captureSession_->GetSupportedFocusModes().empty(), true);
1360 EXPECT_EQ(captureSession_->GetSupportedFocusModes(focusModes), SESSION_NOT_CONFIG);
1361
1362 sptr<PhotoOutput> photoOutput;
1363 sptr<VideoOutput> videoOutput;
1364 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1365
1366 EXPECT_EQ(captureSession_->GetSupportedFocusModes(focusModes), SUCCESS);
1367 ASSERT_TRUE(!focusModes.empty());
1368 for (auto mode : focusModes) {
1369 ASSERT_TRUE(captureSession_->IsFocusModeSupported(mode));
1370 }
1371
1372 std::shared_ptr<TestFocusCallback> callback = std::make_shared<TestFocusCallback>();
1373 ASSERT_NE(callback, nullptr);
1374 captureSession_->SetFocusCallback(callback);
1375 ASSERT_NE(captureSession_->GetFocusCallback(), nullptr);
1376
1377 captureSession_->LockForControl();
1378 EXPECT_EQ(captureSession_->SetFocusMode(FocusMode::FOCUS_MODE_MANUAL), SUCCESS);
1379 captureSession_->UnlockForControl();
1380 EXPECT_EQ(captureSession_->GetFocusMode(), FocusMode::FOCUS_MODE_MANUAL);
1381
1382 captureSession_->LockForControl();
1383 EXPECT_EQ(captureSession_->SetFocusMode(FocusMode::FOCUS_MODE_AUTO), SUCCESS);
1384 captureSession_->UnlockForControl();
1385 EXPECT_EQ(captureSession_->GetFocusMode(), FocusMode::FOCUS_MODE_AUTO);
1386
1387 StartDefaultCaptureOutput(photoOutput, videoOutput);
1388 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
1389 cameraInput_ = nullptr;
1390
1391 EXPECT_EQ(captureSession_->GetSupportedFocusModes().empty(), true);
1392 EXPECT_EQ(captureSession_->GetSupportedFocusModes(focusModes), SUCCESS);
1393 EXPECT_EQ(captureSession_->GetFocusMode(), FOCUS_MODE_MANUAL);
1394 EXPECT_EQ(captureSession_->GetFocusMode(focusMode), SUCCESS);
1395 }
1396
1397 /*
1398 * Feature: Camera base function
1399 * Function: Test the capture session with focus point and focal length.
1400 * SubFunction: NA
1401 * FunctionPoints: NA
1402 * EnvConditions: NA
1403 * CaseDescription: Test cpatuseSession set and query the focus point and focal length after completing
1404 * the default allocation. Ensure that the camera function is normal after the settings are completed.
1405 */
1406 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_025, TestSize.Level1)
1407 {
1408 CreateNormalSession();
1409 Point point = captureSession_->GetFocusPoint();
1410 EXPECT_EQ(point.x, 0);
1411 EXPECT_EQ(point.y, 0);
1412
1413 float focalLength = 0.0;
1414 EXPECT_EQ(captureSession_->GetFocalLength(), 0);
1415 EXPECT_EQ(captureSession_->GetFocalLength(focalLength), SESSION_NOT_CONFIG);
1416 EXPECT_EQ(captureSession_->GetFocusPoint(point), SESSION_NOT_CONFIG);
1417 EXPECT_EQ(captureSession_->SetFocusPoint(point), SESSION_NOT_CONFIG);
1418
1419 sptr<PhotoOutput> photoOutput;
1420 sptr<VideoOutput> videoOutput;
1421 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1422
1423 point = { 1.0, 1.0 };
1424 captureSession_->LockForControl();
1425 EXPECT_EQ(captureSession_->SetFocusPoint(point), SUCCESS);
1426 captureSession_->UnlockForControl();
1427
1428 Point otherPoint = { 0.0, 0.0 };
1429 EXPECT_EQ(captureSession_->GetFocusPoint(otherPoint), SUCCESS);
1430 EXPECT_EQ(otherPoint.x, point.x);
1431 EXPECT_EQ(otherPoint.y, point.y);
1432
1433 EXPECT_EQ(captureSession_->GetFocalLength(focalLength), SUCCESS);
1434 MEDIA_INFO_LOG("moduletest get focal length: %{public}f", focalLength);
1435
1436 StartDefaultCaptureOutput(photoOutput, videoOutput);
1437 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
1438 cameraInput_ = nullptr;
1439
1440 EXPECT_EQ(captureSession_->GetFocusPoint().x, 0);
1441 EXPECT_EQ(captureSession_->GetFocusPoint().y, 0);
1442 EXPECT_EQ(captureSession_->GetFocusPoint(point), SUCCESS);
1443 EXPECT_EQ(captureSession_->GetFocalLength(), 0);
1444 EXPECT_EQ(captureSession_->GetFocalLength(focalLength), SUCCESS);
1445 }
1446
1447 /*
1448 * Feature: Camera base function
1449 * Function: Test the capture session with flash.
1450 * SubFunction: NA
1451 * FunctionPoints: NA
1452 * EnvConditions: NA
1453 * CaseDescription: Test captureSession check if the device supports flash, set and query the flash mode
1454 * if supported after completing the default allocation. Ensure that the camera function is normal
1455 * after the settings are completed.
1456 */
1457 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_026, TestSize.Level1)
1458 {
1459 CreateNormalSession();
1460 bool hasFlash = false;
1461 EXPECT_EQ(captureSession_->HasFlash(), false);
1462 EXPECT_EQ(captureSession_->HasFlash(hasFlash), SESSION_NOT_CONFIG);
1463
1464 FlashMode flashMode = FLASH_MODE_CLOSE;
1465 EXPECT_EQ(captureSession_->GetFlashMode(), FLASH_MODE_CLOSE);
1466 EXPECT_EQ(captureSession_->GetFlashMode(flashMode), SESSION_NOT_CONFIG);
1467 EXPECT_EQ(captureSession_->SetFlashMode(flashMode), SESSION_NOT_CONFIG);
1468 EXPECT_EQ(captureSession_->IsFlashModeSupported(flashMode), false);
1469
1470 bool isSupported = true;
1471 EXPECT_EQ(captureSession_->IsFlashModeSupported(flashMode, isSupported), SESSION_NOT_CONFIG);
1472
1473 std::vector<FlashMode> flashModes;
1474 EXPECT_EQ(captureSession_->GetSupportedFlashModes().empty(), true);
1475 EXPECT_EQ(captureSession_->GetSupportedFlashModes(flashModes), SESSION_NOT_CONFIG);
1476
1477 sptr<PhotoOutput> photoOutput;
1478 sptr<VideoOutput> videoOutput;
1479 CreateAndConfigureDefaultCaptureOutput(photoOutput);
1480
1481 ASSERT_TRUE(captureSession_->HasFlash());
1482 EXPECT_EQ(captureSession_->GetSupportedFlashModes(flashModes), SUCCESS);
1483 ASSERT_TRUE(!flashModes.empty());
1484 for (auto mode : flashModes) {
1485 ASSERT_TRUE(captureSession_->IsFlashModeSupported(mode));
1486 }
1487
1488 captureSession_->LockForControl();
1489 EXPECT_EQ(captureSession_->SetFlashMode(FlashMode::FLASH_MODE_OPEN), SUCCESS);
1490 captureSession_->UnlockForControl();
1491 EXPECT_EQ(captureSession_->GetFlashMode(), FlashMode::FLASH_MODE_OPEN);
1492
1493 captureSession_->LockForControl();
1494 EXPECT_EQ(captureSession_->SetFlashMode(FlashMode::FLASH_MODE_CLOSE), SUCCESS);
1495 captureSession_->UnlockForControl();
1496 EXPECT_EQ(captureSession_->GetFlashMode(), FlashMode::FLASH_MODE_CLOSE);
1497
1498 StartDefaultCaptureOutput(photoOutput);
1499 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
1500 cameraInput_ = nullptr;
1501
1502 EXPECT_EQ(captureSession_->GetSupportedFlashModes().empty(), true);
1503 EXPECT_EQ(captureSession_->GetSupportedFlashModes(flashModes), SUCCESS);
1504 EXPECT_EQ(captureSession_->GetFlashMode(), FLASH_MODE_CLOSE);
1505 EXPECT_EQ(captureSession_->GetFlashMode(flashMode), SUCCESS);
1506 }
1507
1508 /*
1509 * Feature: Camera base function
1510 * Function: Test the capture session with zoom ratio range.
1511 * SubFunction: NA
1512 * FunctionPoints: NA
1513 * EnvConditions: NA
1514 * CaseDescription: Test captureSession check the zoom ratio range supported by the device, and set and
1515 * query the zoom ratio after completing the default allocation. Ensure that the camera function
1516 * is normal after the settings are completed.
1517 */
1518 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_027, TestSize.Level0)
1519 {
1520 CreateSystemSession();
1521 float zoomRatio;
1522 EXPECT_EQ(captureSessionForSys_->GetZoomRatio(), 0);
1523
1524 std::vector<float> ranges;
1525 EXPECT_EQ(captureSessionForSys_->GetZoomRatioRange().empty(), true);
1526 EXPECT_EQ(captureSessionForSys_->GetZoomRatioRange(ranges), SESSION_NOT_CONFIG);
1527 EXPECT_EQ(captureSessionForSys_->GetZoomRatio(zoomRatio), SESSION_NOT_CONFIG);
1528 EXPECT_EQ(captureSessionForSys_->SetZoomRatio(zoomRatio), SESSION_NOT_CONFIG);
1529
1530 sptr<PhotoOutput> photoOutput;
1531 sptr<VideoOutput> videoOutput;
1532 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
1533
1534 EXPECT_EQ(captureSessionForSys_->GetZoomRatioRange(ranges), SUCCESS);
1535 if (ranges.empty()) {
1536 MEDIA_ERR_LOG("moduletest get zoom ratio ranage is empty");
1537 GTEST_SKIP();
1538 }
1539
1540 EXPECT_EQ(captureSessionForSys_->PrepareZoom(), SUCCESS);
1541
1542 captureSessionForSys_->LockForControl();
1543 EXPECT_EQ(captureSessionForSys_->SetZoomRatio(ranges[0]), SUCCESS);
1544 captureSessionForSys_->UnlockForControl();
1545 float zoomRatioMin = captureSessionForSys_->GetZoomRatio();
1546 EXPECT_EQ(captureSessionForSys_->GetZoomRatio(zoomRatioMin), SUCCESS);
1547
1548 std::shared_ptr<TestSmoothZoomCallback> callback = std::make_shared<TestSmoothZoomCallback>();
1549 ASSERT_NE(callback, nullptr);
1550 captureSessionForSys_->SetSmoothZoomCallback(callback);
1551 ASSERT_NE(captureSessionForSys_->GetSmoothZoomCallback(), nullptr);
1552
1553 uint32_t smoothZoomType = 0;
1554 captureSessionForSys_->LockForControl();
1555 EXPECT_EQ(captureSessionForSys_->SetSmoothZoom(ranges[1], smoothZoomType), SUCCESS);
1556 captureSessionForSys_->UnlockForControl();
1557 float zoomRatioMax = captureSessionForSys_->GetZoomRatio();
1558 EXPECT_EQ(captureSessionForSys_->GetZoomRatio(zoomRatioMax), SUCCESS);
1559 std::vector<ZoomPointInfo> zoomPointInfoList;
1560 EXPECT_EQ(captureSessionForSys_->GetZoomPointInfos(zoomPointInfoList), SUCCESS);
1561
1562 EXPECT_EQ(captureSessionForSys_->UnPrepareZoom(), SUCCESS);
1563
1564 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
1565 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
1566 cameraInput_ = nullptr;
1567
1568 EXPECT_EQ(captureSessionForSys_->GetZoomRatioRange().empty(), true);
1569 EXPECT_EQ(captureSessionForSys_->GetZoomRatioRange(ranges), SUCCESS);
1570 EXPECT_EQ(captureSessionForSys_->GetZoomRatio(), 0);
1571 EXPECT_EQ(captureSessionForSys_->GetZoomRatio(zoomRatio), SUCCESS);
1572 captureSessionForSys_->LockForControl();
1573 EXPECT_EQ(captureSessionForSys_->SetZoomRatio(zoomRatio), SUCCESS);
1574 captureSessionForSys_->UnlockForControl();
1575 }
1576
1577 /*
1578 * Feature: Camera base function
1579 * Function: Test the capture session with filter.
1580 * SubFunction: NA
1581 * FunctionPoints: NA
1582 * EnvConditions: NA
1583 * CaseDescription: Test captureSession check the filter types supported by the device, and set and
1584 * query the filter types after completing the default allocation. Ensure that the camera function
1585 * is normal after the settings are completed.
1586 */
1587 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_028, TestSize.Level1)
1588 {
1589 CreateNormalSession();
1590 sptr<PhotoOutput> photoOutput;
1591 sptr<VideoOutput> videoOutput;
1592 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1593
1594 std::vector<FilterType> filterTypes = captureSession_->GetSupportedFilters();
1595 if (filterTypes.empty()) {
1596 MEDIA_ERR_LOG("moduletest get supported filters is empty");
1597 GTEST_SKIP();
1598 }
1599
1600 captureSession_->LockForControl();
1601 captureSession_->SetFilter(FilterType::CLASSIC);
1602 captureSession_->UnlockForControl();
1603 EXPECT_EQ(captureSession_->GetFilter(), FilterType::CLASSIC);
1604
1605 captureSession_->LockForControl();
1606 captureSession_->SetFilter(FilterType::NONE);
1607 captureSession_->UnlockForControl();
1608 EXPECT_EQ(captureSession_->GetFilter(), FilterType::NONE);
1609
1610 StartDefaultCaptureOutput(photoOutput, videoOutput);
1611 }
1612
1613 /*
1614 * Feature: Camera base function
1615 * Function: Test the capture session with beauty.
1616 * SubFunction: NA
1617 * FunctionPoints: NA
1618 * EnvConditions: NA
1619 * CaseDescription: Test captureSession check the beauty types supported by the device and the corresponding
1620 * beauty levels supported by each type, and set and query the beauty level after completing the default
1621 * allocation. Ensure that the camera function is normal after the settings are completed.
1622 */
1623 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_029, TestSize.Level1)
1624 {
1625 CreateSystemSession();
1626 sptr<PhotoOutput> photoOutput;
1627 sptr<VideoOutput> videoOutput;
1628 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
1629
1630 std::vector<BeautyType> beautyTypes = captureSessionForSys_->GetSupportedBeautyTypes();
1631 if (beautyTypes.empty()) {
1632 MEDIA_ERR_LOG("moduletest get supported beauty types is empty");
1633 GTEST_SKIP();
1634 }
1635
1636 std::vector<int32_t> ranges = captureSessionForSys_->GetSupportedBeautyRange(BeautyType::FACE_SLENDER);
1637 if (ranges.empty()) {
1638 MEDIA_ERR_LOG("moduletest get supported beauty range is empty");
1639 GTEST_SKIP();
1640 }
1641
1642 captureSessionForSys_->LockForControl();
1643 captureSessionForSys_->SetBeauty(BeautyType::FACE_SLENDER, ranges[0]);
1644 captureSessionForSys_->UnlockForControl();
1645 EXPECT_EQ(captureSessionForSys_->GetBeauty(BeautyType::FACE_SLENDER), ranges[0]);
1646
1647 captureSessionForSys_->LockForControl();
1648 captureSessionForSys_->SetBeauty(BeautyType::FACE_SLENDER, ranges[1]);
1649 captureSessionForSys_->UnlockForControl();
1650 EXPECT_EQ(captureSessionForSys_->GetBeauty(BeautyType::FACE_SLENDER), ranges[1]);
1651
1652 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
1653 }
1654
1655 /*
1656 * Feature: Camera base function
1657 * Function: Test the capture session with color space.
1658 * SubFunction: NA
1659 * FunctionPoints: NA
1660 * EnvConditions: NA
1661 * CaseDescription: Test captureSession check the color space types supported by the device, and set
1662 * and query the color space types after completing the default allocation. Ensure that the photography
1663 * function is normal after the settings are completed.
1664 */
1665 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_030, TestSize.Level0)
1666 {
1667 CreateNormalSession();
1668 sptr<PhotoOutput> photoOutput;
1669 sptr<VideoOutput> videoOutput;
1670 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1671
1672 std::vector<ColorSpace> colorSpaces = captureSession_->GetSupportedColorSpaces();
1673 if (colorSpaces.empty()) {
1674 MEDIA_ERR_LOG("moduletest get supported color spaces is empty");
1675 GTEST_SKIP();
1676 }
1677 bool isSupportSet = false;
1678 if (std::find(colorSpaces.begin(), colorSpaces.end(), ColorSpace::COLOR_SPACE_UNKNOWN) !=
1679 colorSpaces.end()) {
1680 isSupportSet = true;
1681 }
1682 int32_t ret = isSupportSet ? SUCCESS : INVALID_ARGUMENT;
1683 EXPECT_EQ(captureSession_->SetColorSpace(ColorSpace::COLOR_SPACE_UNKNOWN), ret);
1684
1685 bool isSupportSetP3 = false;
1686 if (std::find(colorSpaces.begin(), colorSpaces.end(), ColorSpace::P3_HLG) !=
1687 colorSpaces.end()) {
1688 isSupportSetP3 = true;
1689 }
1690 int32_t retP3 = isSupportSetP3 ? SUCCESS : INVALID_ARGUMENT;
1691 EXPECT_EQ(captureSession_->SetColorSpace(ColorSpace::P3_HLG), retP3);
1692 ColorSpace colorSpace = ColorSpace::COLOR_SPACE_UNKNOWN;
1693 EXPECT_EQ(captureSession_->GetActiveColorSpace(colorSpace), SUCCESS);
1694 MEDIA_INFO_LOG("moduletest get active color space: %{public}d", colorSpace);
1695
1696 StartDefaultCaptureOutput(photoOutput, videoOutput);
1697 }
1698
1699 /*
1700 * Feature: Camera base function
1701 * Function: Test the capture session with color effect.
1702 * SubFunction: NA
1703 * FunctionPoints: NA
1704 * EnvConditions: NA
1705 * CaseDescription: Test captureSession check the color effect types supported by the device, and set
1706 * and query the color effect types after completing the default allocation. Ensure that the photography
1707 * function is normal after the settings are completed.
1708 */
1709 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_031, TestSize.Level0)
1710 {
1711 CreateSystemSession();
1712 sptr<PhotoOutput> photoOutput;
1713 sptr<VideoOutput> videoOutput;
1714 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
1715
1716 std::vector<ColorEffect> colorEffects = captureSessionForSys_->GetSupportedColorEffects();
1717 if (colorEffects.empty()) {
1718 MEDIA_ERR_LOG("moduletest get supported color effects is empty");
1719 GTEST_SKIP();
1720 }
1721
1722 captureSessionForSys_->LockForControl();
1723 captureSessionForSys_->SetColorEffect(ColorEffect::COLOR_EFFECT_NORMAL);
1724 captureSessionForSys_->UnlockForControl();
1725 EXPECT_EQ(captureSessionForSys_->GetColorEffect(), ColorEffect::COLOR_EFFECT_NORMAL);
1726
1727 captureSessionForSys_->LockForControl();
1728 captureSessionForSys_->SetColorEffect(ColorEffect::COLOR_EFFECT_BRIGHT);
1729 captureSessionForSys_->UnlockForControl();
1730 EXPECT_EQ(captureSessionForSys_->GetColorEffect(), ColorEffect::COLOR_EFFECT_BRIGHT);
1731
1732 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
1733 }
1734
1735 /*
1736 * Feature: Camera base function
1737 * Function: Test the capture session with auto focus distance.
1738 * SubFunction: NA
1739 * FunctionPoints: NA
1740 * EnvConditions: NA
1741 * CaseDescription: Test captureSession check the minimum autofocus distance supported by the device,
1742 * and set and query the autofocus distance after completing the default allocation. Ensure that the
1743 * camera function is normal after the settings are completed.
1744 */
1745 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_032, TestSize.Level1)
1746 {
1747 CreateSystemSession();
1748 sptr<PhotoOutput> photoOutput;
1749 sptr<VideoOutput> videoOutput;
1750 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
1751
1752 float minFocusDistance = captureSessionForSys_->GetMinimumFocusDistance();
1753 MEDIA_INFO_LOG("moduletest get min focus distance: %{public}f", minFocusDistance);
1754
1755 float focusDistance1 = -1.0;
1756 captureSessionForSys_->LockForControl();
1757 EXPECT_EQ(captureSessionForSys_->SetFocusDistance(focusDistance1), SUCCESS);
1758 captureSessionForSys_->UnlockForControl();
1759 float getFocusDistance1 = 0.0;
1760 EXPECT_EQ(captureSessionForSys_->GetFocusDistance(getFocusDistance1), SUCCESS);
1761 MEDIA_INFO_LOG("moduletest get focus distance: %{public}f", getFocusDistance1);
1762
1763 float focusDistance2 = 0.0;
1764 captureSessionForSys_->LockForControl();
1765 EXPECT_EQ(captureSessionForSys_->SetFocusDistance(focusDistance2), SUCCESS);
1766 captureSessionForSys_->UnlockForControl();
1767 float getFocusDistance2 = 0.0;
1768 EXPECT_EQ(captureSessionForSys_->GetFocusDistance(getFocusDistance2), SUCCESS);
1769 MEDIA_INFO_LOG("moduletest get focus distance: %{public}f", getFocusDistance2);
1770
1771 float focusDistance3 = 1.0;
1772 captureSessionForSys_->LockForControl();
1773 EXPECT_EQ(captureSessionForSys_->SetFocusDistance(focusDistance3), SUCCESS);
1774 captureSessionForSys_->UnlockForControl();
1775 float getFocusDistance3 = 0.0;
1776 EXPECT_EQ(captureSessionForSys_->GetFocusDistance(getFocusDistance3), SUCCESS);
1777 MEDIA_INFO_LOG("moduletest get focus distance: %{public}f", getFocusDistance3);
1778
1779 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
1780 }
1781
1782 /*
1783 * Feature: Camera base function
1784 * Function: Test the capture session with macro.
1785 * SubFunction: NA
1786 * FunctionPoints: NA
1787 * EnvConditions: NA
1788 * CaseDescription: Test captureSession check if the device supports macro lens function. Enable macro
1789 * function and set macro status callback if supported after completing the default allocation.
1790 * Ensure that the camera function is normal after the settings are completed.
1791 */
1792 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_033, TestSize.Level1)
1793 {
1794 CreateSystemSession();
1795 sptr<PhotoOutput> photoOutput;
1796 sptr<VideoOutput> videoOutput;
1797 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
1798
1799 if (!captureSessionForSys_->IsMacroSupported()) {
1800 MEDIA_ERR_LOG("moduletest macro is not supported");
1801 GTEST_SKIP();
1802 }
1803
1804 std::shared_ptr<TestMacroStatusCallback>callback = std::make_shared<TestMacroStatusCallback>();
1805 ASSERT_NE(callback, nullptr);
1806 captureSessionForSys_->SetMacroStatusCallback(callback);
1807 EXPECT_NE(captureSessionForSys_->GetMacroStatusCallback(), nullptr);
1808
1809 captureSessionForSys_->LockForControl();
1810 EXPECT_EQ(captureSessionForSys_->EnableMacro(!(captureSessionForSys_->IsSetEnableMacro())), SUCCESS);
1811 captureSessionForSys_->UnlockForControl();
1812
1813 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
1814 }
1815
1816 /*
1817 * Feature: Camera base function
1818 * Function: Test the capture session with depth fusion.
1819 * SubFunction: NA
1820 * FunctionPoints: NA
1821 * EnvConditions: NA
1822 * CaseDescription: Test captureSession check if the device supports depth fusion function. Enable
1823 * the depth fusion function and query the zoom ratio range if supported after completing the default
1824 * allocation. Ensure that the camera function is normal after the settings are completed.
1825 */
1826 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_034, TestSize.Level1)
1827 {
1828 CreateSystemSession();
1829 sptr<PhotoOutput> photoOutput;
1830 sptr<VideoOutput> videoOutput;
1831 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
1832
1833 if (!captureSessionForSys_->IsDepthFusionSupported()) {
1834 MEDIA_ERR_LOG("moduletest depth fusion is not supported");
1835 GTEST_SKIP();
1836 }
1837
1838 std::vector<float> thresholds = captureSessionForSys_->GetDepthFusionThreshold();
1839 ASSERT_TRUE(!thresholds.empty());
1840 MEDIA_INFO_LOG("moduletest depth fusion threshold min %{public}f max %{public}f", thresholds[0], thresholds[1]);
1841
1842 captureSessionForSys_->LockForControl();
1843 EXPECT_EQ(captureSessionForSys_->EnableDepthFusion(!(captureSessionForSys_->IsDepthFusionEnabled())), SUCCESS);
1844 captureSessionForSys_->UnlockForControl();
1845
1846 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
1847 }
1848
1849 /*
1850 * Feature: Camera base function
1851 * Function: Test the capture session with moon capture boost.
1852 * SubFunction: NA
1853 * FunctionPoints: NA
1854 * EnvConditions: NA
1855 * CaseDescription: Test captureSession check if the device supports moon capture boost function.
1856 * Enable and set the status callback if supported after completing the default allocation. Ensure
1857 * that the camera function is normal after the settings are completed.
1858 */
1859 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_035, TestSize.Level1)
1860 {
1861 CreateNormalSession();
1862 sptr<PhotoOutput> photoOutput;
1863 sptr<VideoOutput> videoOutput;
1864 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1865
1866 if (!captureSession_->IsMoonCaptureBoostSupported()) {
1867 MEDIA_ERR_LOG("moduletest moon capture boost is not supported");
1868 GTEST_SKIP();
1869 }
1870
1871 auto callback = std::make_shared<TestMoonCaptureBoostStatusCallback>();
1872 ASSERT_NE(callback, nullptr);
1873 captureSession_->SetMoonCaptureBoostStatusCallback(callback);
1874 EXPECT_NE(captureSession_->GetMoonCaptureBoostStatusCallback(), nullptr);
1875
1876 captureSession_->LockForControl();
1877 EXPECT_EQ(captureSession_->EnableMoonCaptureBoost(true), SUCCESS);
1878 captureSession_->UnlockForControl();
1879
1880 StartDefaultCaptureOutput(photoOutput, videoOutput);
1881 }
1882
1883 /*
1884 * Feature: Camera base function
1885 * Function: Test the capture session with low light boost.
1886 * SubFunction: NA
1887 * FunctionPoints: NA
1888 * EnvConditions: NA
1889 * CaseDescription: Test captureSession check if the device supports low light boost function.
1890 * Enable low light enhancement and detection function after completing the default allocation.
1891 * Ensure that the camera function is normal after the settings are completed.
1892 */
1893 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_036, TestSize.Level1)
1894 {
1895 CreateNormalSession();
1896 sptr<PhotoOutput> photoOutput;
1897 sptr<VideoOutput> videoOutput;
1898 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1899
1900 if (!captureSession_->IsLowLightBoostSupported()) {
1901 MEDIA_ERR_LOG("mooduletest low light boost is not supported");
1902 GTEST_SKIP();
1903 }
1904
1905 captureSession_->LockForControl();
1906 EXPECT_EQ(captureSession_->EnableLowLightBoost(true), SUCCESS);
1907 EXPECT_EQ(captureSession_->EnableLowLightDetection(true), SUCCESS);
1908 captureSession_->UnlockForControl();
1909
1910 StartDefaultCaptureOutput(photoOutput, videoOutput);
1911 }
1912
1913 /*
1914 * Feature: Camera base function
1915 * Function: Test the capture session with feature.
1916 * SubFunction: NA
1917 * FunctionPoints: NA
1918 * EnvConditions: NA
1919 * CaseDescription: Test captureSession check if the device supports the target function.
1920 * Enable and set the target function detection callback after completing the default allocation.
1921 * Ensure that the camera function is normal after the settings are completed.
1922 */
1923 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_037, TestSize.Level1)
1924 {
1925 CreateSystemSession();
1926 sptr<PhotoOutput> photoOutput;
1927 sptr<VideoOutput> videoOutput;
1928 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
1929
1930 auto callback = std::make_shared<TestFeatureDetectionStatusCallback>();
1931 ASSERT_NE(callback, nullptr);
1932 captureSessionForSys_->SetFeatureDetectionStatusCallback(callback);
1933 EXPECT_NE(captureSessionForSys_->GetFeatureDetectionStatusCallback(), nullptr);
1934
1935 if (captureSessionForSys_->IsFeatureSupported(SceneFeature::FEATURE_MOON_CAPTURE_BOOST)) {
1936 EXPECT_EQ(captureSessionForSys_->EnableFeature(SceneFeature::FEATURE_MOON_CAPTURE_BOOST, true), SUCCESS);
1937 }
1938 if (captureSessionForSys_->IsFeatureSupported(SceneFeature::FEATURE_TRIPOD_DETECTION)) {
1939 EXPECT_EQ(captureSessionForSys_->EnableFeature(SceneFeature::FEATURE_TRIPOD_DETECTION, true), SUCCESS);
1940 }
1941 if (captureSessionForSys_->IsFeatureSupported(SceneFeature::FEATURE_LOW_LIGHT_BOOST)) {
1942 EXPECT_EQ(captureSessionForSys_->EnableFeature(SceneFeature::FEATURE_LOW_LIGHT_BOOST, true), SUCCESS);
1943 }
1944 if (captureSessionForSys_->IsFeatureSupported(SceneFeature::FEATURE_MACRO)) {
1945 EXPECT_EQ(captureSessionForSys_->EnableFeature(SceneFeature::FEATURE_MACRO, true), SUCCESS);
1946 }
1947 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
1948 }
1949
1950 /*
1951 * Feature: Camera base function
1952 * Function: Test the capture session with AR.
1953 * SubFunction: NA
1954 * FunctionPoints: NA
1955 * EnvConditions: NA
1956 * CaseDescription: Test captureSession set the AR mode and AR callback after completing the default
1957 * allocation, and the camera function will function normally after the settings are completed.
1958 */
1959 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_038, TestSize.Level1)
1960 {
1961 CreateNormalSession();
1962 sptr<PhotoOutput> photoOutput;
1963 sptr<VideoOutput> videoOutput;
1964 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
1965
1966 uint32_t moduleType = 0;
1967 EXPECT_EQ(captureSession_->GetModuleType(moduleType), SUCCESS);
1968 EXPECT_EQ(cameraDevices_[0]->GetModuleType(), moduleType);
1969
1970 std::vector<int32_t> sensitivityRange;
1971 EXPECT_EQ(captureSession_->GetSensorSensitivityRange(sensitivityRange), SUCCESS);
1972 if (!sensitivityRange.empty()) {
1973 captureSession_->LockForControl();
1974 EXPECT_EQ(captureSession_->SetSensorSensitivity(sensitivityRange[0]), SUCCESS);
1975 captureSession_->UnlockForControl();
1976 }
1977
1978 std::vector<uint32_t> sensorExposureTimeRange;
1979 int32_t ret = captureSession_->GetSensorExposureTimeRange(sensorExposureTimeRange);
1980 if ((ret == SUCCESS) || (!sensorExposureTimeRange.empty())) {
1981 captureSession_->LockForControl();
1982 EXPECT_EQ(captureSession_->SetSensorExposureTime(sensorExposureTimeRange[0]), SUCCESS);
1983 captureSession_->UnlockForControl();
1984
1985 uint32_t sensorExposureTime = 0;
1986 EXPECT_EQ(captureSession_->GetSensorExposureTime(sensorExposureTime), SUCCESS);
1987 EXPECT_EQ(sensorExposureTime, sensorExposureTimeRange[0]);
1988 }
1989
1990 auto callback = std::make_shared<TestARCallback>();
1991 EXPECT_NE(callback, nullptr);
1992 captureSession_->SetARCallback(callback);
1993 EXPECT_NE(captureSession_->GetARCallback(), nullptr);
1994 EXPECT_EQ(captureSession_->SetARMode(true), SUCCESS);
1995
1996 StartDefaultCaptureOutput(photoOutput, videoOutput);
1997 }
1998
1999 /*
2000 * Feature: Camera base function
2001 * Function: Test the capture session with master ai.
2002 * SubFunction: NA
2003 * FunctionPoints: NA
2004 * EnvConditions: NA
2005 * CaseDescription: Test captureSession check if the device supports scene mode and type. Enable and
2006 * set the corresponding state for the scene mode type after completing the default allocation. Ensure
2007 * that the camera function is normal after the settings are completed.
2008 */
2009 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_039, TestSize.Level1)
2010 {
2011 CreateSystemSession();
2012 sptr<PhotoOutput> photoOutput;
2013 sptr<VideoOutput> videoOutput;
2014 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
2015
2016 if (!captureSessionForSys_->IsEffectSuggestionSupported()) {
2017 MEDIA_ERR_LOG("mooduletest effect suggestion is not supported");
2018 GTEST_SKIP();
2019 }
2020
2021 std::vector<EffectSuggestionType> supportedTypeList = captureSessionForSys_->GetSupportedEffectSuggestionType();
2022 ASSERT_TRUE(!supportedTypeList.empty());
2023
2024 auto callback = std::make_shared<TestEffectSuggestionCallback>();
2025 ASSERT_NE(callback, nullptr);
2026 captureSessionForSys_->SetEffectSuggestionCallback(callback);
2027
2028 captureSessionForSys_->LockForControl();
2029 EXPECT_EQ(captureSessionForSys_->EnableEffectSuggestion(true), SUCCESS);
2030
2031 std::vector<EffectSuggestionType> effectSuggestionTypes = captureSessionForSys_->GetSupportedEffectSuggestionType();
2032 if (!effectSuggestionTypes.empty()) {
2033 std::vector<EffectSuggestionStatus> effectSuggestionStatusList;
2034 for (auto type : effectSuggestionTypes) {
2035 effectSuggestionStatusList.push_back({type, false});
2036 }
2037 EXPECT_EQ(captureSessionForSys_->SetEffectSuggestionStatus(effectSuggestionStatusList), SUCCESS);
2038 EXPECT_EQ(captureSessionForSys_->UpdateEffectSuggestion(EffectSuggestionType::EFFECT_SUGGESTION_PORTRAIT,
2039 true), SUCCESS);
2040 }
2041 captureSessionForSys_->UnlockForControl();
2042
2043 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
2044 }
2045
2046 /*
2047 * Feature: Camera base function
2048 * Function: Test the capture session with virtual aperture.
2049 * SubFunction: NA
2050 * FunctionPoints: NA
2051 * EnvConditions: NA
2052 * CaseDescription: Test the captureSession check the supported virtual aperture settings and set the
2053 * virtual aperture. After the settings are completed, the camera function is normal.
2054 */
2055 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_040, TestSize.Level1)
2056 {
2057 CreateSystemSession();
2058 sptr<PhotoOutput> photoOutput;
2059 sptr<VideoOutput> videoOutput;
2060 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
2061
2062 std::vector<float> apertures;
2063 EXPECT_EQ(captureSessionForSys_->GetSupportedVirtualApertures(apertures), SUCCESS);
2064 if (!apertures.empty()) {
2065 captureSessionForSys_->LockForControl();
2066 EXPECT_EQ(captureSessionForSys_->SetVirtualAperture(apertures[0]), SUCCESS);
2067 captureSessionForSys_->UnlockForControl();
2068
2069 float aperture = 0.0;
2070 EXPECT_EQ(captureSessionForSys_->GetVirtualAperture(aperture), SUCCESS);
2071 EXPECT_EQ(aperture, apertures[0]);
2072 }
2073
2074 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
2075 }
2076
2077 /*
2078 * Feature: Camera base function
2079 * Function: Test the capture session with physical aperture.
2080 * SubFunction: NA
2081 * FunctionPoints: NA
2082 * EnvConditions: NA
2083 * CaseDescription: Test the captureSession check the supported physical aperture settings and set the
2084 * physical aperture. After the settings are completed, the camera function is normal.
2085 */
2086 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_041, TestSize.Level1)
2087 {
2088 CreateSystemSession();
2089 sptr<PhotoOutput> photoOutput;
2090 sptr<VideoOutput> videoOutput;
2091 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
2092
2093 std::vector<std::vector<float>> vecAperture;
2094 EXPECT_EQ(captureSessionForSys_->GetSupportedPhysicalApertures(vecAperture), SUCCESS);
2095 if (!vecAperture.empty()) {
2096 std::vector<float> apertures = vecAperture[0];
2097 captureSessionForSys_->LockForControl();
2098 EXPECT_EQ(captureSessionForSys_->SetPhysicalAperture(apertures[0]), SUCCESS);
2099 captureSessionForSys_->UnlockForControl();
2100
2101 float aperture = 0.0;
2102 EXPECT_EQ(captureSessionForSys_->GetPhysicalAperture(aperture), SUCCESS);
2103 EXPECT_EQ(aperture, apertures[0]);
2104 }
2105
2106 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
2107 }
2108
2109 /*
2110 * Feature: Camera base function
2111 * Function: Test the capture session with white balance.
2112 * SubFunction: NA
2113 * FunctionPoints: NA
2114 * EnvConditions: NA
2115 * CaseDescription: Test the captureSession check the white balance mode supported by the device and
2116 * make the necessary settings. Also check the range of values that the device supports for manual
2117 * settings and make the necessary adjustments. Ensure that the camera function is normal
2118 * after the settings are completed.
2119 */
2120 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_042, TestSize.Level1)
2121 {
2122 CreateNormalSession();
2123 sptr<PhotoOutput> photoOutput;
2124 sptr<VideoOutput> videoOutput;
2125 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
2126
2127 std::vector<WhiteBalanceMode> modes;
2128 EXPECT_EQ(captureSession_->GetSupportedWhiteBalanceModes(modes), SUCCESS);
2129 if (!modes.empty()) {
2130 for (auto mode : modes) {
2131 bool isSupported = true;
2132 EXPECT_EQ(captureSession_->IsWhiteBalanceModeSupported(mode, isSupported), SUCCESS);
2133 }
2134
2135 captureSession_->LockForControl();
2136 EXPECT_EQ(captureSession_->SetWhiteBalanceMode(WhiteBalanceMode::AWB_MODE_AUTO), SUCCESS);
2137 captureSession_->UnlockForControl();
2138
2139 WhiteBalanceMode mode = WhiteBalanceMode::AWB_MODE_OFF;
2140 EXPECT_EQ(captureSession_->GetWhiteBalanceMode(mode), SUCCESS);
2141 EXPECT_EQ(mode, WhiteBalanceMode::AWB_MODE_AUTO);
2142 }
2143
2144 bool isSupported = false;
2145 EXPECT_EQ(captureSession_->IsManualWhiteBalanceSupported(isSupported), SUCCESS);
2146 if (isSupported) {
2147 std::vector<int32_t> whiteBalanceRange;
2148 EXPECT_EQ(captureSession_->GetManualWhiteBalanceRange(whiteBalanceRange), SUCCESS);
2149 if (!whiteBalanceRange.empty()) {
2150 captureSession_->LockForControl();
2151 ASSERT_EQ(captureSession_->SetWhiteBalanceMode(WhiteBalanceMode::AWB_MODE_OFF), SUCCESS);
2152 captureSession_->UnlockForControl();
2153 captureSession_->LockForControl();
2154 ASSERT_EQ(captureSession_->SetManualWhiteBalance(whiteBalanceRange[0]), SUCCESS);
2155 captureSession_->UnlockForControl();
2156
2157 int32_t wbValue = 0;
2158 EXPECT_EQ(captureSession_->GetManualWhiteBalance(wbValue), SUCCESS);
2159 EXPECT_EQ(wbValue, whiteBalanceRange[0]);
2160 }
2161 }
2162
2163 StartDefaultCaptureOutput(photoOutput, videoOutput);
2164 }
2165
2166 /*
2167 * Feature: Camera base function
2168 * Function: Test the capture session with lcd flash.
2169 * SubFunction: NA
2170 * FunctionPoints: NA
2171 * EnvConditions: NA
2172 * CaseDescription: Test the captureSession check if the device supports flash. Register the flash
2173 * status callback and turn it on before turning it off if supported. Ensure that the photography
2174 * function is normal after the settings are completed.
2175 */
2176 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_043, TestSize.Level1)
2177 {
2178 CreateSystemSession();
2179 sptr<PhotoOutput> photoOutput;
2180 sptr<VideoOutput> videoOutput;
2181 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
2182
2183 if (captureSessionForSys_->IsLcdFlashSupported()) {
2184 auto callback = std::make_shared<TestLcdFlashStatusCallback>();
2185 EXPECT_NE(callback, nullptr);
2186 captureSessionForSys_->SetLcdFlashStatusCallback(callback);
2187 EXPECT_NE(captureSessionForSys_->GetLcdFlashStatusCallback(), nullptr);
2188
2189 captureSessionForSys_->LockForControl();
2190 EXPECT_EQ(captureSessionForSys_->EnableLcdFlash(true), SUCCESS);
2191 EXPECT_EQ(captureSessionForSys_->EnableLcdFlashDetection(true), SUCCESS);
2192
2193 EXPECT_EQ(captureSessionForSys_->EnableLcdFlash(false), SUCCESS);
2194 EXPECT_EQ(captureSessionForSys_->EnableLcdFlashDetection(false), SUCCESS);
2195 captureSessionForSys_->UnlockForControl();
2196 }
2197
2198 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
2199 }
2200
2201 /*
2202 * Feature: Camera base function
2203 * Function: Test the capture session with tripod.
2204 * SubFunction: NA
2205 * FunctionPoints: NA
2206 * EnvConditions: NA
2207 * CaseDescription: Test the captureSession check if the device supports tripods. Enable tripod
2208 * detection and stabilization if supported. Ensure that the camera function is normal after
2209 * the settings are completed.
2210 */
2211 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_044, TestSize.Level1)
2212 {
2213 CreateSystemSession();
2214 sptr<PhotoOutput> photoOutput;
2215 sptr<VideoOutput> videoOutput;
2216 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
2217
2218 if (captureSessionForSys_->IsTripodDetectionSupported()) {
2219 captureSessionForSys_->LockForControl();
2220 EXPECT_EQ(captureSessionForSys_->EnableTripodStabilization(true), SUCCESS);
2221 EXPECT_EQ(captureSessionForSys_->EnableTripodDetection(true), SUCCESS);
2222 captureSessionForSys_->UnlockForControl();
2223 }
2224
2225 StartDefaultCaptureOutputForSys(photoOutput, videoOutput);
2226 }
2227
2228 /*
2229 * Feature: Camera base function
2230 * Function: Test the capture session with switch device.
2231 * SubFunction: NA
2232 * FunctionPoints: NA
2233 * EnvConditions: NA
2234 * CaseDescription: Test captureSession check if the device supports automatic device switching. If
2235 * supported, enable automatic switching and register the switching status callback and set the device
2236 * status. After setting, the camera function is normal.
2237 */
2238 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_045, TestSize.Level0)
2239 {
2240 CreateNormalSession();
2241 sptr<PhotoOutput> photoOutput;
2242 sptr<VideoOutput> videoOutput;
2243 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
2244
2245 if (captureSession_->IsAutoDeviceSwitchSupported()) {
2246 auto callback = std::make_shared<TestAutoDeviceSwitchCallback>();
2247 EXPECT_NE(callback, nullptr);
2248 captureSession_->SetAutoDeviceSwitchCallback(callback);
2249 EXPECT_NE(captureSession_->GetAutoDeviceSwitchCallback(), nullptr);
2250
2251 captureSession_->SetIsAutoSwitchDeviceStatus(true);
2252 if (captureSession_->GetIsAutoSwitchDeviceStatus()) {
2253 EXPECT_EQ(captureSession_->EnableAutoDeviceSwitch(true), SUCCESS);
2254 EXPECT_EQ(captureSession_->SwitchDevice(), true);
2255 }
2256 }
2257
2258 StartDefaultCaptureOutput(photoOutput, videoOutput);
2259 }
2260
2261 /* *****captureOutput***** */
2262 /*
2263 * Feature: Camera base function
2264 * Function: Test the preview output with PreviewStateCallback.
2265 * SubFunction: NA
2266 * FunctionPoints: NA
2267 * EnvConditions: NA
2268 * CaseDescription: Test the registration of PreviewOutput with PreviewStatecallback. The callback
2269 * function is set and queried normally. OnFrameStarted is called at the beginning of the preview frame,
2270 * and OnFrameEnded is called at the end of the preview frame.
2271 */
2272 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_046, TestSize.Level1)
2273 {
2274 CreateNormalSession();
2275 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2276 ASSERT_NE(previewOutput, nullptr);
2277 std::shared_ptr<TestPreviewOutputCallback> callback = std::make_shared<TestPreviewOutputCallback>("");
2278 EXPECT_NE(callback, nullptr);
2279 previewOutput->SetCallback(callback);
2280 EXPECT_GT(previewOutput->GetPreviewOutputListenerManager()->GetListenerCount(), 0);
2281
2282 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2283 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2284 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2285 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2286
2287 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2288 WAIT(DURATION_AFTER_SESSION_START);
2289 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2290 }
2291
2292 /*
2293 * Feature: Camera base function
2294 * Function: Test the preview output with rotation.
2295 * SubFunction: NA
2296 * FunctionPoints: NA
2297 * EnvConditions: NA
2298 * CaseDescription: Test previewOutput to set the preview rotation angle, and after setting it, the
2299 * camera will preview normally.
2300 */
2301 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_047, TestSize.Level1)
2302 {
2303 CreateNormalSession();
2304 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2305 ASSERT_NE(previewOutput, nullptr);
2306
2307 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2308 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2309 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2310 EXPECT_EQ(previewOutput->SetPreviewRotation(CaptureOutput::ImageRotation::ROTATION_90, false), SUCCESS);
2311 int32_t imageRotation = previewOutput->GetPreviewRotation(CaptureOutput::ImageRotation::ROTATION_0);
2312 MEDIA_INFO_LOG("moduletest get preview rotation: %{public}d", imageRotation);
2313 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2314
2315 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2316 WAIT(DURATION_AFTER_SESSION_START);
2317 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2318 }
2319
2320 /*
2321 * Feature: Camera base function
2322 * Function: Test the preview output with sketch.
2323 * SubFunction: NA
2324 * FunctionPoints: NA
2325 * EnvConditions: NA
2326 * CaseDescription: Test whether previewOutput supports sketches. If supported, register sketch status
2327 * data callback and enable sketch function, query zoom ratio threshold. After setting, preview function is normal.
2328 */
2329 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_048, TestSize.Level1)
2330 {
2331 CreateNormalSession();
2332 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2333 ASSERT_NE(previewOutput, nullptr);
2334
2335 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2336 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2337 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2338 if (previewOutput->IsSketchSupported()) {
2339 EXPECT_GT(previewOutput->GetSketchRatio(), 0);
2340 EXPECT_EQ(previewOutput->EnableSketch(true), SUCCESS);
2341 }
2342 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2343
2344 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2345 WAIT(DURATION_AFTER_SESSION_START);
2346 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2347 }
2348
2349 /*
2350 * Feature: Camera base function
2351 * Function: Test the photo output with PhotoOutputCallback.
2352 * SubFunction: NA
2353 * FunctionPoints: NA
2354 * EnvConditions: NA
2355 * CaseDescription: Test the registration of PhotoStatecallback with photoOutput. The callback function
2356 * is set and queried normally, and the callback function responds normally before and after taking photos
2357 * and pressing the shutter button.
2358 */
2359 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_049, TestSize.Level1)
2360 {
2361 CreateNormalSession();
2362 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2363 ASSERT_NE(previewOutput, nullptr);
2364 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2365 ASSERT_NE(photoOutput, nullptr);
2366
2367 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2368 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2369 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2370 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2371 std::shared_ptr<TestPhotoOutputCallback> callback = std::make_shared<TestPhotoOutputCallback>("");
2372 EXPECT_NE(callback, nullptr);
2373 photoOutput->SetCallback(callback);
2374 EXPECT_NE(photoOutput->GetApplicationCallback(), nullptr);
2375 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2376
2377 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2378 WAIT(DURATION_AFTER_SESSION_START);
2379 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
2380 WAIT(DURATION_AFTER_CAPTURE);
2381 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2382 }
2383
2384 /*
2385 * Feature: Camera base function
2386 * Function: Test the photo output with location.
2387 * SubFunction: NA
2388 * FunctionPoints: NA
2389 * EnvConditions: NA
2390 * CaseDescription: Test setting the location information when capturing the camera stream, and the
2391 * camera function will be normal after the setting is completed.
2392 */
2393 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_050, TestSize.Level0)
2394 {
2395 CreateNormalSession();
2396 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2397 ASSERT_NE(previewOutput, nullptr);
2398 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2399 ASSERT_NE(photoOutput, nullptr);
2400
2401 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2402 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2403 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2404 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2405 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2406
2407 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2408 WAIT(DURATION_AFTER_SESSION_START);
2409 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
2410 std::shared_ptr<Location> location = std::make_shared<Location>();
2411 location->latitude = -1;
2412 location->longitude = -1;
2413 location->altitude = -1;
2414 photoSetting->SetLocation(location);
2415
2416 location->latitude = 0;
2417 location->longitude = 0;
2418 location->altitude = 0;
2419 photoSetting->SetLocation(location);
2420
2421 location->latitude = 1;
2422 location->longitude = 1;
2423 location->altitude = 1;
2424 photoSetting->SetLocation(location);
2425 photoSetting->SetGpsLocation(location->latitude, location->longitude);
2426 EXPECT_EQ(photoOutput->Capture(photoSetting), SUCCESS);
2427 WAIT(DURATION_AFTER_CAPTURE);
2428
2429 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2430 }
2431
2432 /*
2433 * Feature: Camera base function
2434 * Function: Test the photo output with rotation.
2435 * SubFunction: NA
2436 * FunctionPoints: NA
2437 * EnvConditions: NA
2438 * CaseDescription: Test setting the rotation information when capturing the camera stream, and the
2439 * camera function will be normal after the setting is completed.
2440 */
2441 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_051, TestSize.Level1)
2442 {
2443 CreateNormalSession();
2444 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2445 ASSERT_NE(previewOutput, nullptr);
2446 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2447 ASSERT_NE(photoOutput, nullptr);
2448
2449 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2450 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2451 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2452 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2453 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2454
2455 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2456 WAIT(DURATION_AFTER_SESSION_START);
2457 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
2458 photoSetting->SetRotation(PhotoCaptureSetting::RotationConfig::Rotation_90);
2459 EXPECT_EQ(photoOutput->Capture(photoSetting), SUCCESS);
2460 WAIT(DURATION_AFTER_CAPTURE);
2461 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2462 }
2463
2464 /*
2465 * Feature: Camera base function
2466 * Function: Test the photo output with mirror.
2467 * SubFunction: NA
2468 * FunctionPoints: NA
2469 * EnvConditions: NA
2470 * CaseDescription: Test setting the mirror information when capturing the camera stream, and the
2471 * camera function will be normal after the setting is completed.
2472 */
2473 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_052, TestSize.Level1)
2474 {
2475 CreateNormalSession();
2476 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2477 ASSERT_NE(previewOutput, nullptr);
2478 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2479 ASSERT_NE(photoOutput, nullptr);
2480
2481 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2482 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2483 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2484 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2485 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2486
2487 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2488 WAIT(DURATION_AFTER_SESSION_START);
2489 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
2490 if (photoOutput->IsMirrorSupported()) {
2491 EXPECT_EQ(photoOutput->EnableMirror(true), SUCCESS);
2492 if (!photoSetting->GetMirror()) {
2493 photoSetting->SetMirror(true);
2494 }
2495 }
2496 EXPECT_EQ(photoOutput->Capture(photoSetting), SUCCESS);
2497 WAIT(DURATION_AFTER_CAPTURE);
2498 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2499 }
2500
2501 /*
2502 * Feature: Camera base function
2503 * Function: Test the photo output with quality.
2504 * SubFunction: NA
2505 * FunctionPoints: NA
2506 * EnvConditions: NA
2507 * CaseDescription: Test setting the quality information when capturing the camera stream, and the
2508 * camera function will be normal after the setting is completed.
2509 */
2510 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_053, TestSize.Level1)
2511 {
2512 CreateNormalSession();
2513 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2514 ASSERT_NE(previewOutput, nullptr);
2515 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2516 ASSERT_NE(photoOutput, nullptr);
2517
2518 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2519 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2520 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2521 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2522 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2523
2524 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2525 WAIT(DURATION_AFTER_SESSION_START);
2526 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
2527 photoSetting->SetQuality(PhotoCaptureSetting::QualityLevel::QUALITY_LEVEL_HIGH);
2528 EXPECT_EQ(photoOutput->Capture(photoSetting), SUCCESS);
2529 WAIT(DURATION_AFTER_CAPTURE);
2530 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2531 }
2532
2533 /*
2534 * Feature: Camera base function
2535 * Function: Test the photo output with burst capture state.
2536 * SubFunction: NA
2537 * FunctionPoints: NA
2538 * EnvConditions: NA
2539 * CaseDescription: Test setting the burst capture state when capturing the camera stream, and the
2540 * camera function will be normal after the setting is completed.
2541 */
2542 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_054, TestSize.Level1)
2543 {
2544 CreateNormalSession();
2545 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2546 ASSERT_NE(previewOutput, nullptr);
2547 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2548 ASSERT_NE(photoOutput, nullptr);
2549
2550 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2551 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2552 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2553 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2554 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2555
2556 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2557 WAIT(DURATION_AFTER_SESSION_START);
2558 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
2559 uint8_t burstState = 1;
2560 photoSetting->SetBurstCaptureState(burstState);
2561 EXPECT_EQ(photoOutput->Capture(photoSetting), SUCCESS);
2562 WAIT(DURATION_AFTER_CAPTURE);
2563 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2564 }
2565
2566 /*
2567 * Feature: Camera base function
2568 * Function: Test the photo output with thumbnail.
2569 * SubFunction: NA
2570 * FunctionPoints: NA
2571 * EnvConditions: NA
2572 * CaseDescription: Test whether photoOutput supports fast thumbnails. If supported, register a
2573 * thumbnail callback and enable the thumbnail function. After setting it up, the photo function
2574 * will work normally.
2575 */
2576 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_055, TestSize.Level0)
2577 {
2578 CreateNormalSession();
2579 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2580 ASSERT_NE(previewOutput, nullptr);
2581 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2582 ASSERT_NE(photoOutput, nullptr);
2583
2584 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2585 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2586 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2587 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2588 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2589
2590 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2591 WAIT(DURATION_AFTER_SESSION_START);
2592 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
2593 if (photoOutput->IsQuickThumbnailSupported()) {
2594 std::shared_ptr<TestThumbnailCallback> callback = std::make_shared<TestThumbnailCallback>();
2595 photoOutput->SetThumbnailCallback(callback);
2596 EXPECT_EQ(photoOutput->SetThumbnail(true), SUCCESS);
2597 }
2598 EXPECT_EQ(photoOutput->Capture(photoSetting), SUCCESS);
2599 WAIT(DURATION_AFTER_CAPTURE);
2600 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2601 }
2602
2603 /*
2604 * Feature: Camera base function
2605 * Function: Test the photo output with raw delivery.
2606 * SubFunction: NA
2607 * FunctionPoints: NA
2608 * EnvConditions: NA
2609 * CaseDescription: Test whether photoOutput supports original raw delivery. If supported, enable raw
2610 * delivery function. After setting it up, the photo function will work normally.
2611 */
2612 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_056, TestSize.Level1)
2613 {
2614 CreateNormalSession();
2615 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2616 ASSERT_NE(previewOutput, nullptr);
2617 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2618 ASSERT_NE(photoOutput, nullptr);
2619
2620 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2621 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2622 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2623 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2624 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2625
2626 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2627 WAIT(DURATION_AFTER_SESSION_START);
2628 bool isRawDeliverySuppoted = false;
2629 EXPECT_EQ(photoOutput->IsRawDeliverySupported(isRawDeliverySuppoted), SUCCESS);
2630 if (isRawDeliverySuppoted) {
2631 EXPECT_EQ(photoOutput->EnableRawDelivery(true), SUCCESS);
2632 }
2633 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
2634 WAIT(DURATION_AFTER_CAPTURE);
2635 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2636 }
2637
2638 /*
2639 * Feature: Camera base function
2640 * Function: Test the photo output with auto cloud image enhancement.
2641 * SubFunction: NA
2642 * FunctionPoints: NA
2643 * EnvConditions: NA
2644 * CaseDescription: Test whether photoOutput supports automatic cloud image enhancement. If supported,
2645 * enable the automatic cloud image enhancement function. After setting it up, the camera function will
2646 * work normally.
2647 */
2648 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_057, TestSize.Level1)
2649 {
2650 CreateNormalSession();
2651 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2652 ASSERT_NE(previewOutput, nullptr);
2653 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2654 ASSERT_NE(photoOutput, nullptr);
2655
2656 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2657 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2658 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2659 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2660 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2661
2662 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2663 WAIT(DURATION_AFTER_SESSION_START);
2664 bool isAutoCloudImageEnhanceSupported = false;
2665 EXPECT_EQ(photoOutput->IsAutoCloudImageEnhancementSupported(isAutoCloudImageEnhanceSupported), SUCCESS);
2666 if (isAutoCloudImageEnhanceSupported) {
2667 EXPECT_EQ(photoOutput->EnableAutoCloudImageEnhancement(true), SUCCESS);
2668 }
2669 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
2670 WAIT(DURATION_AFTER_CAPTURE);
2671 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2672 }
2673
2674 /*
2675 * Feature: Camera base function
2676 * Function: Test the photo output with depth data delivery.
2677 * SubFunction: NA
2678 * FunctionPoints: NA
2679 * EnvConditions: NA
2680 * CaseDescription: Test whether photoOutput supports depth data delivery. If supported, enable the
2681 * depth data delivery function. After setting it up, the camera function will work normally.
2682 */
2683 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_058, TestSize.Level1)
2684 {
2685 CreateNormalSession();
2686 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2687 ASSERT_NE(previewOutput, nullptr);
2688 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
2689 ASSERT_NE(photoOutput, nullptr);
2690
2691 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2692 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2693 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2694 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
2695 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2696
2697 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2698 WAIT(DURATION_AFTER_SESSION_START);
2699 if (photoOutput->IsDepthDataDeliverySupported()) {
2700 EXPECT_EQ(photoOutput->EnableDepthDataDelivery(true), SUCCESS);
2701 }
2702 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
2703 WAIT(DURATION_AFTER_CAPTURE);
2704 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2705 }
2706
2707 /*
2708 * Feature: Camera base function
2709 * Function: Test the video output with videoStateCallback.
2710 * SubFunction: NA
2711 * FunctionPoints: NA
2712 * EnvConditions: NA
2713 * CaseDescription: Test videoOutput to register videoStatecallback. The callback function is set and
2714 * queried normally. OnFrameStarted is called at the beginning of the video frame, and OnFrameEnded
2715 * is called at the end of the video frame.
2716 */
2717 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_059, TestSize.Level1)
2718 {
2719 CreateNormalSession();
2720 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2721 ASSERT_NE(previewOutput, nullptr);
2722 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
2723 ASSERT_NE(videoOutput, nullptr);
2724
2725 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2726 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2727 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2728 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
2729 std::shared_ptr<TestVideoOutputCallback>callback = std::make_shared<TestVideoOutputCallback>("");
2730 EXPECT_NE(callback, nullptr);
2731 videoOutput->SetCallback(callback);
2732 EXPECT_NE(videoOutput->GetApplicationCallback(), nullptr);
2733 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2734
2735 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2736 WAIT(DURATION_AFTER_SESSION_START);
2737 EXPECT_EQ(videoOutput->Start(), SUCCESS);
2738 WAIT(DURATION_DURING_RECORDING);
2739 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
2740 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2741 }
2742
2743 /*
2744 * Feature: Camera base function
2745 * Function: Test the video output with mirror function.
2746 * SubFunction: NA
2747 * FunctionPoints: NA
2748 * EnvConditions: NA
2749 * CaseDescription: Test whether videoOutput supports mirror function. If supported, enable the
2750 * mirror function. After setting it up, the camera function will work normally.
2751 */
2752 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_060, TestSize.Level1)
2753 {
2754 CreateNormalSession();
2755 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2756 ASSERT_NE(previewOutput, nullptr);
2757 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
2758 ASSERT_NE(videoOutput, nullptr);
2759
2760 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2761 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2762 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2763 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
2764 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2765
2766 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2767 WAIT(DURATION_AFTER_SESSION_START);
2768 if (videoOutput->IsMirrorSupported()) {
2769 EXPECT_EQ(videoOutput->enableMirror(true), SUCCESS);
2770 }
2771 EXPECT_EQ(videoOutput->Start(), SUCCESS);
2772 WAIT(DURATION_DURING_RECORDING);
2773 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
2774 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2775 }
2776
2777 /*
2778 * Feature: Camera base function
2779 * Function: Test the video output with rotation.
2780 * SubFunction: NA
2781 * FunctionPoints: NA
2782 * EnvConditions: NA
2783 * CaseDescription: Test whether videoOutput supports rotation function. If supported, set the rotation.
2784 * After setting it up, the camera function will work normally.
2785 */
2786 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_061, TestSize.Level1)
2787 {
2788 CreateNormalSession();
2789 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
2790 ASSERT_NE(previewOutput, nullptr);
2791 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
2792 ASSERT_NE(videoOutput, nullptr);
2793
2794 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
2795 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
2796 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
2797 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
2798 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
2799
2800 EXPECT_EQ(captureSession_->Start(), SUCCESS);
2801 WAIT(DURATION_AFTER_SESSION_START);
2802 bool isSupported = false;
2803 EXPECT_EQ(videoOutput->IsRotationSupported(isSupported), SUCCESS);
2804 if (isSupported) {
2805 std::vector<int32_t> supportedRotations;
2806 EXPECT_EQ(videoOutput->GetSupportedRotations(supportedRotations), SUCCESS);
2807 if (!supportedRotations.empty()) {
2808 EXPECT_EQ(videoOutput->SetRotation(supportedRotations[0]), SUCCESS);
2809 }
2810 }
2811 EXPECT_EQ(videoOutput->Start(), SUCCESS);
2812 WAIT(DURATION_DURING_RECORDING);
2813 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
2814 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
2815 }
2816
2817
2818 /*
2819 * Feature: Camera base function
2820 * Function: Test get distributed camera hostname
2821 * SubFunction: NA
2822 * FunctionPoints: NA
2823 * EnvConditions: NA
2824 * CaseDescription: Test get distributed camera hostname
2825 */
2826 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_062, TestSize.Level1)
2827 {
2828 std::string hostName;
2829 for (size_t i = 0; i < cameraDevices_.size(); i++) {
2830 hostName = cameraDevices_[i]->GetHostName();
2831 std::string cameraId = cameraDevices_[i]->GetID();
2832 std::string networkId = cameraDevices_[i]->GetNetWorkId();
2833 if (networkId != "") {
2834 ASSERT_NE(hostName, "");
2835 } else {
2836 ASSERT_EQ(hostName, "");
2837 }
2838 }
2839 }
2840
2841 /*
2842 * Feature: Camera base function
2843 * Function: Test get DeviceType
2844 * SubFunction: NA
2845 * FunctionPoints: NA
2846 * EnvConditions: NA
2847 * CaseDescription: Test get DeviceType
2848 */
2849 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_063, TestSize.Level1)
2850 {
2851 std::vector<sptr<CameraDevice>> cameras = cameraManager_->GetSupportedCameras();
__anon933040de0102() 2852 auto judgeDeviceType = [&cameras]() -> bool {
2853 bool isOk = false;
2854 for (size_t i = 0; i < cameras.size(); i++) {
2855 uint16_t deviceType = cameras[i]->GetDeviceType();
2856 switch (deviceType) {
2857 case HostDeviceType::UNKNOWN:
2858 case HostDeviceType::PHONE:
2859 case HostDeviceType::TABLET:
2860 isOk = true;
2861 break;
2862 default:
2863 isOk = false;
2864 break;
2865 }
2866 if (isOk == false) {
2867 break;
2868 }
2869 }
2870 return isOk;
2871 };
2872 ASSERT_NE(judgeDeviceType(), false);
2873 }
2874
2875 /*
2876 * Feature: Camera base function
2877 * Function: Test input error and result callback
2878 * SubFunction: NA
2879 * FunctionPoints: NA
2880 * EnvConditions: NA
2881 * CaseDescription: Test input error and result callback
2882 */
2883 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_064, TestSize.Level1)
2884 {
2885 auto errorCallback = std::make_shared<TestDeviceCallback>("");
2886 auto resultCallback = std::make_shared<TestOnResultCallback>("");
2887 cameraInput_->SetErrorCallback(errorCallback);
2888 cameraInput_->SetResultCallback(resultCallback);
2889
2890 EXPECT_NE(cameraInput_->GetErrorCallback(), nullptr);
2891 EXPECT_NE(cameraInput_->GetResultCallback(), nullptr);
2892 }
2893
2894 /*
2895 * Feature: Camera base function
2896 * Function: Test create camera input
2897 * SubFunction: NA
2898 * FunctionPoints: NA
2899 * EnvConditions: NA
2900 * CaseDescription: test create camera input and construct device object with anomalous branch.
2901 */
2902 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_065, TestSize.Level0)
2903 {
2904 sptr<CameraManager> camManagerObj = CameraManager::GetInstance();
2905 ASSERT_NE(camManagerObj, nullptr);
2906 camManagerObj->SetServiceProxy(nullptr);
2907
2908 std::string cameraId = "";
2909 dmDeviceInfo deviceInfo = {};
2910 auto metaData = std::make_shared<OHOS::Camera::CameraMetadata>(0, 0);
2911 sptr<CameraDevice> camdeviceObj1 = new (std::nothrow) CameraDevice(cameraId, metaData, deviceInfo);
2912 ASSERT_NE(camdeviceObj1, nullptr);
2913 EXPECT_EQ(camManagerObj->CreateCameraInput(camdeviceObj1), nullptr);
2914
2915 cameraId = cameraDevices_[0]->GetID();
2916 sptr<CameraDevice> camdeviceObj2 = new (std::nothrow) CameraDevice(cameraId, metaData, deviceInfo);
2917 ASSERT_NE(camdeviceObj2, nullptr);
2918 EXPECT_NE(camManagerObj->CreateCameraInput(camdeviceObj2), nullptr);
2919
2920 sptr<CameraDevice> camdeviceObj3 = nullptr;
2921 EXPECT_EQ(camManagerObj->CreateCameraInput(camdeviceObj3), nullptr);
2922
2923 CameraPosition cameraPosition = cameraDevices_[0]->GetPosition();
2924 CameraType cameraType = cameraDevices_[0]->GetCameraType();
2925 ASSERT_NE(camManagerObj->CreateCameraInput(cameraPosition, cameraType), nullptr);
2926 EXPECT_EQ(camManagerObj->CreateCameraInput(CAMERA_POSITION_UNSPECIFIED, cameraType), nullptr);
2927 EXPECT_EQ(camManagerObj->CreateCameraInput(cameraPosition, CAMERA_TYPE_UNSUPPORTED), nullptr);
2928 EXPECT_EQ(camManagerObj->CreateCameraInput(CAMERA_POSITION_UNSPECIFIED, CAMERA_TYPE_UNSUPPORTED), nullptr);
2929
2930 sptr<CameraDevice> camDevice = camManagerObj->GetCameraDeviceFromId(cameraId);
2931 ASSERT_NE(camDevice, nullptr);
2932 sptr<ICameraDeviceService> deviceService = cameraInput_->GetCameraDevice();
2933 ASSERT_NE(deviceService, nullptr);
2934
2935 sptr<CameraInput> input = new (std::nothrow) CameraInput(deviceService, camdeviceObj3);
2936 ASSERT_NE(input, nullptr);
2937
2938 camManagerObj->InitCameraManager();
2939 }
2940
2941 /*
2942 * Feature: Camera base function
2943 * Function: Test anomalous branch
2944 * SubFunction: NA
2945 * FunctionPoints: NA
2946 * EnvConditions: NA
2947 * CaseDescription: Test camera settings with anomalous branch
2948 */
2949 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_066, TestSize.Level0)
2950 {
2951 CreateNormalSession();
2952 sptr<ICameraDeviceService> device= cameraInput_->GetCameraDevice();
2953 ASSERT_NE(device, nullptr);
2954
2955 sptr<CameraDevice> camdeviceObj = nullptr;
2956 sptr<CameraInput> camInput = new (std::nothrow) CameraInput(device, camdeviceObj);
2957 ASSERT_NE(camInput, nullptr);
2958
2959 std::string cameraId = cameraInput_->GetCameraId();
2960
2961 std::string getCameraSettings1 = cameraInput_->GetCameraSettings();
2962 EXPECT_EQ(cameraInput_->SetCameraSettings(getCameraSettings1), SUCCESS);
2963
2964 std::string getCameraSettings2 = "";
2965 EXPECT_EQ(camInput->SetCameraSettings(getCameraSettings2), 2);
2966
2967 EXPECT_EQ(cameraInput_->Close(), SUCCESS);
2968 cameraInput_->SetMetadataResultProcessor(captureSession_->GetMetadataResultProcessor());
2969
2970 EXPECT_EQ(cameraInput_->Open(), SERVICE_FATL_ERROR);
2971
2972 EXPECT_EQ(camInput->Release(), SUCCESS);
2973 camInput = nullptr;
2974 cameraInput_->Release();
2975 cameraInput_ = nullptr;
2976 }
2977
2978 /*
2979 * Feature: Camera base function
2980 * Function: Test anomalous branch
2981 * SubFunction: NA
2982 * FunctionPoints: NA
2983 * EnvConditions: NA
2984 * CaseDescription: test submit device control setting with anomalous branch
2985 */
2986 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_067, TestSize.Level1)
2987 {
2988 CreateNormalSession();
2989 EXPECT_EQ(captureSession_->Release(), SUCCESS);
2990 EXPECT_EQ(captureSession_->UnlockForControl(), SERVICE_FATL_ERROR);
2991 captureSession_ = nullptr;
2992 }
2993
2994 /*
2995 * Feature: Camera base function
2996 * Function: Test anomalous branch
2997 * SubFunction: NA
2998 * FunctionPoints: NA
2999 * EnvConditions: NA
3000 * CaseDescription: test session with anomalous branch
3001 */
3002 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_068, TestSize.Level1)
3003 {
3004 CreateNormalSession();
3005 cameraInput_->Close();
3006 cameraInput_->SetMetadataResultProcessor(captureSession_->GetMetadataResultProcessor());
3007
3008 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3009 EXPECT_EQ(captureSession_->BeginConfig(), SESSION_CONFIG_LOCKED);
3010 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), DEVICE_DISABLED);
3011
3012 captureSession_->Release();
3013 EXPECT_EQ(captureSession_->BeginConfig(), SERVICE_FATL_ERROR);
3014
3015 cameraInput_ = nullptr;
3016 captureSession_ = nullptr;
3017 }
3018
3019 /*
3020 * Feature: Camera base function
3021 * Function: Test capture session with commit config multiple times
3022 * SubFunction: NA
3023 * FunctionPoints: NA
3024 * EnvConditions: NA
3025 * CaseDescription: Test capture session with commit config multiple times
3026 */
3027 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_069, TestSize.Level1)
3028 {
3029 CreateNormalSession();
3030 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
3031 ASSERT_NE(previewOutput, nullptr);
3032
3033 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3034 EXPECT_EQ(cameraInput_->Open(), SUCCESS);
3035 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3036 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3037 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
3038 EXPECT_NE(captureSession_->CommitConfig(), SUCCESS);
3039 }
3040
3041 /*
3042 * Feature: Camera base function
3043 * Function: Test capture session add input or output with invalid value
3044 * SubFunction: NA
3045 * FunctionPoints: NA
3046 * EnvConditions: NA
3047 * CaseDescription: Test capture session add input or output with invalid value
3048 */
3049 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_070, TestSize.Level1)
3050 {
3051 CreateNormalSession();
3052 sptr<CaptureInput> input = nullptr;
3053 EXPECT_EQ(captureSession_->AddInput(input), OPERATION_NOT_ALLOWED);
3054 sptr<CaptureOutput> output = nullptr;
3055 EXPECT_EQ(captureSession_->AddOutput(output), OPERATION_NOT_ALLOWED);
3056
3057 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3058
3059 EXPECT_NE(captureSession_->AddInput(input), SUCCESS);
3060 EXPECT_NE(captureSession_->AddOutput(output), SUCCESS);
3061 }
3062
3063 /*
3064 * Feature: Camera base function
3065 * Function: Test capture session remove input or output with null
3066 * SubFunction: NA
3067 * FunctionPoints: NA
3068 * EnvConditions: NA
3069 * CaseDescription: Test capture session remove input or output with null
3070 */
3071 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_071, TestSize.Level1)
3072 {
3073 CreateNormalSession();
3074 sptr<CaptureInput> input = nullptr;
3075 EXPECT_EQ(captureSession_->RemoveInput(input), OPERATION_NOT_ALLOWED);
3076 sptr<CaptureOutput> output = nullptr;
3077 EXPECT_EQ(captureSession_->RemoveOutput(output), OPERATION_NOT_ALLOWED);
3078
3079 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3080
3081 EXPECT_EQ(captureSession_->RemoveInput(input), SERVICE_FATL_ERROR);
3082 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3083 EXPECT_EQ(captureSession_->RemoveInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3084
3085 EXPECT_EQ(captureSession_->RemoveOutput(output), SERVICE_FATL_ERROR);
3086 }
3087
3088 /*
3089 * Feature: Camera base function
3090 * Function: Test dynamic add and remove preview output
3091 * SubFunction: NA
3092 * FunctionPoints: NA
3093 * EnvConditions: NA
3094 * CaseDescription: Test dynamic add and remove preview output
3095 */
3096 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_072, TestSize.Level1)
3097 {
3098 CreateNormalSession();
3099 sptr<PreviewOutput> previewOutput1 = CreatePreviewOutput(previewProfiles_[0]);
3100 ASSERT_NE(previewOutput1, nullptr);
3101 sptr<PreviewOutput> previewOutput2 = CreatePreviewOutput(previewProfiles_[0]);
3102 ASSERT_NE(previewOutput2, nullptr);
3103 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
3104 ASSERT_NE(photoOutput, nullptr);
3105
3106 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3107 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3108 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput1), SUCCESS);
3109 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
3110 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
3111 EXPECT_EQ(captureSession_->Start(), SUCCESS);
3112 WAIT(DURATION_AFTER_SESSION_START);
3113 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
3114 WAIT(DURATION_AFTER_CAPTURE);
3115 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
3116
3117 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3118 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)previewOutput1), SUCCESS);
3119 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput2), SUCCESS);
3120 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
3121 EXPECT_EQ(captureSession_->Start(), SUCCESS);
3122 WAIT(DURATION_AFTER_SESSION_START);
3123 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
3124 }
3125
3126
3127 /*
3128 * Feature: Camera base function
3129 * Function: Test anomalous branch
3130 * SubFunction: NA
3131 * FunctionPoints: NA
3132 * EnvConditions: NA
3133 * CaseDescription: test create preview output with anomalous branch
3134 */
3135 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_073, TestSize.Level1)
3136 {
3137 CreateNormalSession();
3138 sptr<IConsumerSurface> previewSurface = IConsumerSurface::Create();
3139 sptr<IBufferProducer> previewProducer = previewSurface->GetProducer();
3140 sptr<Surface> pSurface = Surface::CreateSurfaceAsProducer(previewProducer);
3141
3142 sptr<Surface> pSurface_1 = nullptr;
3143
3144 sptr<CaptureOutput> previewOutput = cameraManager_->CreatePreviewOutput(previewProfiles_[0], pSurface_1);
3145 EXPECT_EQ(previewOutput, nullptr);
3146
3147 sptr<CaptureOutput> previewOutput_1 = cameraManager_->CreateDeferredPreviewOutput(previewProfiles_[0]);
3148 ASSERT_NE(previewOutput_1, nullptr);
3149
3150 // height is zero
3151 CameraFormat previewFormat = previewProfiles_[0].GetCameraFormat();
3152 Size previewSize;
3153 previewSize.width = previewProfiles_[0].GetSize().width;
3154 previewSize.height = 0;
3155 previewProfiles_[0] = Profile(previewFormat, previewSize);
3156
3157 previewOutput = cameraManager_->CreatePreviewOutput(previewProfiles_[0], pSurface);
3158 EXPECT_EQ(previewOutput, nullptr);
3159
3160 previewOutput_1 = cameraManager_->CreateDeferredPreviewOutput(previewProfiles_[0]);
3161 EXPECT_EQ(previewOutput_1, nullptr);
3162
3163 sptr<CaptureOutput> previewOutput_2 = cameraManager_->CreatePreviewOutput(previewProducer, previewFormat);
3164 EXPECT_EQ(previewOutput_2, nullptr);
3165
3166 sptr<CaptureOutput> previewOutput_3 = nullptr;
3167 previewOutput_3 = cameraManager_->CreateCustomPreviewOutput(pSurface, previewSize.width, previewSize.height);
3168 EXPECT_EQ(previewOutput_3, nullptr);
3169
3170 // width is zero
3171 previewSize.width = 0;
3172 previewSize.height = PREVIEW_DEFAULT_HEIGHT;
3173 previewProfiles_[0] = Profile(previewFormat, previewSize);
3174
3175 previewOutput = cameraManager_->CreatePreviewOutput(previewProfiles_[0], pSurface);
3176 EXPECT_EQ(previewOutput, nullptr);
3177
3178 previewOutput_1 = cameraManager_->CreateDeferredPreviewOutput(previewProfiles_[0]);
3179 EXPECT_EQ(previewOutput_1, nullptr);
3180
3181 // format is CAMERA_FORMAT_INVALID
3182 previewFormat = CAMERA_FORMAT_INVALID;
3183 previewSize.width = PREVIEW_DEFAULT_WIDTH;
3184 previewProfiles_[0] = Profile(previewFormat, previewSize);
3185
3186 previewOutput = cameraManager_->CreatePreviewOutput(previewProfiles_[0], pSurface);
3187 EXPECT_EQ(previewOutput, nullptr);
3188
3189 previewOutput_1 = cameraManager_->CreateDeferredPreviewOutput(previewProfiles_[0]);
3190 EXPECT_EQ(previewOutput_1, nullptr);
3191 }
3192
3193 /*
3194 * Feature: Camera base function
3195 * Function: Test anomalous branch
3196 * SubFunction: NA
3197 * FunctionPoints: NA
3198 * EnvConditions: NA
3199 * CaseDescription: test create photo output with anomalous branch
3200 */
3201 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_074, TestSize.Level1)
3202 {
3203 CreateNormalSession();
3204 sptr<IConsumerSurface> photosurface = IConsumerSurface::Create();
3205 sptr<IBufferProducer> surfaceProducer_1 = photosurface->GetProducer();
3206
3207 sptr<IBufferProducer> surfaceProducer_2 = nullptr;
3208
3209 sptr<CaptureOutput> photoOutput = cameraManager_->CreatePhotoOutput(photoProfiles_[0], surfaceProducer_2);
3210 EXPECT_EQ(photoOutput, nullptr);
3211
3212 // height is zero
3213 CameraFormat photoFormat = photoProfiles_[0].GetCameraFormat();
3214 Size photoSize;
3215 photoSize.width = photoProfiles_[0].GetSize().width;
3216 photoSize.height = 0;
3217 photoProfiles_[0] = Profile(photoFormat, photoSize);
3218
3219 photoOutput = cameraManager_->CreatePhotoOutput(photoProfiles_[0], surfaceProducer_1);
3220 EXPECT_EQ(photoOutput, nullptr);
3221
3222 // width is zero
3223 photoSize.width = 0;
3224 photoSize.height = PHOTO_DEFAULT_HEIGHT;
3225 photoProfiles_[0] = Profile(photoFormat, photoSize);
3226
3227 photoOutput = cameraManager_->CreatePhotoOutput(photoProfiles_[0], surfaceProducer_1);
3228 EXPECT_EQ(photoOutput, nullptr);
3229
3230 // format is CAMERA_FORMAT_INVALID
3231 photoFormat = CAMERA_FORMAT_INVALID;
3232 photoSize.width = PHOTO_DEFAULT_WIDTH;
3233 photoProfiles_[0] = Profile(photoFormat, photoSize);
3234
3235 photoOutput = cameraManager_->CreatePhotoOutput(photoProfiles_[0], surfaceProducer_1);
3236 EXPECT_EQ(photoOutput, nullptr);
3237 }
3238
3239 /*
3240 * Feature: Camera base function
3241 * Function: Test anomalous branch
3242 * SubFunction: NA
3243 * FunctionPoints: NA
3244 * EnvConditions: NA
3245 * CaseDescription: test create video output with anomalous branch
3246 */
3247 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_075, TestSize.Level1)
3248 {
3249 CreateNormalSession();
3250 sptr<IConsumerSurface> videoSurface = IConsumerSurface::Create();
3251 sptr<IBufferProducer> videoProducer = videoSurface->GetProducer();
3252 sptr<Surface> pSurface_1 = Surface::CreateSurfaceAsProducer(videoProducer);
3253
3254 sptr<Surface> pSurface_2 = nullptr;
3255
3256 sptr<CaptureOutput> videoOutput = cameraManager_->CreateVideoOutput(videoProfiles_[0], pSurface_2);
3257 EXPECT_EQ(videoOutput, nullptr);
3258
3259 sptr<CaptureOutput> videoOutput_1 = cameraManager_->CreateVideoOutput(pSurface_2);
3260 EXPECT_EQ(videoOutput_1, nullptr);
3261
3262 // height is zero
3263 std::vector<int32_t> framerates;
3264 CameraFormat videoFormat = videoProfiles_[0].GetCameraFormat();
3265 Size videoSize;
3266 videoSize.width = videoProfiles_[0].GetSize().width;
3267 videoSize.height = 0;
3268 VideoProfile videoProfile_1 = VideoProfile(videoFormat, videoSize, framerates);
3269
3270 videoOutput = cameraManager_->CreateVideoOutput(videoProfile_1, pSurface_1);
3271 EXPECT_EQ(videoOutput, nullptr);
3272
3273 // width is zero
3274 videoSize.width = 0;
3275 videoSize.height = VIDEO_DEFAULT_HEIGHT;
3276 videoProfile_1 = VideoProfile(videoFormat, videoSize, framerates);
3277
3278 videoOutput = cameraManager_->CreateVideoOutput(videoProfile_1, pSurface_1);
3279 EXPECT_EQ(videoOutput, nullptr);
3280
3281 // format is CAMERA_FORMAT_INVALID
3282 videoFormat = CAMERA_FORMAT_INVALID;
3283 videoSize.width = VIDEO_DEFAULT_WIDTH;
3284 videoProfile_1 = VideoProfile(videoFormat, videoSize, framerates);
3285
3286 videoOutput = cameraManager_->CreateVideoOutput(videoProfile_1, pSurface_1);
3287 EXPECT_EQ(videoOutput, nullptr);
3288 }
3289
3290 /*
3291 * Feature: Camera base function
3292 * Function: Test the capture session with Video Stabilization Mode.
3293 * SubFunction: NA
3294 * FunctionPoints: NA
3295 * EnvConditions: NA
3296 * CaseDescription: Test the capture session with Video Stabilization Mode.
3297 */
3298 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_076, TestSize.Level1)
3299 {
3300 CreateNormalSession();
3301 VideoStabilizationMode stabilizationMode = OFF;
3302 EXPECT_EQ(captureSession_->GetActiveVideoStabilizationMode(), OFF);
3303 EXPECT_EQ(captureSession_->SetVideoStabilizationMode(stabilizationMode), SESSION_NOT_CONFIG);
3304 EXPECT_EQ(captureSession_->GetActiveVideoStabilizationMode(stabilizationMode), SESSION_NOT_CONFIG);
3305
3306 bool isSupported = true;
3307 EXPECT_EQ(captureSession_->IsVideoStabilizationModeSupported(stabilizationMode, isSupported), SESSION_NOT_CONFIG);
3308 std::vector<VideoStabilizationMode> videoStabilizationModes;
3309 EXPECT_EQ(captureSession_->GetSupportedStabilizationMode().empty(), true);
3310 EXPECT_EQ(captureSession_->GetSupportedStabilizationMode(videoStabilizationModes), SESSION_NOT_CONFIG);
3311
3312 sptr<PhotoOutput> photoOutput;
3313 sptr<VideoOutput> videoOutput;
3314 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
3315
3316 videoStabilizationModes = captureSession_->GetSupportedStabilizationMode();
3317 if (videoStabilizationModes.empty()) {
3318 GTEST_SKIP();
3319 }
3320 stabilizationMode = videoStabilizationModes.back();
3321 if (captureSession_->IsVideoStabilizationModeSupported(stabilizationMode)) {
3322 captureSession_->SetVideoStabilizationMode(stabilizationMode);
3323 EXPECT_EQ(captureSession_->GetActiveVideoStabilizationMode(), stabilizationMode);
3324 }
3325
3326 StartDefaultCaptureOutput(photoOutput, videoOutput);
3327 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
3328 cameraInput_ = nullptr;
3329
3330 EXPECT_EQ(captureSession_->GetActiveVideoStabilizationMode(), OFF);
3331 EXPECT_EQ(captureSession_->GetActiveVideoStabilizationMode(stabilizationMode), SUCCESS);
3332 EXPECT_EQ(captureSession_->GetSupportedStabilizationMode().empty(), true);
3333 EXPECT_EQ(captureSession_->GetSupportedStabilizationMode(videoStabilizationModes), SUCCESS);
3334 }
3335
3336 /*
3337 * Feature: Camera base function
3338 * Function: Test anomalous branch
3339 * SubFunction: NA
3340 * FunctionPoints: NA
3341 * EnvConditions: NA
3342 * CaseDescription: Test abnormal branches with empty inputDevice
3343 */
3344 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_077, TestSize.Level1)
3345 {
3346 CreateNormalSession();
3347 sptr<PhotoOutput> photoOutput;
3348 sptr<VideoOutput> videoOutput;
3349 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
3350
3351 captureSession_->innerInputDevice_ = nullptr;
3352
3353 VideoStabilizationMode mode = VideoStabilizationMode::MIDDLE;
3354 EXPECT_EQ(captureSession_->GetActiveVideoStabilizationMode(mode), SUCCESS);
3355 std::vector<VideoStabilizationMode> videoStabilizationMode = captureSession_->GetSupportedStabilizationMode();
3356 EXPECT_EQ(videoStabilizationMode.empty(), true);
3357 EXPECT_EQ(captureSession_->GetSupportedStabilizationMode(videoStabilizationMode), SUCCESS);
3358
3359 std::vector<ExposureMode> getSupportedExpModes = captureSession_->GetSupportedExposureModes();
3360 EXPECT_EQ(getSupportedExpModes.empty(), true);
3361 EXPECT_EQ(captureSession_->GetSupportedExposureModes(getSupportedExpModes), SUCCESS);
3362 ExposureMode exposureMode = captureSession_->GetExposureMode();
3363 EXPECT_EQ(exposureMode, EXPOSURE_MODE_UNSUPPORTED);
3364 EXPECT_EQ(captureSession_->GetExposureMode(exposureMode), SUCCESS);
3365
3366 Point exposurePointGet = captureSession_->GetMeteringPoint();
3367 EXPECT_EQ(exposurePointGet.x, 0);
3368 EXPECT_EQ(exposurePointGet.y, 0);
3369 EXPECT_EQ(captureSession_->GetMeteringPoint(exposurePointGet), SUCCESS);
3370
3371 std::vector<float> getExposureBiasRange = captureSession_->GetExposureBiasRange();
3372 EXPECT_EQ(getExposureBiasRange.empty(), true);
3373 EXPECT_EQ(captureSession_->GetExposureBiasRange(getExposureBiasRange), SUCCESS);
3374
3375 float exposureValue = captureSession_->GetExposureValue();
3376 EXPECT_EQ(exposureValue, 0);
3377 EXPECT_EQ(captureSession_->GetExposureValue(exposureValue), SUCCESS);
3378
3379 captureSession_->LockForControl();
3380 EXPECT_EQ(captureSession_->SetExposureBias(exposureValue), OPERATION_NOT_ALLOWED);
3381 captureSession_->UnlockForControl();
3382 std::vector<FocusMode> getSupportedFocusModes = captureSession_->GetSupportedFocusModes();
3383 EXPECT_EQ(getSupportedFocusModes.empty(), true);
3384 EXPECT_EQ(captureSession_->GetSupportedFocusModes(getSupportedFocusModes), SUCCESS);
3385 }
3386
3387 /*
3388 * Feature: Camera base function
3389 * Function: Test anomalous branch
3390 * SubFunction: NA
3391 * FunctionPoints: NA
3392 * EnvConditions: NA
3393 * CaseDescription: Test abnormal branches with empty innerInputDevice_
3394 */
3395 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_078, TestSize.Level1)
3396 {
3397 CreateNormalSession();
3398 sptr<PhotoOutput> photoOutput;
3399 sptr<VideoOutput> videoOutput;
3400 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
3401
3402 captureSession_->innerInputDevice_ = nullptr;
3403
3404 FocusMode focusMode = captureSession_->GetFocusMode();
3405 EXPECT_EQ(focusMode, FOCUS_MODE_MANUAL);
3406 EXPECT_EQ(captureSession_->GetFocusMode(focusMode), SUCCESS);
3407
3408 Point focusPoint = captureSession_->GetFocusPoint();
3409 EXPECT_EQ(focusPoint.x, 0);
3410 EXPECT_EQ(focusPoint.y, 0);
3411 EXPECT_EQ(captureSession_->GetFocusPoint(focusPoint), SUCCESS);
3412
3413 float focalLength = captureSession_->GetFocalLength();
3414 EXPECT_EQ(focalLength, 0);
3415 EXPECT_EQ(captureSession_->GetFocalLength(focalLength), SUCCESS);
3416
3417 std::vector<FlashMode> getSupportedFlashModes = captureSession_->GetSupportedFlashModes();
3418 EXPECT_EQ(getSupportedFlashModes.empty(), true);
3419
3420 EXPECT_EQ(captureSession_->GetSupportedFlashModes(getSupportedFlashModes), SUCCESS);
3421 FlashMode flashMode = captureSession_->GetFlashMode();
3422 EXPECT_EQ(flashMode, FLASH_MODE_CLOSE);
3423 EXPECT_EQ(captureSession_->GetFlashMode(flashMode), SUCCESS);
3424
3425 std::vector<float> zoomRatioRange = captureSession_->GetZoomRatioRange();
3426 EXPECT_EQ(zoomRatioRange.empty(), true);
3427 EXPECT_EQ(captureSession_->GetZoomRatioRange(zoomRatioRange), SUCCESS);
3428
3429 float zoomRatio = captureSession_->GetZoomRatio();
3430 EXPECT_EQ(zoomRatio, 0);
3431 EXPECT_EQ(captureSession_->GetZoomRatio(zoomRatio), 0);
3432
3433 captureSession_->LockForControl();
3434 EXPECT_EQ(captureSession_->SetZoomRatio(zoomRatio), SUCCESS);
3435 EXPECT_EQ(captureSession_->SetMeteringPoint(focusPoint), SUCCESS);
3436 captureSession_->UnlockForControl();
3437 }
3438
3439 /*
3440 * Feature: Camera base function
3441 * Function: Test anomalous branch
3442 * SubFunction: NA
3443 * FunctionPoints: NA
3444 * EnvConditions: NA
3445 * CaseDescription: test stream_ null with anomalous branch
3446 */
3447 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_079, TestSize.Level1)
3448 {
3449 CreateNormalSession();
3450 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
3451 ASSERT_NE(previewOutput, nullptr);
3452 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
3453 ASSERT_NE(photoOutput, nullptr);
3454 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
3455 ASSERT_NE(videoOutput, nullptr);
3456
3457 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3458 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3459 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3460 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
3461 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
3462 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
3463
3464 previewOutput->Release();
3465 previewOutput->SetSession(captureSession_);
3466 photoOutput->Release();
3467 photoOutput->SetSession(captureSession_);
3468 videoOutput->Release();
3469 videoOutput->SetSession(captureSession_);
3470
3471 auto callback = std::make_shared<TestPhotoOutputCallback>("");
3472 photoOutput->SetCallback(callback);
3473
3474 EXPECT_EQ(previewOutput->Start(), SERVICE_FATL_ERROR);
3475 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
3476 EXPECT_EQ(photoOutput->Capture(photoSetting), SERVICE_FATL_ERROR);
3477 EXPECT_EQ(photoOutput->Capture(), SERVICE_FATL_ERROR);
3478 EXPECT_EQ(photoOutput->CancelCapture(), SERVICE_FATL_ERROR);
3479 EXPECT_EQ(videoOutput->Start(), SERVICE_FATL_ERROR);
3480 }
3481
3482 /*
3483 * Feature: Camera base function
3484 * Function: Test anomalous branch
3485 * SubFunction: NA
3486 * FunctionPoints: NA
3487 * EnvConditions: NA
3488 * CaseDescription: test stream_ null with anomalous branch
3489 */
3490 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_080, TestSize.Level1)
3491 {
3492 CreateNormalSession();
3493 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
3494 ASSERT_NE(previewOutput, nullptr);
3495 sptr<MetadataOutput> metadataOutput = cameraManager_->CreateMetadataOutput();
3496 ASSERT_NE(metadataOutput, nullptr);
3497
3498 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3499 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3500 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3501 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)metadataOutput), SUCCESS);
3502 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
3503
3504 metadataOutput->Release();
3505 metadataOutput->SetSession(captureSession_);
3506
3507 EXPECT_EQ(metadataOutput->Start(), SUCCESS);
3508 }
3509
3510 /*
3511 * Feature: Camera base function
3512 * Function: Test anomalous branch
3513 * SubFunction: NA
3514 * FunctionPoints: NA
3515 * EnvConditions: NA
3516 * CaseDescription: test cameraObj null with anomalous branch
3517 */
3518 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_081, TestSize.Level1)
3519 {
3520 CreateNormalSession();
3521 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
3522 ASSERT_NE(previewOutput, nullptr);
3523 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
3524 ASSERT_NE(photoOutput, nullptr);
3525
3526 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3527 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3528 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3529 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
3530 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
3531
3532 EXPECT_EQ(cameraInput_->Close(), SUCCESS);
3533 cameraInput_ = nullptr;
3534 photoOutput->SetSession(captureSession_);
3535
3536 EXPECT_EQ(photoOutput->IsMirrorSupported(), false);
3537 EXPECT_EQ(photoOutput->IsQuickThumbnailSupported(), SESSION_NOT_RUNNING);
3538 EXPECT_EQ(photoOutput->SetThumbnail(false), SESSION_NOT_RUNNING);
3539 }
3540
3541 /*
3542 * Feature: Camera base function
3543 * Function: Test anomalous branch.
3544 * SubFunction: NA
3545 * FunctionPoints: NA
3546 * EnvConditions: NA
3547 * CaseDescription: Test PreviewOutput/PhotoOutput/VideoOutput Getstream branch with CaptureOutput nullptr.
3548 */
3549 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_082, TestSize.Level1)
3550 {
3551 CreateNormalSession();
3552 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
3553 auto previewOutputCallback = std::make_shared<TestPreviewOutputCallback>("");
3554 auto photoOutputCallback = std::make_shared<TestPhotoOutputCallback>("");
3555 auto videoOutputCallback = std::make_shared<TestVideoOutputCallback>("");
3556
3557 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
3558 ASSERT_NE(previewOutput, nullptr);
3559 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
3560 ASSERT_NE(photoOutput, nullptr);
3561 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
3562 ASSERT_NE(videoOutput, nullptr);
3563
3564 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3565 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3566 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3567 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
3568 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
3569 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
3570
3571 sptr<VideoOutput> videoOutput_1 = (sptr<VideoOutput>&)videoOutput;
3572 sptr<PhotoOutput> photoOutput_1 = (sptr<PhotoOutput>&)photoOutput;
3573 sptr<PreviewOutput> previewOutput_1 = (sptr<PreviewOutput>&)previewOutput;
3574
3575 photoOutput->Release();
3576 photoOutput_1->SetSession(captureSession_);
3577 EXPECT_EQ(photoOutput_1->Capture(photoSetting), SERVICE_FATL_ERROR);
3578 EXPECT_EQ(photoOutput_1->Capture(), SERVICE_FATL_ERROR);
3579 EXPECT_EQ(photoOutput_1->CancelCapture(), SERVICE_FATL_ERROR);
3580 photoOutput_1->SetCallback(photoOutputCallback);
3581
3582 previewOutput->Release();
3583 previewOutput_1->SetSession(captureSession_);
3584 EXPECT_EQ(previewOutput_1->Start(), SERVICE_FATL_ERROR);
3585 EXPECT_EQ(previewOutput_1->Stop(), SERVICE_FATL_ERROR);
3586 previewOutput_1->SetCallback(previewOutputCallback);
3587
3588 videoOutput->Release();
3589 videoOutput_1->SetSession(captureSession_);
3590 EXPECT_EQ(videoOutput_1->Start(), SERVICE_FATL_ERROR);
3591 EXPECT_EQ(videoOutput_1->Stop(), SERVICE_FATL_ERROR);
3592 EXPECT_EQ(videoOutput_1->Resume(), SERVICE_FATL_ERROR);
3593 EXPECT_EQ(videoOutput_1->Pause(), SERVICE_FATL_ERROR);
3594 videoOutput_1->SetCallback(videoOutputCallback);
3595 }
3596
3597 /*
3598 * Feature: Camera base function
3599 * Function: Test anomalous branch.
3600 * SubFunction: NA
3601 * FunctionPoints: NA
3602 * EnvConditions: NA
3603 * CaseDescription: Test IsSessionCommited branch with capturesession object null.
3604 */
3605 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_083, TestSize.Level1)
3606 {
3607 CreateNormalSession();
3608 EXPECT_EQ(captureSession_->Start(), SESSION_NOT_CONFIG);
3609
3610 VideoStabilizationMode mode;
3611 EXPECT_EQ(captureSession_->GetActiveVideoStabilizationMode(mode), SESSION_NOT_CONFIG);
3612 EXPECT_EQ(captureSession_->SetVideoStabilizationMode(OFF), SESSION_NOT_CONFIG);
3613
3614 bool isSupported;
3615 EXPECT_EQ(captureSession_->IsVideoStabilizationModeSupported(OFF, isSupported), SESSION_NOT_CONFIG);
3616 EXPECT_EQ((captureSession_->GetSupportedStabilizationMode()).empty(), true);
3617
3618 std::vector<VideoStabilizationMode> stabilizationModes = {};
3619 EXPECT_EQ(captureSession_->GetSupportedStabilizationMode(stabilizationModes), SESSION_NOT_CONFIG);
3620 EXPECT_EQ(captureSession_->IsExposureModeSupported(EXPOSURE_MODE_AUTO, isSupported), SESSION_NOT_CONFIG);
3621 EXPECT_EQ((captureSession_->GetSupportedExposureModes()).empty(), true);
3622
3623 std::vector<ExposureMode> supportedExposureModes = {};
3624 EXPECT_EQ(captureSession_->GetSupportedExposureModes(supportedExposureModes), SESSION_NOT_CONFIG);
3625 EXPECT_EQ(captureSession_->SetExposureMode(EXPOSURE_MODE_AUTO), SESSION_NOT_CONFIG);
3626 EXPECT_EQ(captureSession_->GetExposureMode(), EXPOSURE_MODE_UNSUPPORTED);
3627
3628 ExposureMode exposureMode;
3629 EXPECT_EQ(captureSession_->GetExposureMode(exposureMode), SESSION_NOT_CONFIG);
3630
3631 Point exposurePointGet = captureSession_->GetMeteringPoint();
3632 EXPECT_EQ(captureSession_->SetMeteringPoint(exposurePointGet), SESSION_NOT_CONFIG);
3633
3634 EXPECT_EQ((captureSession_->GetMeteringPoint()).x, 0);
3635 EXPECT_EQ((captureSession_->GetMeteringPoint()).y, 0);
3636
3637 EXPECT_EQ(captureSession_->GetMeteringPoint(exposurePointGet), SESSION_NOT_CONFIG);
3638 EXPECT_EQ((captureSession_->GetExposureBiasRange()).empty(), true);
3639
3640 std::vector<float> exposureBiasRange = {};
3641 EXPECT_EQ(captureSession_->GetExposureBiasRange(exposureBiasRange), SESSION_NOT_CONFIG);
3642 EXPECT_EQ(captureSession_->SetExposureBias(0), SESSION_NOT_CONFIG);
3643 captureSession_->Release();
3644 captureSession_ = nullptr;
3645 }
3646
3647 /*
3648 * Feature: Camera base function
3649 * Function: Test anomalous branch.
3650 * SubFunction: NA
3651 * FunctionPoints: NA
3652 * EnvConditions: NA
3653 * CaseDescription: Test IsSessionCommited branch with capturesession object null.
3654 */
3655 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_084, TestSize.Level1)
3656 {
3657 CreateNormalSession();
3658 float exposureValue;
3659 EXPECT_EQ(captureSession_->GetExposureValue(), 0);
3660 EXPECT_EQ(captureSession_->GetExposureValue(exposureValue), SESSION_NOT_CONFIG);
3661 EXPECT_EQ((captureSession_->GetSupportedFocusModes()).empty(), true);
3662
3663 std::vector<FocusMode> supportedFocusModes;
3664 EXPECT_EQ(captureSession_->GetSupportedFocusModes(supportedFocusModes), SESSION_NOT_CONFIG);
3665
3666 bool isSupported;
3667 EXPECT_EQ(captureSession_->IsFocusModeSupported(FOCUS_MODE_AUTO, isSupported), SESSION_NOT_CONFIG);
3668 EXPECT_EQ(captureSession_->SetFocusMode(FOCUS_MODE_AUTO), SESSION_NOT_CONFIG);
3669 EXPECT_EQ(captureSession_->GetFocusMode(), FOCUS_MODE_MANUAL);
3670
3671 FocusMode focusMode;
3672 EXPECT_EQ(captureSession_->GetFocusMode(focusMode), SESSION_NOT_CONFIG);
3673
3674 Point exposurePointGet = captureSession_->GetMeteringPoint();
3675 EXPECT_EQ(captureSession_->SetFocusPoint(exposurePointGet), SESSION_NOT_CONFIG);
3676
3677 EXPECT_EQ((captureSession_->GetFocusPoint()).x, 0);
3678 EXPECT_EQ((captureSession_->GetFocusPoint()).y, 0);
3679
3680 Point focusPoint;
3681 EXPECT_EQ(captureSession_->GetFocusPoint(focusPoint), SESSION_NOT_CONFIG);
3682 EXPECT_EQ(captureSession_->GetFocalLength(), 0);
3683
3684 float focalLength;
3685 EXPECT_EQ(captureSession_->GetFocalLength(focalLength), SESSION_NOT_CONFIG);
3686 EXPECT_EQ((captureSession_->GetSupportedFlashModes()).empty(), true);
3687
3688 std::vector<FlashMode> supportedFlashModes;
3689 EXPECT_EQ(captureSession_->GetSupportedFlashModes(supportedFlashModes), SESSION_NOT_CONFIG);
3690 EXPECT_EQ(captureSession_->GetFlashMode(), FLASH_MODE_CLOSE);
3691
3692 FlashMode flashMode;
3693 EXPECT_EQ(captureSession_->GetFlashMode(flashMode), SESSION_NOT_CONFIG);
3694 EXPECT_EQ(captureSession_->SetFlashMode(FLASH_MODE_CLOSE), SESSION_NOT_CONFIG);
3695 EXPECT_EQ(captureSession_->IsFlashModeSupported(FLASH_MODE_CLOSE, isSupported), SESSION_NOT_CONFIG);
3696 EXPECT_EQ(captureSession_->HasFlash(isSupported), SESSION_NOT_CONFIG);
3697 EXPECT_EQ((captureSession_->GetZoomRatioRange()).empty(), true);
3698
3699 std::vector<float> exposureBiasRange = {};
3700 EXPECT_EQ(captureSession_->GetZoomRatioRange(exposureBiasRange), SESSION_NOT_CONFIG);
3701 EXPECT_EQ(captureSession_->GetZoomRatio(), 0);
3702
3703 float zoomRatio;
3704 EXPECT_EQ(captureSession_->GetZoomRatio(zoomRatio), SESSION_NOT_CONFIG);
3705 EXPECT_EQ(captureSession_->SetZoomRatio(0), SESSION_NOT_CONFIG);
3706 }
3707
3708 /*
3709 * Feature: Camera base function
3710 * Function: Test !IsSessionCommited() && !IsSessionConfiged()
3711 * SubFunction: NA
3712 * FunctionPoints: NA
3713 * EnvConditions: NA
3714 * CaseDescription: test IsSessionCommited() || IsSessionConfiged() with abnormal branches in CaptureSession
3715 */
3716 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_085, TestSize.Level0)
3717 {
3718 CreateSystemSession();
3719 EXPECT_EQ((captureSessionForSys_->GetSupportedColorEffects()).empty(), true);
3720 EXPECT_EQ(captureSessionForSys_->BeginConfig(), SUCCESS);
3721 EXPECT_EQ(captureSessionForSys_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3722 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfilesForSys_[0]);
3723 ASSERT_NE(previewOutput, nullptr);
3724 EXPECT_EQ(captureSessionForSys_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3725 EXPECT_EQ(captureSessionForSys_->GetFilter(), FilterType::NONE);
3726 EXPECT_EQ(captureSessionForSys_->GetSupportedFilters().empty(), true);
3727 EXPECT_EQ(captureSessionForSys_->GetSupportedBeautyTypes().empty(), true);
3728 captureSessionForSys_->SetBeauty(AUTO_TYPE, 0);
3729 EXPECT_EQ(captureSessionForSys_->GetBeauty(AUTO_TYPE), -1);
3730 captureSessionForSys_->SetFilter(NONE);
3731 captureSessionForSys_->SetColorSpace(COLOR_SPACE_UNKNOWN);
3732 EXPECT_EQ(ServiceToCameraError(captureSessionForSys_->VerifyAbility(0)), SERVICE_FATL_ERROR);
3733
3734 EXPECT_EQ(captureSessionForSys_->CommitConfig(), SUCCESS);
3735 captureSessionForSys_->SetBeauty(AUTO_TYPE, 0);
3736 EXPECT_EQ(captureSessionForSys_->GetBeauty(AUTO_TYPE), -1);
3737 captureSessionForSys_->SetFilter(NONE);
3738 captureSessionForSys_->SetColorSpace(COLOR_SPACE_UNKNOWN);
3739 }
3740
3741 /*
3742 * Feature: Camera base function
3743 * Function: Test !IsSessionCommited() && !IsSessionConfiged()
3744 * SubFunction: NA
3745 * FunctionPoints: NA
3746 * EnvConditions: NA
3747 * CaseDescription: test IsSessionCommited() || IsSessionConfiged() with abnormal branches in CaptureSession
3748 */
3749 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_086, TestSize.Level0)
3750 {
3751 CreateSystemSession();
3752 EXPECT_EQ(captureSessionForSys_->BeginConfig(), SUCCESS);
3753 EXPECT_EQ(captureSessionForSys_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3754
3755 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfilesForSys_[0]);
3756 ASSERT_NE(previewOutput, nullptr);
3757 EXPECT_EQ(captureSessionForSys_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3758 EXPECT_EQ(captureSessionForSys_->CommitConfig(), 0);
3759
3760 captureSessionForSys_->innerInputDevice_ = nullptr;
3761
3762 EXPECT_EQ(captureSessionForSys_->GetSupportedFilters().empty(), true);
3763 EXPECT_EQ(captureSessionForSys_->GetFilter(), FilterType::NONE);
3764 EXPECT_EQ(captureSessionForSys_->GetSupportedBeautyTypes().empty(), true);
3765
3766 BeautyType beautyType = AUTO_TYPE;
3767 EXPECT_EQ(captureSessionForSys_->GetSupportedBeautyRange(beautyType).empty(), true);
3768 EXPECT_EQ(captureSessionForSys_->GetBeauty(beautyType), -1);
3769 EXPECT_EQ(captureSessionForSys_->GetColorEffect(), ColorEffect::COLOR_EFFECT_NORMAL);
3770 EXPECT_EQ(captureSessionForSys_->GetSupportedColorEffects().empty(), true);
3771 }
3772
3773 /*
3774 * Feature: Camera base function
3775 * Function: Test !IsSessionCommited() && !IsSessionConfiged()
3776 * SubFunction: NA
3777 * FunctionPoints: NA
3778 * EnvConditions: NA
3779 * CaseDescription: test IsSessionCommited() || IsSessionConfiged() with abnormal branches in CaptureSession
3780 */
3781 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_087, TestSize.Level1)
3782 {
3783 CreateNormalSession();
3784 EXPECT_EQ(captureSession_->GetSupportedFilters().empty(), true);
3785 EXPECT_EQ(captureSession_->GetFilter(), FilterType::NONE);
3786 EXPECT_EQ(captureSession_->GetSupportedBeautyTypes().empty(), true);
3787
3788 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3789 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3790 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
3791 ASSERT_NE(previewOutput, nullptr);
3792 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), 0);
3793 EXPECT_EQ(captureSession_->GetSupportedFilters().empty(), true);
3794 EXPECT_EQ(captureSession_->GetFilter(), FilterType::NONE);
3795 EXPECT_EQ(captureSession_->GetSupportedBeautyTypes().empty(), true);
3796 EXPECT_EQ(captureSession_->CommitConfig(), 0);
3797
3798 captureSession_->innerInputDevice_ = nullptr;
3799 EXPECT_EQ(captureSession_->GetSupportedFilters().empty(), true);
3800 EXPECT_EQ(captureSession_->GetFilter(), FilterType::NONE);
3801 EXPECT_EQ(captureSession_->GetSupportedBeautyTypes().empty(), true);
3802 }
3803
3804 /*
3805 * Feature: Camera base function
3806 * Function: Test !IsSessionCommited() && !IsSessionConfiged()
3807 * SubFunction: NA
3808 * FunctionPoints: NA
3809 * EnvConditions: NA
3810 * CaseDescription: test Commited() || Configed() with abnormal branches in CaptureSession in CaptureSession
3811 */
3812 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_088, TestSize.Level1)
3813 {
3814 CreateSystemSession();
3815 ColorSpace colorSpace = COLOR_SPACE_UNKNOWN;
3816 EXPECT_EQ(captureSessionForSys_->GetSupportedFilters().empty(), true);
3817 EXPECT_EQ(captureSessionForSys_->GetFilter(), FilterType::NONE);
3818 EXPECT_EQ(captureSessionForSys_->GetSupportedBeautyTypes().empty(), true);
3819 BeautyType beautyType = AUTO_TYPE;
3820 EXPECT_EQ(captureSessionForSys_->GetSupportedBeautyRange(beautyType).empty(), true);
3821 EXPECT_EQ(captureSessionForSys_->GetBeauty(AUTO_TYPE), CameraErrorCode::SESSION_NOT_CONFIG);
3822 EXPECT_EQ(captureSessionForSys_->GetColorEffect(), ColorEffect::COLOR_EFFECT_NORMAL);
3823 EXPECT_EQ(captureSessionForSys_->GetSupportedColorEffects().empty(), true);
3824 captureSessionForSys_->SetFilter(NONE);
3825 captureSessionForSys_->SetBeauty(beautyType, 0);
3826 EXPECT_EQ(captureSessionForSys_->GetSupportedColorSpaces().empty(), true);
3827 EXPECT_EQ(captureSessionForSys_->SetColorSpace(COLOR_SPACE_UNKNOWN), CameraErrorCode::SESSION_NOT_CONFIG);
3828 captureSessionForSys_->SetMode(SceneMode::NORMAL);
3829 EXPECT_EQ(ServiceToCameraError(captureSessionForSys_->VerifyAbility(0)), SERVICE_FATL_ERROR);
3830 EXPECT_EQ(captureSessionForSys_->GetActiveColorSpace(colorSpace), CameraErrorCode::SESSION_NOT_CONFIG);
3831 captureSessionForSys_->SetColorEffect(COLOR_EFFECT_NORMAL);
3832 captureSessionForSys_->Release();
3833 captureSessionForSys_ = nullptr;
3834 }
3835
3836 /*
3837 * Feature: Camera base function
3838 * Function: Test !IsSessionCommited() && !IsSessionConfiged()
3839 * SubFunction: NA
3840 * FunctionPoints: NA
3841 * EnvConditions: NA
3842 * CaseDescription: test IsSessionCommited() || IsSessionConfiged() with abnormal branches in CaptureSession
3843 */
3844 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_089, TestSize.Level1)
3845 {
3846 CreateSystemSession();
3847 ColorSpace colorSpace = COLOR_SPACE_UNKNOWN;
3848 EXPECT_EQ(captureSessionForSys_->BeginConfig(), SUCCESS);
3849 EXPECT_EQ(captureSessionForSys_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3850 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfilesForSys_[0]);
3851 ASSERT_NE(previewOutput, nullptr);
3852 EXPECT_EQ(captureSessionForSys_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3853 captureSessionForSys_->SetMode(SceneMode::PORTRAIT);
3854 EXPECT_EQ(ServiceToCameraError(captureSessionForSys_->VerifyAbility(0)), SERVICE_FATL_ERROR);
3855 EXPECT_EQ(captureSessionForSys_->GetActiveColorSpace(colorSpace), SUCCESS);
3856 captureSessionForSys_->SetColorEffect(COLOR_EFFECT_NORMAL);
3857 EXPECT_EQ(captureSessionForSys_->CommitConfig(), SUCCESS);
3858 if (captureSessionForSys_->IsMacroSupported()) {
3859 captureSessionForSys_->LockForControl();
3860 EXPECT_EQ(captureSessionForSys_->EnableMacro(false), SUCCESS);
3861 captureSessionForSys_->UnlockForControl();
3862 }
3863 EXPECT_EQ(captureSessionForSys_->GetActiveColorSpace(colorSpace), SUCCESS);
3864 captureSessionForSys_->SetColorEffect(COLOR_EFFECT_NORMAL);
3865 captureSessionForSys_->innerInputDevice_ = nullptr;
3866 EXPECT_EQ(ServiceToCameraError(captureSessionForSys_->VerifyAbility(0)), SERVICE_FATL_ERROR);
3867 }
3868
3869 /*
3870 * Feature: Camera base function
3871 * Function: Test !IsSessionCommited() && !IsSessionConfiged()
3872 * SubFunction: NA
3873 * FunctionPoints: NA
3874 * EnvConditions: NA
3875 * CaseDescription: test !IsSessionCommited() && !IsSessionConfiged() with abnormal branches in CaptureSession
3876 */
3877 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_090, TestSize.Level1)
3878 {
3879 CreateSystemSession();
3880 BeautyType beautyType = AUTO_TYPE;
3881 EXPECT_EQ(captureSessionForSys_->GetSupportedBeautyRange(beautyType).empty(), true);
3882 EXPECT_EQ(captureSessionForSys_->GetBeauty(beautyType), CameraErrorCode::SESSION_NOT_CONFIG);
3883 EXPECT_EQ(captureSessionForSys_->GetColorEffect(), ColorEffect::COLOR_EFFECT_NORMAL);
3884 EXPECT_EQ(captureSessionForSys_->GetSupportedColorEffects().empty(), true);
3885 EXPECT_EQ(captureSessionForSys_->GetSupportedColorSpaces().empty(), true);
3886 captureSessionForSys_->SetBeauty(beautyType, 0);
3887 captureSessionForSys_->SetFilter(NONE);
3888 EXPECT_EQ(captureSessionForSys_->SetColorSpace(COLOR_SPACE_UNKNOWN), SESSION_NOT_CONFIG);
3889 EXPECT_EQ(captureSessionForSys_->BeginConfig(), SUCCESS);
3890 EXPECT_EQ(captureSessionForSys_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3891 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfilesForSys_[0]);
3892 ASSERT_NE(previewOutput, nullptr);
3893 EXPECT_EQ(captureSessionForSys_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3894 captureSessionForSys_->GetSupportedBeautyRange(beautyType);
3895 captureSessionForSys_->GetBeauty(beautyType);
3896 captureSessionForSys_->GetColorEffect();
3897 captureSessionForSys_->SetBeauty(beautyType, 0);
3898 captureSessionForSys_->SetFilter(NONE);
3899 captureSessionForSys_->SetColorSpace(COLOR_SPACE_UNKNOWN);
3900 EXPECT_EQ(captureSessionForSys_->CommitConfig(), SUCCESS);
3901 captureSessionForSys_->innerInputDevice_ = nullptr;
3902 captureSessionForSys_->GetSupportedBeautyRange(beautyType).empty();
3903 captureSessionForSys_->GetBeauty(beautyType);
3904 captureSessionForSys_->GetColorEffect();
3905 captureSessionForSys_->GetSupportedColorEffects().empty();
3906 captureSessionForSys_->GetSupportedColorSpaces().empty();
3907 captureSessionForSys_->SetBeauty(beautyType, 0);
3908 captureSessionForSys_->SetFilter(NONE);
3909 captureSessionForSys_->SetColorSpace(COLOR_SPACE_UNKNOWN);
3910 }
3911
3912 /*
3913 * Feature: Camera base function
3914 * Function: Test errorCode
3915 * SubFunction: NA
3916 * FunctionPoints: NA
3917 * EnvConditions: NA
3918 * CaseDescription: test IsSessionCommited() || IsSessionConfiged() with abnormal branches
3919 */
3920 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_091, TestSize.Level0)
3921 {
3922 CreateNormalSession();
3923 sptr<PhotoOutput> photoOutput1 = CreatePhotoOutput(photoProfiles_[0]);
3924 ASSERT_NE(photoOutput1, nullptr);
3925 auto photoOutput = static_cast<PhotoOutput*>(photoOutput1.GetRefPtr());
3926 photoOutput->ConfirmCapture();
3927 photoOutput->SetSession(nullptr);
3928 photoOutput->ConfirmCapture();
3929 photoOutput->SetSession(captureSession_);
3930
3931 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
3932 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
3933 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
3934 ASSERT_NE(previewOutput, nullptr);
3935 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
3936 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
3937 photoOutput->ConfirmCapture();
3938 }
3939
3940 /*
3941 * Feature: Camera base function
3942 * Function: Test anomalous branch.
3943 * SubFunction: NA
3944 * FunctionPoints: NA
3945 * EnvConditions: NA
3946 * CaseDescription: Test GetMetaSetting with existing metaTag.
3947 */
3948 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_092, TestSize.Level1)
3949 {
3950 sptr<CameraInput> camInput = (sptr<CameraInput>&)cameraInput_;
3951
3952 std::shared_ptr<camera_metadata_item_t> metadataItem = nullptr;
3953 metadataItem = camInput->GetMetaSetting(OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS);
3954 ASSERT_NE(metadataItem, nullptr);
3955
3956 std::vector<vendorTag_t> infos = {};
3957 camInput->GetCameraAllVendorTags(infos);
3958
3959 sptr<ICameraDeviceService> deviceObj = camInput->GetCameraDevice();
3960 ASSERT_NE(deviceObj, nullptr);
3961
3962 sptr<CameraDevice> camdeviceObj = nullptr;
3963 sptr<CameraInput> camInput_1 = new (std::nothrow) CameraInput(deviceObj, camdeviceObj);
3964 ASSERT_NE(camInput_1, nullptr);
3965
3966 metadataItem = camInput_1->GetMetaSetting(OHOS_ABILITY_STREAM_AVAILABLE_BASIC_CONFIGURATIONS);
3967 EXPECT_EQ(metadataItem, nullptr);
3968
3969 metadataItem = camInput->GetMetaSetting(-1);
3970 EXPECT_EQ(metadataItem, nullptr);
3971
3972 std::shared_ptr<OHOS::Camera::CameraMetadata> metadata = cameraDevices_[0]->GetMetadata();
3973
3974 std::string cameraId = cameraDevices_[0]->GetID();
3975 sptr<CameraDevice> camdeviceObj_2 = new (std::nothrow) CameraDevice(cameraId, metadata);
3976 ASSERT_NE(camdeviceObj_2, nullptr);
3977 }
3978
3979 /*
3980 * Feature: Camera base function
3981 * Function: Test anomalous branch.
3982 * SubFunction: NA
3983 * FunctionPoints: NA
3984 * EnvConditions: NA
3985 * CaseDescription: Test Torch with anomalous branch.
3986 */
3987 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_093, TestSize.Level1)
3988 {
3989 EXPECT_EQ(cameraInput_->Close(), SUCCESS);
3990 cameraInput_ = nullptr;
3991 WAIT(DURATION_AFTER_DEVICE_CLOSE);
3992 if (!(cameraManager_->IsTorchSupported())) {
3993 GTEST_SKIP();
3994 }
3995
3996 sptr<CameraManager> camManagerObj = CameraManager::GetInstance();
3997 auto torchCallback = std::make_shared<TestTorchListener>();
3998 camManagerObj->RegisterTorchListener(torchCallback);
3999 EXPECT_EQ(camManagerObj->IsTorchModeSupported(TORCH_MODE_AUTO), false);
4000 EXPECT_EQ(camManagerObj->SetTorchMode(TORCH_MODE_AUTO), OPERATION_NOT_ALLOWED);
4001
4002 EXPECT_EQ(camManagerObj->IsTorchModeSupported(TORCH_MODE_ON), true);
4003 EXPECT_EQ(camManagerObj->SetTorchMode(TORCH_MODE_ON), SUCCESS);
4004 WAIT(DURATION_WAIT_CALLBACK);
4005
4006 EXPECT_EQ(camManagerObj->IsTorchModeSupported(TORCH_MODE_OFF), true);
4007 EXPECT_EQ(camManagerObj->SetTorchMode(TORCH_MODE_OFF), SUCCESS);
4008 WAIT(DURATION_WAIT_CALLBACK);
4009
4010 camManagerObj->SetServiceProxy(nullptr);
4011 EXPECT_EQ(camManagerObj->SetTorchMode(TORCH_MODE_OFF), SERVICE_FATL_ERROR);
4012
4013 camManagerObj->InitCameraManager();
4014 }
4015
4016 /*
4017 * Feature: Camera base function
4018 * Function: Test Metadata
4019 * SubFunction: NA
4020 * FunctionPoints: NA
4021 * EnvConditions: NA
4022 * CaseDescription: Test Metadata
4023 */
4024 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_094, TestSize.Level1)
4025 {
4026 CreateNormalSession();
4027 EXPECT_EQ(captureSession_->BeginConfig(), 0);
4028 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4029
4030 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4031 ASSERT_NE(previewOutput, nullptr);
4032 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4033
4034 sptr<CaptureOutput> metadatOutput = cameraManager_->CreateMetadataOutput();
4035 ASSERT_NE(metadatOutput, nullptr);
4036 EXPECT_EQ(captureSession_->AddOutput(metadatOutput), SUCCESS);
4037
4038 sptr<MetadataOutput> metaOutput = (sptr<MetadataOutput>&)metadatOutput;
4039 std::vector<MetadataObjectType> metadataObjectTypes = metaOutput->GetSupportedMetadataObjectTypes();
4040 if (metadataObjectTypes.size() == 0) {
4041 GTEST_SKIP();
4042 }
4043
4044 metaOutput->SetCapturingMetadataObjectTypes(std::vector<MetadataObjectType> { MetadataObjectType::FACE });
4045
4046 std::shared_ptr<MetadataObjectCallback> metadataObjectCallback =
4047 std::make_shared<TestMetadataOutputObjectCallback>("");
4048 metaOutput->SetCallback(metadataObjectCallback);
4049 std::shared_ptr<MetadataStateCallback> metadataStateCallback =
4050 std::make_shared<TestMetadataStateCallback>();
4051 metaOutput->SetCallback(metadataStateCallback);
4052
4053 pid_t pid = 0;
4054 metaOutput->CameraServerDied(pid);
4055 }
4056
4057 /*
4058 * Feature: Camera base function
4059 * Function: Test Metadata
4060 * SubFunction: NA
4061 * FunctionPoints: NA
4062 * EnvConditions: NA
4063 * CaseDescription: Test Metadata
4064 */
4065 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_095, TestSize.Level1)
4066 {
4067 CreateNormalSession();
4068 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4069 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4070
4071 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4072 ASSERT_NE(previewOutput, nullptr);
4073 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4074
4075 sptr<CaptureOutput> metadatOutput = cameraManager_->CreateMetadataOutput();
4076 ASSERT_NE(metadatOutput, nullptr);
4077 EXPECT_EQ(captureSession_->AddOutput(metadatOutput), 0);
4078
4079 sptr<MetadataOutput> metaOutput = (sptr<MetadataOutput>&)metadatOutput;
4080 std::vector<MetadataObjectType> metadataObjectTypes = metaOutput->GetSupportedMetadataObjectTypes();
4081 if (metadataObjectTypes.size() == 0) {
4082 GTEST_SKIP();
4083 }
4084
4085 metaOutput->SetCapturingMetadataObjectTypes(std::vector<MetadataObjectType> {});
4086 }
4087
4088
4089 /*
4090 * Feature: Camera base function
4091 * Function: Test the capture session with HighQualityPhoto.
4092 * SubFunction: NA
4093 * FunctionPoints: NA
4094 * EnvConditions: NA
4095 * CaseDescription: Test the capture session with HighQualityPhoto.
4096 */
4097 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_096, TestSize.Level1)
4098 {
4099 CreateNormalSession();
4100 EXPECT_EQ(captureSession_->EnableAutoHighQualityPhoto(false), SUCCESS);
4101
4102 sptr<PhotoOutput> photoOutput;
4103 sptr<VideoOutput> videoOutput;
4104 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
4105
4106 EXPECT_EQ(captureSession_->EnableAutoHighQualityPhoto(true), SUCCESS);
4107 int32_t isSupported = false;
4108 EXPECT_EQ(photoOutput->IsAutoHighQualityPhotoSupported(isSupported), SUCCESS);
4109 EXPECT_EQ(photoOutput->EnableAutoHighQualityPhoto(true), INVALID_ARGUMENT);
4110
4111 StartDefaultCaptureOutput(photoOutput, videoOutput);
4112
4113 EXPECT_EQ(photoOutput->Release(), SUCCESS);
4114 EXPECT_EQ(photoOutput->IsAutoHighQualityPhotoSupported(isSupported), SESSION_NOT_RUNNING);
4115 EXPECT_EQ(photoOutput->EnableAutoHighQualityPhoto(true), SESSION_NOT_RUNNING);
4116 }
4117
4118 /*
4119 * Feature: Camera base function
4120 * Function: Test camera rotation func.
4121 * SubFunction: NA
4122 * FunctionPoints: NA
4123 * EnvConditions: NA
4124 * CaseDescription: Test camera rotation func.
4125 */
4126 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_097, TestSize.Level0)
4127 {
4128 CreateNormalSession();
4129 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4130 ASSERT_NE(previewOutput, nullptr);
4131 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
4132 ASSERT_NE(photoOutput, nullptr);
4133 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
4134 ASSERT_NE(videoOutput, nullptr);
4135
4136 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4137 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4138 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4139 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
4140 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
4141
4142 int32_t previewRotation = previewOutput->GetPreviewRotation(PhotoCaptureSetting::RotationConfig::Rotation_0);
4143 int32_t videoRotation = videoOutput->GetVideoRotation(PhotoCaptureSetting::RotationConfig::Rotation_90);
4144 int32_t photoRotation = photoOutput->GetPhotoRotation(PhotoCaptureSetting::RotationConfig::Rotation_180);
4145 EXPECT_EQ(videoRotation, PhotoCaptureSetting::RotationConfig::Rotation_180);
4146 EXPECT_EQ(previewOutput->SetPreviewRotation(previewRotation, false), SUCCESS);
4147 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
4148 photoSetting->SetRotation(static_cast<PhotoCaptureSetting::RotationConfig>(photoRotation));
4149
4150 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
4151 EXPECT_EQ(captureSession_->Start(), SUCCESS);
4152 WAIT(DURATION_AFTER_SESSION_START);
4153 EXPECT_EQ(videoOutput->Start(), SUCCESS);
4154 WAIT(DURATION_DURING_RECORDING);
4155 EXPECT_EQ(photoOutput->Capture(photoSetting), SUCCESS);
4156 WAIT(DURATION_AFTER_CAPTURE);
4157 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
4158 WAIT(DURATION_AFTER_RECORDING);
4159 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
4160 }
4161
4162 /*
4163 * Feature: Camera base function
4164 * Function: Test snapshot.
4165 * SubFunction: NA
4166 * FunctionPoints: NA
4167 * EnvConditions: NA
4168 * CaseDescription: Test snapshot.
4169 */
4170 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_098, TestSize.Level1)
4171 {
4172 CreateNormalSession();
4173 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4174 ASSERT_NE(previewOutput, nullptr);
4175 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
4176 ASSERT_NE(photoOutput, nullptr);
4177 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
4178 ASSERT_NE(videoOutput, nullptr);
4179
4180 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4181 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4182 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4183 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
4184 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
4185 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
4186 EXPECT_EQ(captureSession_->Start(), SUCCESS);
4187 WAIT(DURATION_AFTER_SESSION_START);
4188 EXPECT_EQ(videoOutput->Start(), SUCCESS);
4189 WAIT(DURATION_DURING_RECORDING);
4190 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
4191 WAIT(DURATION_AFTER_CAPTURE);
4192 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
4193 WAIT(DURATION_AFTER_RECORDING);
4194 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
4195 }
4196
4197 /*
4198 * Feature: Camera base function
4199 * Function: Test snapshot with location setting.
4200 * SubFunction: NA
4201 * FunctionPoints: NA
4202 * EnvConditions: NA
4203 * CaseDescription: Test snapshot with location setting.
4204 */
4205 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_099, TestSize.Level1)
4206 {
4207 CreateNormalSession();
4208 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4209 ASSERT_NE(previewOutput, nullptr);
4210 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
4211 ASSERT_NE(photoOutput, nullptr);
4212 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
4213 ASSERT_NE(videoOutput, nullptr);
4214
4215 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4216 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4217 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4218 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
4219 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
4220 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
4221 EXPECT_EQ(captureSession_->Start(), SUCCESS);
4222 WAIT(DURATION_AFTER_SESSION_START);
4223
4224 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
4225 std::shared_ptr<Location> location = std::make_shared<Location>();
4226 location->latitude = 12.972442;
4227 location->longitude = 77.580643;
4228 location->altitude = 0;
4229 photoSetting->SetLocation(location);
4230
4231 EXPECT_EQ(videoOutput->Start(), SUCCESS);
4232 WAIT(DURATION_DURING_RECORDING);
4233 EXPECT_EQ(photoOutput->Capture(photoSetting), SUCCESS);
4234 WAIT(DURATION_AFTER_CAPTURE);
4235 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
4236 WAIT(DURATION_AFTER_RECORDING);
4237 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
4238 }
4239
4240 /*
4241 * Feature: Camera base function
4242 * Function: Test snapshot with mirror setting.
4243 * SubFunction: NA
4244 * FunctionPoints: NA
4245 * EnvConditions: NA
4246 * CaseDescription: Test snapshot with mirror setting.
4247 */
4248 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_100, TestSize.Level0)
4249 {
4250 CreateNormalSession();
4251 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4252 ASSERT_NE(previewOutput, nullptr);
4253 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
4254 ASSERT_NE(photoOutput, nullptr);
4255 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
4256 ASSERT_NE(videoOutput, nullptr);
4257
4258 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4259 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4260 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4261 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
4262 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
4263 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
4264 EXPECT_EQ(captureSession_->Start(), SUCCESS);
4265 WAIT(DURATION_AFTER_SESSION_START);
4266 EXPECT_EQ(videoOutput->Start(), SUCCESS);
4267 WAIT(DURATION_DURING_RECORDING);
4268 EXPECT_EQ(photoOutput->Capture(), SUCCESS);
4269 WAIT(DURATION_AFTER_CAPTURE);
4270 EXPECT_EQ(videoOutput->Stop(), SUCCESS);
4271 WAIT(DURATION_AFTER_RECORDING);
4272 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
4273
4274 if (cameraDevices_.size() <= 1) {
4275 MEDIA_ERR_LOG("The current device only has a camera and cannot switch cameras");
4276 GTEST_SKIP();
4277 }
4278 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4279 EXPECT_EQ(captureSession_->RemoveInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4280 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4281 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
4282 EXPECT_EQ(captureSession_->RemoveOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
4283 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
4284 cameraInput_ = nullptr;
4285 WAIT(DURATION_AFTER_DEVICE_CLOSE);
4286
4287 sptr<CameraInput> frontCameraInput = cameraManager_->CreateCameraInput(cameraDevices_[deviceFrontIndex]);
4288 ASSERT_NE(frontCameraInput, nullptr);
4289 EXPECT_EQ(frontCameraInput->Open(), SUCCESS);
4290 UpdateCameraOutputCapability(deviceFrontIndex);
4291
4292 Profile profile;
4293 profile.size_ = {PRVIEW_WIDTH_640, PRVIEW_HEIGHT_480};
4294 profile.format_ = CAMERA_FORMAT_YUV_420_SP;
4295 sptr<PreviewOutput> frontPreviewOutput = CreatePreviewOutput(profile);
4296 ASSERT_NE(frontPreviewOutput, nullptr);
4297 sptr<PhotoOutput> frontPhotoOutput = CreatePhotoOutput(photoProfiles_[0]);
4298 ASSERT_NE(frontPhotoOutput, nullptr);
4299 sptr<VideoOutput> frontVideoOutput = CreateVideoOutput(videoProfiles_[0]);
4300 ASSERT_NE(frontVideoOutput, nullptr);
4301 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)frontCameraInput), SUCCESS);
4302 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)frontPreviewOutput), SUCCESS);
4303 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)frontPhotoOutput), SUCCESS);
4304 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)frontVideoOutput), SUCCESS);
4305 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
4306
4307 EXPECT_EQ(captureSession_->Start(), SUCCESS);
4308 WAIT(DURATION_AFTER_SESSION_START);
4309 EXPECT_EQ(frontVideoOutput->Start(), SUCCESS);
4310 WAIT(DURATION_DURING_RECORDING);
4311 if (frontPhotoOutput->IsMirrorSupported()) {
4312 std::shared_ptr<PhotoCaptureSetting> photoSetting = std::make_shared<PhotoCaptureSetting>();
4313 photoSetting->SetMirror(true);
4314 EXPECT_EQ(frontPhotoOutput->Capture(photoSetting), SUCCESS);
4315 } else {
4316 EXPECT_EQ(frontPhotoOutput->Capture(), SUCCESS);
4317 }
4318 WAIT(DURATION_AFTER_CAPTURE);
4319 EXPECT_EQ(frontVideoOutput->Stop(), SUCCESS);
4320 WAIT(DURATION_AFTER_RECORDING);
4321 EXPECT_EQ(captureSession_->Stop(), SUCCESS);
4322
4323 EXPECT_EQ(frontCameraInput->Release(), SUCCESS);
4324 WAIT(DURATION_AFTER_DEVICE_CLOSE);
4325 }
4326
4327 /*
4328 * Feature: Camera base function
4329 * Function: Test SetExposureBias && GetFeaturesMode && SetBeautyValue && GetSubFeatureMods
4330 * SubFunction: NA
4331 * FunctionPoints: NA
4332 * EnvConditions: NA
4333 * CaseDescription: test SetExposureBias && GetFeaturesMode && SetBeautyValue && GetSubFeatureMods
4334 */
4335 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_101, TestSize.Level1)
4336 {
4337 CreateNormalSession();
4338 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4339 ASSERT_NE(previewOutput, nullptr);
4340
4341 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4342 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4343 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4344 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
4345
4346 captureSession_->LockForControl();
4347 EXPECT_EQ(captureSession_->SetExposureBias(100.0f), CameraErrorCode::SUCCESS);
4348 captureSession_->UnlockForControl();
4349
4350 captureSession_->isSetMacroEnable_ = true;
4351 captureSession_->currentMode_ = SceneMode::VIDEO;
4352
4353 SceneFeaturesMode videoMacroMode(SceneMode::VIDEO, { SceneFeature::FEATURE_MACRO });
4354 bool isMatchSubFeatureMode = false;
4355 auto vec = captureSession_->GetSubFeatureMods();
4356 for (auto& sceneFeaturesMode : vec) {
4357 if (sceneFeaturesMode == videoMacroMode) {
4358 isMatchSubFeatureMode = true;
4359 break;
4360 }
4361 }
4362 EXPECT_TRUE(isMatchSubFeatureMode);
4363
4364 auto mode = captureSession_->GetFeaturesMode();
4365 EXPECT_TRUE(mode == videoMacroMode);
4366
4367 captureSession_->currentMode_ = SceneMode::CAPTURE;
4368 mode = captureSession_->GetFeaturesMode();
4369 SceneFeaturesMode captureMacroMode(SceneMode::CAPTURE, { SceneFeature::FEATURE_MACRO });
4370 EXPECT_TRUE(mode == captureMacroMode);
4371
4372 isMatchSubFeatureMode = false;
4373 vec = captureSession_->GetSubFeatureMods();
4374 for (auto& sceneFeaturesMode : vec) {
4375 if (sceneFeaturesMode == captureMacroMode) {
4376 isMatchSubFeatureMode = true;
4377 break;
4378 }
4379 }
4380 EXPECT_TRUE(isMatchSubFeatureMode);
4381
4382 bool boolResult = captureSession_->SetBeautyValue(BeautyType::SKIN_TONE, 0);
4383 EXPECT_FALSE(boolResult);
4384 }
4385
4386 /*
4387 * Feature: Camera base function
4388 * Function: Test anomalous branch
4389 * SubFunction: NA
4390 * FunctionPoints: NA
4391 * EnvConditions: NA
4392 * CaseDescription: test service callback with anomalous branch
4393 */
4394 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_102, TestSize.Level1)
4395 {
4396 std::string cameraIdtest = "";
4397 int32_t status = static_cast<int32_t>(FlashStatus::FLASH_STATUS_OFF);
4398
4399 auto statusListenerManager = cameraManager_->GetCameraStatusListenerManager();
4400 ASSERT_NE(statusListenerManager, nullptr);
4401 EXPECT_EQ(statusListenerManager->OnFlashlightStatusChanged(cameraIdtest, status), CAMERA_OK);
4402
4403 sptr<CameraDeviceServiceCallback> camDeviceSvcCallback = new (std::nothrow) CameraDeviceServiceCallback();
4404 ASSERT_NE(camDeviceSvcCallback, nullptr);
4405 EXPECT_EQ(camDeviceSvcCallback->OnError(CAMERA_DEVICE_PREEMPTED, 0), CAMERA_OK);
4406
4407 std::shared_ptr<OHOS::Camera::CameraMetadata> result = nullptr;
4408 EXPECT_EQ(camDeviceSvcCallback->OnResult(0, result), CAMERA_INVALID_ARG);
4409
4410 sptr<ICameraDeviceService> deviceObj = cameraInput_->GetCameraDevice();
4411 ASSERT_NE(deviceObj, nullptr);
4412
4413 sptr<CameraDevice> camdeviceObj = nullptr;
4414 sptr<CameraInput> camInput_1 = new (std::nothrow) CameraInput(deviceObj, camdeviceObj);
4415 ASSERT_NE(camInput_1, nullptr);
4416
4417 camDeviceSvcCallback = nullptr;
4418 camDeviceSvcCallback = new (std::nothrow) CameraDeviceServiceCallback(camInput_1);
4419 ASSERT_NE(camDeviceSvcCallback, nullptr);
4420 EXPECT_EQ(camDeviceSvcCallback->OnResult(0, result), CAMERA_INVALID_ARG);
4421
4422 sptr<CameraInput> camInput_2 = new (std::nothrow) CameraInput(deviceObj, cameraDevices_[0]);
4423 ASSERT_NE(camInput_2, nullptr);
4424 camDeviceSvcCallback = nullptr;
4425 camDeviceSvcCallback = new (std::nothrow) CameraDeviceServiceCallback(camInput_2);
4426 ASSERT_NE(camDeviceSvcCallback, nullptr);
4427 EXPECT_EQ(camDeviceSvcCallback->OnError(CAMERA_DEVICE_PREEMPTED, 0), CAMERA_OK);
4428
4429 auto callback = std::make_shared<TestDeviceCallback>("");
4430 camInput_2->SetErrorCallback(callback);
4431
4432 camDeviceSvcCallback = nullptr;
4433 camDeviceSvcCallback = new (std::nothrow) CameraDeviceServiceCallback(camInput_2);
4434 ASSERT_NE(camDeviceSvcCallback, nullptr);
4435 EXPECT_EQ(camDeviceSvcCallback->OnError(CAMERA_DEVICE_PREEMPTED, 0), CAMERA_OK);
4436
4437 callback = nullptr;
4438 camInput_2->SetErrorCallback(callback);
4439 }
4440
4441 /*
4442 * Feature: Camera base function
4443 * Function: Test anomalous branch
4444 * SubFunction: NA
4445 * FunctionPoints: NA
4446 * EnvConditions: NA
4447 * CaseDescription: test capture session callback error with anomalous branch
4448 */
4449 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_103, TestSize.Level1)
4450 {
4451 CreateNormalSession();
4452 sptr<CaptureSessionCallback> capSessionCallback = new (std::nothrow) CaptureSessionCallback();
4453 ASSERT_NE(capSessionCallback, nullptr);
4454 EXPECT_EQ(capSessionCallback->OnError(CAMERA_DEVICE_PREEMPTED), CAMERA_OK);
4455 capSessionCallback = nullptr;
4456 capSessionCallback = new (std::nothrow) CaptureSessionCallback(captureSession_);
4457 ASSERT_NE(capSessionCallback, nullptr);
4458 EXPECT_EQ(capSessionCallback->OnError(CAMERA_DEVICE_PREEMPTED), CAMERA_OK);
4459
4460 std::shared_ptr<TestSessionCallback> callback = nullptr;
4461 captureSession_->SetCallback(callback);
4462
4463 callback = std::make_shared<TestSessionCallback>();
4464 ASSERT_NE(callback, nullptr);
4465 captureSession_->SetCallback(callback);
4466 capSessionCallback = nullptr;
4467 capSessionCallback = new (std::nothrow) CaptureSessionCallback(captureSession_);
4468 ASSERT_NE(capSessionCallback, nullptr);
4469 EXPECT_EQ(capSessionCallback->OnError(CAMERA_DEVICE_PREEMPTED), CAMERA_OK);
4470 }
4471
4472 /*
4473 * Feature: Camera base function
4474 * Function: Test OnSketchStatusChanged
4475 * SubFunction: NA
4476 * FunctionPoints: NA
4477 * EnvConditions: NA
4478 * CaseDescription: test PreviewOutputCallbackImpl:OnSketchStatusChanged with abnormal branches
4479 */
4480 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_104, TestSize.Level1)
4481 {
4482 CreateNormalSession();
4483 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4484 ASSERT_NE(previewOutput, nullptr);
4485 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4486 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4487 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4488
4489 auto previewOutputListenerManager = previewOutput->GetPreviewOutputListenerManager();
4490 ASSERT_NE(previewOutputListenerManager, nullptr);
4491 EXPECT_EQ(previewOutputListenerManager->OnSketchStatusChanged(SketchStatus::STOPED), CAMERA_OK);
4492
4493 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
4494 }
4495
4496 /*
4497 * Feature: Camera base function
4498 * Function: Test anomalous branch.
4499 * SubFunction: NA
4500 * FunctionPoints: NA
4501 * EnvConditions: NA
4502 * CaseDescription: Test captureCallback with anomalous branch.
4503 */
4504 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_105, TestSize.Level1)
4505 {
4506 CreateNormalSession();
4507 auto captureCallback = std::make_shared<HStreamCaptureCallbackImpl>(nullptr);
4508
4509 int32_t captureId = 2001;
4510 EXPECT_EQ(captureCallback->OnCaptureStarted(captureId), CAMERA_OK);
4511 int32_t frameCount = 0;
4512 EXPECT_EQ(captureCallback->OnCaptureEnded(captureId, frameCount), CAMERA_OK);
4513 int32_t errorCode = 0;
4514 EXPECT_EQ(captureCallback->OnCaptureError(captureId, errorCode), CAMERA_OK);
4515 uint64_t timestamp = 10;
4516 EXPECT_EQ(captureCallback->OnFrameShutter(captureId, timestamp), CAMERA_OK);
4517
4518 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4519 ASSERT_NE(previewOutput, nullptr);
4520 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
4521 ASSERT_NE(photoOutput, nullptr);
4522 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4523 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4524 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4525 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
4526
4527 std::shared_ptr<TestPhotoOutputCallback> callback = nullptr;
4528 photoOutput->SetCallback(callback);
4529
4530 callback = std::make_shared<TestPhotoOutputCallback>("");
4531 ASSERT_NE(callback, nullptr);
4532 photoOutput->SetCallback(callback);
4533 photoOutput->SetCallback(callback);
4534
4535 auto captureCallback2 = new (std::nothrow) HStreamCaptureCallbackImpl(photoOutput);
4536 ASSERT_NE(captureCallback2, nullptr);
4537
4538 EXPECT_EQ(captureCallback2->OnCaptureEnded(captureId, frameCount), CAMERA_OK);
4539 EXPECT_EQ(captureCallback2->OnCaptureError(captureId, errorCode), CAMERA_OK);
4540 EXPECT_EQ(captureCallback2->OnFrameShutter(captureId, timestamp), CAMERA_OK);
4541 }
4542
4543 /*
4544 * Feature: Camera base function
4545 * Function: Test anomalous branch
4546 * SubFunction: NA
4547 * FunctionPoints: NA
4548 * EnvConditions: NA
4549 * CaseDescription: test video output repeat callback with anomalous branch
4550 */
4551 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_106, TestSize.Level1)
4552 {
4553 CreateNormalSession();
4554 auto repeatCallback = std::make_shared<VideoOutputCallbackImpl>();
4555
4556 EXPECT_EQ(repeatCallback->OnFrameStarted(), CAMERA_OK);
4557 int32_t frameCount = 0;
4558 EXPECT_EQ(repeatCallback->OnFrameEnded(frameCount), CAMERA_OK);
4559 int32_t errorCode = 0;
4560 EXPECT_EQ(repeatCallback->OnFrameError(errorCode), CAMERA_OK);
4561
4562 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4563 ASSERT_NE(previewOutput, nullptr);
4564 sptr<VideoOutput> videoOutput = CreateVideoOutput(videoProfiles_[0]);
4565 ASSERT_NE(videoOutput, nullptr);
4566 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4567 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4568 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4569 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)videoOutput), SUCCESS);
4570
4571 std::shared_ptr<TestVideoOutputCallback> callback = nullptr;
4572 videoOutput->SetCallback(callback);
4573
4574 callback = std::make_shared<TestVideoOutputCallback>("");
4575 ASSERT_NE(callback, nullptr);
4576 videoOutput->SetCallback(callback);
4577 videoOutput->SetCallback(callback);
4578
4579 auto repeatCallback2 = new (std::nothrow) VideoOutputCallbackImpl(videoOutput);
4580 ASSERT_NE(repeatCallback2, nullptr);
4581
4582 EXPECT_EQ(repeatCallback2->OnFrameStarted(), CAMERA_OK);
4583 EXPECT_EQ(repeatCallback2->OnFrameEnded(frameCount), CAMERA_OK);
4584 EXPECT_EQ(repeatCallback2->OnFrameError(errorCode), CAMERA_OK);
4585 }
4586
4587 /*
4588 * Feature: Camera base function
4589 * Function: Test anomalous branch
4590 * SubFunction: NA
4591 * FunctionPoints: NA
4592 * EnvConditions: NA
4593 * CaseDescription: test focus distance the camera vwith abnormal setting branch
4594 */
4595 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_107, TestSize.Level1)
4596 {
4597 CreateSystemSession();
4598 float recnum = 0.0f;
4599 EXPECT_EQ(captureSessionForSys_->GetFocusDistance(recnum), 7400103);
4600 EXPECT_EQ(recnum, 0.0f);
4601
4602 captureSessionForSys_->LockForControl();
4603 float num = 1.0f;
4604 EXPECT_EQ(captureSessionForSys_->SetFocusDistance(num), 7400103);
4605 captureSessionForSys_->UnlockForControl();
4606
4607 sptr<PhotoOutput> photoOutput;
4608 sptr<VideoOutput> videoOutput;
4609 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
4610
4611 captureSessionForSys_->GetFocusDistance(recnum);
4612 EXPECT_EQ(recnum, 0.0f);
4613 captureSessionForSys_->LockForControl();
4614 EXPECT_EQ(captureSessionForSys_->SetFocusDistance(num), 0);
4615 captureSessionForSys_->UnlockForControl();
4616 captureSessionForSys_->GetFocusDistance(recnum);
4617 EXPECT_EQ(recnum, 1.0f);
4618
4619 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
4620 cameraInput_ = nullptr;
4621
4622 EXPECT_EQ(captureSessionForSys_->GetFocusDistance(recnum), 0);
4623 }
4624
4625 /*
4626 * Feature: Camera base function
4627 * Function: Test anomalous branch
4628 * SubFunction: NA
4629 * FunctionPoints: NA
4630 * EnvConditions: NA
4631 * CaseDescription: test CaptureSession GetZoomPointInfos with abnormal setting branch
4632 */
4633 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_108, TestSize.Level1)
4634 {
4635 CreateSystemSession();
4636 std::vector<ZoomPointInfo> zoomPointInfolist = {};
4637 EXPECT_EQ(captureSessionForSys_->GetZoomPointInfos(zoomPointInfolist), 7400103);
4638 EXPECT_EQ(zoomPointInfolist.empty(), true);
4639
4640 sptr<PhotoOutput> photoOutput;
4641 sptr<VideoOutput> videoOutput;
4642 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
4643
4644 EXPECT_EQ(captureSessionForSys_->GetZoomPointInfos(zoomPointInfolist), 0);
4645
4646 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
4647 cameraInput_ = nullptr;
4648
4649 EXPECT_EQ(captureSessionForSys_->GetZoomPointInfos(zoomPointInfolist), 0);
4650 }
4651
4652 /*
4653 * Feature: Camera base function
4654 * Function: Test anomalous branch
4655 * SubFunction: NA
4656 * FunctionPoints: NA
4657 * EnvConditions: NA
4658 * CaseDescription: test CaptureSession GetSensorExposureTime with abnormal setting branch
4659 */
4660 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_109, TestSize.Level1)
4661 {
4662 CreateNormalSession();
4663 std::vector<uint32_t> exposureTimeRange = {};
4664 EXPECT_EQ(captureSession_->GetSensorExposureTimeRange(exposureTimeRange), 7400103);
4665 EXPECT_EQ(exposureTimeRange.empty(), true);
4666
4667 uint32_t recSensorExposureTime = 0;
4668 EXPECT_EQ(captureSession_->GetSensorExposureTime(recSensorExposureTime), 7400103);
4669 EXPECT_EQ(recSensorExposureTime, 0);
4670
4671 captureSession_->LockForControl();
4672 uint32_t exposureTime = 1;
4673 EXPECT_EQ(captureSession_->SetSensorExposureTime(exposureTime), 7400103);
4674 captureSession_->UnlockForControl();
4675
4676 sptr<PhotoOutput> photoOutput;
4677 sptr<VideoOutput> videoOutput;
4678 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
4679
4680 if (captureSession_->GetSensorExposureTimeRange(exposureTimeRange) == 0) {
4681 captureSession_->LockForControl();
4682 EXPECT_EQ(captureSession_->SetSensorExposureTime(exposureTimeRange[0]), 0);
4683 captureSession_->UnlockForControl();
4684
4685 EXPECT_EQ(captureSession_->GetSensorExposureTime(recSensorExposureTime), 0);
4686
4687 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
4688 cameraInput_ = nullptr;
4689
4690 EXPECT_EQ(captureSession_->GetSensorExposureTimeRange(exposureTimeRange), 7400101);
4691
4692 EXPECT_EQ(captureSession_->GetSensorExposureTime(recSensorExposureTime), 7400101);
4693
4694 captureSession_->LockForControl();
4695 EXPECT_EQ(captureSession_ ->SetSensorExposureTime(exposureTimeRange[0]), 7400102);
4696 captureSession_->UnlockForControl();
4697 }
4698 }
4699
4700 /*
4701 * Feature: Camera base function
4702 * Function: Test anomalous branch
4703 * SubFunction: NA
4704 * FunctionPoints: NA
4705 * EnvConditions: NA
4706 * CaseDescription: test focus distance the camera with abnormal setting branch
4707 */
4708 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_110, TestSize.Level1)
4709 {
4710 CreateNormalSession();
4711 std::vector<WhiteBalanceMode> supportedWhiteBalanceModes = {};
4712 int32_t intResult = captureSession_->GetSupportedWhiteBalanceModes(supportedWhiteBalanceModes);
4713 EXPECT_EQ(intResult, 7400103);
4714 EXPECT_EQ(supportedWhiteBalanceModes.empty(), true);
4715
4716 bool isSupported = false;
4717 WhiteBalanceMode currMode = WhiteBalanceMode::AWB_MODE_OFF;
4718 intResult = captureSession_->IsWhiteBalanceModeSupported(currMode, isSupported);
4719 EXPECT_EQ(intResult, 7400103);
4720
4721 captureSession_->LockForControl();
4722 intResult = captureSession_->SetWhiteBalanceMode(currMode);
4723 EXPECT_EQ(intResult, 7400103);
4724 captureSession_->UnlockForControl();
4725
4726 WhiteBalanceMode retMode;
4727 intResult = captureSession_->GetWhiteBalanceMode(retMode);
4728 EXPECT_EQ(intResult, 7400103);
4729
4730 sptr<PhotoOutput> photoOutput;
4731 sptr<VideoOutput> videoOutput;
4732 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
4733
4734 captureSession_->GetSupportedWhiteBalanceModes(supportedWhiteBalanceModes);
4735 if (!supportedWhiteBalanceModes.empty()) {
4736 captureSession_->IsWhiteBalanceModeSupported(supportedWhiteBalanceModes[0], isSupported);
4737 ASSERT_EQ(isSupported, true);
4738 captureSession_->LockForControl();
4739 intResult = captureSession_->SetWhiteBalanceMode(supportedWhiteBalanceModes[0]);
4740 ASSERT_EQ(intResult, 0);
4741 captureSession_->UnlockForControl();
4742 WhiteBalanceMode currentMode;
4743 captureSession_->GetWhiteBalanceMode(currentMode);
4744 ASSERT_EQ(currentMode, supportedWhiteBalanceModes[0]);
4745 }
4746
4747 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
4748 cameraInput_ = nullptr;
4749
4750 intResult = captureSession_->GetSupportedWhiteBalanceModes(supportedWhiteBalanceModes);
4751 EXPECT_EQ(intResult, 0);
4752
4753 intResult = captureSession_->IsWhiteBalanceModeSupported(currMode, isSupported);
4754 EXPECT_EQ(intResult, 0);
4755 captureSession_->LockForControl();
4756 intResult = captureSession_->SetWhiteBalanceMode(currMode);
4757 EXPECT_EQ(intResult, 0);
4758 captureSession_->UnlockForControl();
4759
4760 intResult = captureSession_->GetWhiteBalanceMode(retMode);
4761 EXPECT_EQ(intResult, 0);
4762 }
4763
4764 /*
4765 * Feature: Camera base function
4766 * Function: Test anomalous branch
4767 * SubFunction: NA
4768 * FunctionPoints: NA
4769 * EnvConditions: NA
4770 * CaseDescription: test manaul WhiteBalance the cammera with abnormal setting branch
4771 */
4772 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_111, TestSize.Level1)
4773 {
4774 CreateNormalSession();
4775 std::vector<int32_t> manualWhiteBalanceRange = {};
4776 int32_t intResult = captureSession_->GetManualWhiteBalanceRange(manualWhiteBalanceRange);
4777 EXPECT_EQ(intResult, 7400103);
4778 EXPECT_EQ(manualWhiteBalanceRange.empty(), true);
4779
4780 bool isSupported = false;
4781 intResult = captureSession_->IsManualWhiteBalanceSupported(isSupported);
4782 EXPECT_EQ(intResult, 7400103);
4783
4784 int32_t wbValue = 0;
4785 captureSession_->LockForControl();
4786 intResult = captureSession_->SetManualWhiteBalance(wbValue);
4787 EXPECT_EQ(intResult, 7400103);
4788 captureSession_->UnlockForControl();
4789
4790 intResult = captureSession_->GetManualWhiteBalance(wbValue);
4791 EXPECT_EQ(intResult, 7400103);
4792
4793 sptr<PhotoOutput> photoOutput;
4794 sptr<VideoOutput> videoOutput;
4795 CreateAndConfigureDefaultCaptureOutput(photoOutput, videoOutput);
4796
4797 captureSession_->GetManualWhiteBalanceRange(manualWhiteBalanceRange);
4798 if (!manualWhiteBalanceRange.empty()) {
4799 captureSession_->IsManualWhiteBalanceSupported(isSupported);
4800 ASSERT_EQ(isSupported, true);
4801 captureSession_->LockForControl();
4802 intResult = captureSession_->SetManualWhiteBalance(manualWhiteBalanceRange[0]);
4803 captureSession_->UnlockForControl();
4804 captureSession_ ->GetManualWhiteBalance(wbValue);
4805 ASSERT_EQ(wbValue, manualWhiteBalanceRange[0]);
4806 }
4807
4808 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
4809 cameraInput_ = nullptr;
4810
4811 intResult = captureSession_->GetManualWhiteBalanceRange(manualWhiteBalanceRange);
4812 EXPECT_EQ(intResult, 0);
4813
4814 intResult = captureSession_->IsManualWhiteBalanceSupported(isSupported);
4815 EXPECT_EQ(intResult, 0);
4816 captureSession_->LockForControl();
4817 intResult = captureSession_->SetManualWhiteBalance(wbValue);
4818 EXPECT_EQ(intResult, 7400102);
4819 captureSession_->UnlockForControl();
4820
4821 intResult = captureSession_->GetManualWhiteBalance(wbValue);
4822 EXPECT_EQ(intResult, 0);
4823 }
4824
4825 /*
4826 * Feature: Camera base function
4827 * Function: Test anomalous branch
4828 * SubFunction: NA
4829 * FunctionPoints: NA
4830 * EnvConditions: NA
4831 * CaseDescription: Test abnormal branches with empty inputDevice and empty metadata
4832 */
4833 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_112, TestSize.Level1)
4834 {
4835 CreateSystemSession();
4836 std::vector<std::vector<float>> supportedPhysicalApertures;
4837 int32_t intResult = captureSessionForSys_->GetSupportedPhysicalApertures(supportedPhysicalApertures);
4838 EXPECT_EQ(intResult, 7400103);
4839 EXPECT_EQ(supportedPhysicalApertures.empty(), true);
4840
4841 float getAperture = 0.0f;
4842 intResult = captureSessionForSys_->GetPhysicalAperture(getAperture);
4843 EXPECT_EQ(intResult, 7400103);
4844 EXPECT_EQ(getAperture, 0.0f);
4845
4846 captureSessionForSys_->LockForControl();
4847 float setAperture = 1.0f;
4848 intResult = captureSessionForSys_->SetPhysicalAperture(setAperture);
4849 EXPECT_EQ(intResult, 7400103);
4850 captureSessionForSys_->UnlockForControl();
4851
4852 sptr<PhotoOutput> photoOutput;
4853 sptr<VideoOutput> videoOutput;
4854 CreateAndConfigureDefaultCaptureOutputForSys(photoOutput, videoOutput);
4855
4856 intResult = captureSessionForSys_->GetSupportedPhysicalApertures(supportedPhysicalApertures);
4857 EXPECT_EQ(intResult, 0);
4858 intResult = captureSessionForSys_->GetPhysicalAperture(getAperture);
4859 EXPECT_EQ(intResult, 0);
4860
4861 captureSessionForSys_->LockForControl();
4862 intResult = captureSessionForSys_->SetPhysicalAperture(setAperture);
4863 EXPECT_EQ(intResult, 0);
4864 captureSessionForSys_->UnlockForControl();
4865 intResult = captureSessionForSys_->GetPhysicalAperture(getAperture);
4866 EXPECT_EQ(intResult, 0);
4867
4868 EXPECT_EQ(cameraInput_->Release(), SUCCESS);
4869 cameraInput_ = nullptr;
4870
4871 intResult = captureSessionForSys_->GetSupportedPhysicalApertures(supportedPhysicalApertures);
4872 EXPECT_EQ(intResult, 0);
4873 intResult = captureSessionForSys_->GetPhysicalAperture(getAperture);
4874 EXPECT_EQ(intResult, 0);
4875 }
4876
4877 /*
4878 * Feature: Camera base function
4879 * Function: Test auto aigc photo
4880 * SubFunction: NA
4881 * FunctionPoints: NA
4882 * EnvConditions: NA
4883 * CaseDescription: test AutoAigcPhoto enable
4884 */
4885 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_113, TestSize.Level1)
4886 {
4887 CreateNormalSession();
4888 bool isEnabled = false;
4889 bool isAutoAigcPhotoSupported = false;
4890 EXPECT_EQ(captureSession_->EnableAutoAigcPhoto(isEnabled), SUCCESS);
4891
4892 sptr<PreviewOutput> previewOutput = CreatePreviewOutput(previewProfiles_[0]);
4893 ASSERT_NE(previewOutput, nullptr);
4894 sptr<PhotoOutput> photoOutput = CreatePhotoOutput(photoProfiles_[0]);
4895 ASSERT_NE(photoOutput, nullptr);
4896 EXPECT_EQ(photoOutput->IsAutoAigcPhotoSupported(isAutoAigcPhotoSupported), SERVICE_FATL_ERROR);
4897 EXPECT_EQ(photoOutput->EnableAutoAigcPhoto(isEnabled), SESSION_NOT_RUNNING);
4898
4899 EXPECT_EQ(captureSession_->BeginConfig(), SUCCESS);
4900 EXPECT_EQ(captureSession_->AddInput((sptr<CaptureInput>&)cameraInput_), SUCCESS);
4901 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)previewOutput), SUCCESS);
4902 EXPECT_EQ(captureSession_->AddOutput((sptr<CaptureOutput>&)photoOutput), SUCCESS);
4903 EXPECT_EQ(captureSession_->CommitConfig(), SUCCESS);
4904
4905 EXPECT_EQ(photoOutput->IsAutoAigcPhotoSupported(isAutoAigcPhotoSupported), SUCCESS);
4906 if (isAutoAigcPhotoSupported) {
4907 EXPECT_EQ(photoOutput->EnableAutoAigcPhoto(isEnabled), SUCCESS);
4908 }
4909
4910 EXPECT_EQ(photoOutput->Release(), SUCCESS);
4911 EXPECT_EQ(photoOutput->IsAutoAigcPhotoSupported(isAutoAigcPhotoSupported), SERVICE_FATL_ERROR);
4912 EXPECT_EQ(photoOutput->EnableAutoAigcPhoto(isEnabled), SESSION_NOT_RUNNING);
4913 }
4914
4915 /*
4916 * Feature: Camera base function
4917 * Function: Test the camera resetRssPriority function.
4918 * SubFunction: NA
4919 * FunctionPoints: NA
4920 * EnvConditions: NA
4921 * CaseDescription: Test the camera manager resetRssPriority function,
4922 * reset the camera rss/qos priority when camera al.
4923 */
4924 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_114, TestSize.Level0)
4925 {
4926 if (cameraManager_->IsPrelaunchSupported(cameraInput_->GetCameraDeviceInfo())) {
4927 MEDIA_INFO_LOG("The camera prelaunch function is supported");
4928
4929 std::string cameraId = cameraInput_->GetCameraId();
4930 ASSERT_NE(cameraId, "");
4931 int activeTime = 0;
4932 EffectParam effectParam = {0, 0, 0};
4933 EXPECT_EQ(cameraManager_->SetPrelaunchConfig(cameraId, RestoreParamTypeOhos::PERSISTENT_DEFAULT_PARAM_OHOS,
4934 activeTime, effectParam), SUCCESS);
4935 EXPECT_EQ(cameraManager_->PrelaunchCamera(0), SUCCESS);
4936 EXPECT_EQ(cameraManager_->PreSwitchCamera(cameraId), SUCCESS);
4937 EXPECT_EQ(cameraManager_->ResetRssPriority(), SUCCESS);
4938 } else {
4939 MEDIA_ERR_LOG("The camera prelaunch function is not supported");
4940 }
4941 }
4942
4943 /*
4944 * Feature: Camera base function
4945 * Function: Test CameraDevice
4946 * SubFunction: NA
4947 * FunctionPoints: NA
4948 * EnvConditions: NA
4949 * CaseDescription: test Constructor CameraDevice for null metadata
4950 */
4951 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_115, TestSize.Level0)
4952 {
4953 std::string cameraId = cameraDevices_[0]->GetID();
4954 dmDeviceInfo deviceInfo;
4955 std::shared_ptr<OHOS::Camera::CameraMetadata> metaData = nullptr;
4956 sptr<CameraDevice> cameraDevice = new (std::nothrow) CameraDevice(cameraId, deviceInfo, metaData);
4957 ASSERT_NE(cameraDevice, nullptr);
4958 }
4959
4960 /*
4961 * Feature: Camera base function
4962 * Function: Test isFindModuleTypeTag
4963 * SubFunction: NA
4964 * FunctionPoints: NA
4965 * EnvConditions: NA
4966 * CaseDescription: test CameraDevice isFindModuleTypeTag
4967 */
4968 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_116, TestSize.Level0)
4969 {
4970 std::string cameraId = cameraDevices_[0]->GetID();
4971 std::shared_ptr<OHOS::Camera::CameraMetadata> metaData = cameraDevices_[0]->GetMetadata();
4972 sptr<CameraDevice> cameraDevice = new (std::nothrow) CameraDevice(cameraId, metaData);
4973 ASSERT_NE(cameraDevice, nullptr);
4974 uint32_t tagId;
4975 bool res = cameraDevice->isFindModuleTypeTag(tagId);
4976 EXPECT_EQ(res, true);
4977 }
4978
4979 /*
4980 * Feature: Camera base function
4981 * Function: Test isFindModuleTypeTag
4982 * SubFunction: NA
4983 * FunctionPoints: NA
4984 * EnvConditions: NA
4985 * CaseDescription: test CameraDevice init
4986 */
4987 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_117, TestSize.Level0)
4988 {
4989 std::string cameraId = cameraDevices_[0]->GetID();
4990 std::shared_ptr<OHOS::Camera::CameraMetadata> metaData = cameraDevices_[0]->GetMetadata();
4991 sptr<CameraDevice> cameraDevice = new (std::nothrow) CameraDevice(cameraId, metaData);
4992 ASSERT_NE(cameraDevice, nullptr);
4993 common_metadata_header_t metadata {
4994 0,
4995 1,
4996 1,
4997 };
4998 cameraDevice->init(&metadata);
4999 EXPECT_NE(cameraDevice->cameraPosition_, CAMERA_POSITION_UNSPECIFIED);
5000 }
5001
5002 /*
5003 * Feature: Camera base function
5004 * Function: Test isFindModuleTypeTag
5005 * SubFunction: NA
5006 * FunctionPoints: NA
5007 * EnvConditions: NA
5008 * CaseDescription: test CameraDevice init
5009 */
5010 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_118, TestSize.Level0)
5011 {
5012 std::string cameraId = cameraDevices_[0]->GetID();
5013 std::shared_ptr<OHOS::Camera::CameraMetadata> metaData = cameraDevices_[0]->GetMetadata();
5014 sptr<CameraDevice> cameraDevice = new (std::nothrow) CameraDevice(cameraId, metaData);
5015 ASSERT_NE(cameraDevice, nullptr);
5016 cameraDevice->zoomRatioRange_ = {};
5017 std::vector<float> res = cameraDevice->GetZoomRatioRange();
5018 EXPECT_NE(res.size(), 0);
5019 }
5020
5021 /*
5022 * Feature: Camera base function
5023 * Function: Test isFindModuleTypeTag
5024 * SubFunction: NA
5025 * FunctionPoints: NA
5026 * EnvConditions: NA
5027 * CaseDescription: test CameraDevice init
5028 */
5029 HWTEST_F(CameraBaseFunctionModuleTest, camera_base_function_moduletest_119, TestSize.Level0)
5030 {
5031 std::string cameraId = cameraDevices_[0]->GetID();
5032 std::shared_ptr<OHOS::Camera::CameraMetadata> metaData = cameraDevices_[0]->GetMetadata();
5033 sptr<CameraDevice> cameraDevice = new (std::nothrow) CameraDevice(cameraId, metaData);
5034 ASSERT_NE(cameraDevice, nullptr);
5035 cameraDevice->isConcurrentLimted_ = 1;
5036 std::vector<float> res = cameraDevice->GetExposureBiasRange();
5037 EXPECT_NE(res.size(), 0);
5038 }
5039 } // namespace CameraStandard
5040 } // namespace OHOS