• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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