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