diff --git a/bundle.json b/bundle.json index ee8fdd26651ec9d51697290c2b2569bcf4327961..f4ff80745246e804507e16349b70dfb51fe89af4 100644 --- a/bundle.json +++ b/bundle.json @@ -129,6 +129,7 @@ "//foundation/multimedia/camera_framework/frameworks/native/camera/test/moduletest:camera_framework_moduletest", "//foundation/multimedia/camera_framework/frameworks/native/camera/test/unittest:camera_framework_unittest_v1_0", "//foundation/multimedia/camera_framework/frameworks/native/camera/test/unittest:camera_framework_unittest_v1_1", + "//foundation/multimedia/camera_framework/frameworks/native/camera/test/unittest:camera_ndk_unittest_v1_1", "//foundation/multimedia/camera_framework/test:camera_fuzz_test" ] } diff --git a/frameworks/native/camera/test/BUILD.gn b/frameworks/native/camera/test/BUILD.gn index 5042e3c999d660d59f0718bf31e5ed5fa7894fe0..63c53bed661c8f2f7237f43a518667a21f4d94fb 100644 --- a/frameworks/native/camera/test/BUILD.gn +++ b/frameworks/native/camera/test/BUILD.gn @@ -17,5 +17,6 @@ group("cameraframeworktest") { "moduletest:camera_framework_moduletest", "unittest:camera_framework_unittest_v1_0", "unittest:camera_framework_unittest_v1_1", + "unittest:camera_ndk_unittest_v1_1", ] } diff --git a/frameworks/native/camera/test/unittest/BUILD.gn b/frameworks/native/camera/test/unittest/BUILD.gn index 68d7ceca7288f7e7c4202c711f8bf6130dbeff61..95c8bc34a8de4d9a18200bb84acc61d035bd6900 100644 --- a/frameworks/native/camera/test/unittest/BUILD.gn +++ b/frameworks/native/camera/test/unittest/BUILD.gn @@ -142,3 +142,63 @@ ohos_unittest("camera_framework_unittest_v1_1") { cflags_cc = cflags } + +ohos_unittest("camera_ndk_unittest_v1_1") { + module_out_path = module_output_path + include_dirs = [ + "./include", + "${multimedia_camera_framework_path}/interfaces/kits/native/include", + "${multimedia_camera_framework_path}/interfaces/inner_api/native/test", + "${base_security_path}/interfaces/innerkits/accesstoken/include", + "${base_security_path}/interfaces/innerkits/token_setproc/include", + ] + + sources = [ + "${multimedia_camera_framework_path}/interfaces/inner_api/native/test/test_common.cpp", + "src/v1_1/camera_ndk_unittest.cpp", + ] + + deps = [ + "${graphic_2d_path}:libsurface", + "${multimedia_camera_framework_path}/frameworks/native/camera:camera_framework", + "${multimedia_camera_framework_path}/frameworks/native/ndk:camera_ndk", + "${multimedia_camera_framework_path}/services/camera_service:camera_service", + "${third_party_path}:gmock_main", + ] + + external_deps = [ + "access_token:libaccesstoken_sdk", + "access_token:libnativetoken", + "access_token:libprivacy_sdk", + "access_token:libtoken_setproc", + "c_utils:utils", + "drivers_interface_camera:libcamera_proxy_1.0", + "drivers_interface_camera:libcamera_proxy_1.1", + "drivers_interface_camera:metadata", + "drivers_peripheral_display:hdi_gralloc_client", + "hdf_core:libhdi", + "hilog:libhilog", + "hisysevent:libhisysevent", + "hitrace:hitrace_meter", + "image_framework:image_native", + "ipc:ipc_core", + "safwk:system_ability_fwk", + ] + + cflags = [ + "-fPIC", + "-Werror=unused", + ] + + include_dirs += [ + "${driver_peripheral_path}/interfaces/include", + "${driver_peripheral_path}/interfaces/hdi_ipc", + "${driver_peripheral_path}/interfaces/hdi_ipc/utils/include", + "${driver_peripheral_path}/interfaces/hdi_ipc/server/include", + "${driver_peripheral_path}/interfaces/hdi_ipc/callback/device/include", + "${driver_peripheral_path}/interfaces/hdi_ipc/callback/operator/include", + "${driver_peripheral_path}/interfaces/hdi_ipc/callback/host/include", + ] + + cflags_cc = cflags +} diff --git a/frameworks/native/camera/test/unittest/include/camera_ndk_unittest.h b/frameworks/native/camera/test/unittest/include/camera_ndk_unittest.h new file mode 100644 index 0000000000000000000000000000000000000000..0e1fe9a40247468805c8cc251a601a79c3e7a951 --- /dev/null +++ b/frameworks/native/camera/test/unittest/include/camera_ndk_unittest.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef CAMERA_NDK_UNITTEST_H +#define CAMERA_NDK_UNITTEST_H + +#include "gtest/gtest.h" +#include "camera/camera_manager.h" +#include +#include "camera/photo_output.h" + +#include "image_receiver.h" +#include "image_receiver_manager.h" +namespace OHOS { +namespace CameraStandard { +class MockStreamOperator; +class MockCameraDevice; +class MockHCameraHostManager; +class CameraNdkUnitTest : public testing::Test { +public: + static const int32_t PHOTO_DEFAULT_WIDTH = 1280; + static const int32_t PHOTO_DEFAULT_HEIGHT = 960; + static const int32_t PREVIEW_DEFAULT_WIDTH = 640; + static const int32_t PREVIEW_DEFAULT_HEIGHT = 480; + static const int32_t VIDEO_DEFAULT_WIDTH = 640; + static const int32_t VIDEO_DEFAULT_HEIGHT = 480; + + static const int32_t WAIT_TIME_AFTER_CAPTURE = 1; + static const int32_t WAIT_TIME_AFTER_START = 2; + static const int32_t WAIT_TIME_BEFORE_STOP = 1; + static const int32_t CAMERA_NUMBER = 2; + + Camera_Manager *cameraManager = nullptr; + Camera_Device *cameraDevice = nullptr; + uint32_t cameraDeviceSize = 0; + + std::shared_ptr imageReceiver; + /* SetUpTestCase:The preset action of the test suite is executed before the first TestCase */ + static void SetUpTestCase(void); + + /* TearDownTestCase:The test suite cleanup action is executed after the last TestCase */ + static void TearDownTestCase(void); + /* SetUp:Execute before each test case */ + void SetUp(); + void ReleaseImageReceiver(); + + /* TearDown:Execute after each test case */ + void TearDown(); + void SessionCommit(Camera_CaptureSession *captureSession); + void SessionControlParams(Camera_CaptureSession *captureSession); + Camera_PhotoOutput* CreatePhotoOutput(int32_t width = PHOTO_DEFAULT_WIDTH, int32_t height = PHOTO_DEFAULT_HEIGHT); + Camera_PreviewOutput* CreatePreviewOutput(int32_t width = PREVIEW_DEFAULT_WIDTH, + int32_t height = PREVIEW_DEFAULT_HEIGHT); + Camera_VideoOutput* CreateVideoOutput(int32_t width = VIDEO_DEFAULT_WIDTH, int32_t height = VIDEO_DEFAULT_HEIGHT); +}; +} // CameraStandard +} // OHOS +#endif // CAMERA_NDK_UNITTEST_H diff --git a/frameworks/native/camera/test/unittest/src/v1_1/camera_ndk_unittest.cpp b/frameworks/native/camera/test/unittest/src/v1_1/camera_ndk_unittest.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8f5a0ecfd88ecb358f01d39020cc91651c850f6b --- /dev/null +++ b/frameworks/native/camera/test/unittest/src/v1_1/camera_ndk_unittest.cpp @@ -0,0 +1,2189 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "camera_ndk_unittest.h" +#include "camera_log.h" +#include "test_common.h" +#include "ipc_skeleton.h" +#include "access_token.h" +#include "hap_token_info.h" +#include "accesstoken_kit.h" +#include "token_setproc.h" +#include "metadata_utils.h" +#include "nativetoken_kit.h" +#include "surface_utils.h" +using namespace testing::ext; + +namespace OHOS { +namespace CameraStandard { +static constexpr int32_t RECEIVER_TEST_WIDTH = 8192; +static constexpr int32_t RECEIVER_TEST_HEIGHT = 8; +static constexpr int32_t RECEIVER_TEST_CAPACITY = 8; +static constexpr int32_t RECEIVER_TEST_FORMAT = 4; +Camera_PhotoOutput* CameraNdkUnitTest::CreatePhotoOutput(int32_t width, int32_t height) +{ + Camera_Size photoSize = { + .width = width, + .height = height + }; + Camera_Format format = (Camera_Format)CAMERA_FORMAT_JPEG; + Camera_Profile photoProfile = { + .format = format, + .size = photoSize + }; + + //std::shared_ptr imageReceiver; + imageReceiver = Media::ImageReceiver ::CreateImageReceiver(RECEIVER_TEST_WIDTH,RECEIVER_TEST_HEIGHT,RECEIVER_TEST_FORMAT,RECEIVER_TEST_CAPACITY); + std::string receiverKey; + receiverKey=imageReceiver->iraContext_->GetReceiverKey(); + const char *surfaceId = nullptr; + surfaceId = receiverKey.c_str(); + Camera_PhotoOutput* photoOutput = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreatePhotoOutput(cameraManager, &photoProfile, surfaceId, &photoOutput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(photoOutput, nullptr); + return photoOutput; +} + +Camera_PreviewOutput* CameraNdkUnitTest::CreatePreviewOutput(int32_t width, int32_t height) +{ + Camera_Size previewSize = { + .width = width, + .height = height + }; + Camera_Format format = (Camera_Format)CAMERA_FORMAT_RGBA_8888; + Camera_Profile previewProfile = { + .format = format, + .size = previewSize + }; + sptr previewSurface = IConsumerSurface::Create(); + sptr previewProducer = previewSurface->GetProducer(); + sptr pSurface = Surface::CreateSurfaceAsProducer(previewProducer); + int64_t surfaceIdInt = previewProducer->GetUniqueId(); + string surfaceIdStr = std::to_string(surfaceIdInt); + const char *surfaceId = nullptr; + surfaceId = surfaceIdStr.c_str(); + SurfaceUtils::GetInstance()->Add(surfaceIdInt, pSurface); + EXPECT_NE(surfaceId, nullptr); + Camera_PreviewOutput* previewOutput = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreatePreviewOutput(cameraManager, &previewProfile, surfaceId, &previewOutput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(previewOutput, nullptr); + return previewOutput; +} + +Camera_VideoOutput* CameraNdkUnitTest::CreateVideoOutput(int32_t width, int32_t height) +{ + Camera_Size videoSize = { + .width = width, + .height = height + }; + Camera_Format format = (Camera_Format)CAMERA_FORMAT_RGBA_8888; + Camera_FrameRateRange videoRange = { + .min = 30, + .max = 30 + }; + Camera_VideoProfile videoProfile = { + .format = format, + .size = videoSize, + .range = videoRange + }; + sptr videoSurface = IConsumerSurface::Create(); + sptr videoProducer = videoSurface->GetProducer(); + sptr pSurface = Surface::CreateSurfaceAsProducer(videoProducer); + int64_t surfaceIdInt = videoProducer->GetUniqueId(); + string surfaceIdStr = std::to_string(surfaceIdInt); + const char *surfaceId = nullptr; + surfaceId = surfaceIdStr.c_str(); + SurfaceUtils::GetInstance()->Add(surfaceIdInt, pSurface); + Camera_VideoOutput* videoOutput = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateVideoOutput(cameraManager, &videoProfile, surfaceId, &videoOutput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(videoOutput, nullptr); + return videoOutput; +} + +void CameraNdkUnitTest::SessionCommit(Camera_CaptureSession *captureSession) +{ + Camera_ErrorCode ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Start(captureSession); + EXPECT_EQ(ret, 0); +} + +void CameraNdkUnitTest::SessionControlParams(Camera_CaptureSession *captureSession) +{ + float minZoom = 0.0f, maxZoom = 0.0f; + Camera_ErrorCode ret = OH_CaptureSession_GetZoomRatioRange(captureSession, &minZoom, &maxZoom); + EXPECT_EQ(ret, CAMERA_OK); + ASSERT_NE(minZoom, 0.0f); + ASSERT_NE(maxZoom, 0.0f); + + ret = OH_CaptureSession_SetZoomRatio(captureSession, minZoom); + EXPECT_EQ(ret, CAMERA_OK); + float minExposureBias = 0.0f, maxExposureBias = 0.0f, step = 0.0f; + ret = OH_CaptureSession_GetExposureBiasRange(captureSession, &minExposureBias, &maxExposureBias, &step); + EXPECT_EQ(ret, CAMERA_OK); + ASSERT_NE(minExposureBias, 0.0f); + ASSERT_NE(maxExposureBias, 0.0f); + ASSERT_NE(step, 0.0f); + + ret = OH_CaptureSession_SetExposureBias(captureSession, minExposureBias); + EXPECT_EQ(ret, CAMERA_OK); + Camera_FlashMode flash = (Camera_FlashMode)FLASH_MODE_ALWAYS_OPEN; + ret = OH_CaptureSession_SetFlashMode(captureSession, flash); + EXPECT_EQ(ret, CAMERA_OK); + Camera_FocusMode focus = (Camera_FocusMode)FOCUS_MODE_AUTO; + ret = OH_CaptureSession_SetFocusMode(captureSession, focus); + EXPECT_EQ(ret, CAMERA_OK); + Camera_ExposureMode exposure = (Camera_ExposureMode)EXPOSURE_MODE_AUTO; + ret = OH_CaptureSession_SetExposureMode(captureSession, exposure); + EXPECT_EQ(ret, CAMERA_OK); + + float zoom = 0.0f; + ret = OH_CaptureSession_GetZoomRatio(captureSession, &zoom); + EXPECT_EQ(ret, CAMERA_OK); + ASSERT_NE(zoom, 0.0f); + + float exposureBias = 0.0f; + ret = OH_CaptureSession_GetExposureBias(captureSession, &exposureBias); + EXPECT_EQ(ret, CAMERA_OK); + ASSERT_NE(exposureBias, 0.0f); + + ret = OH_CaptureSession_GetFlashMode(captureSession, &flash); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(flash, (Camera_FlashMode)FLASH_MODE_ALWAYS_OPEN); + + ret = OH_CaptureSession_GetFocusMode(captureSession, &focus); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(focus, (Camera_FocusMode)FOCUS_MODE_AUTO); + + ret = OH_CaptureSession_GetExposureMode(captureSession, &exposure); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(exposure, (Camera_ExposureMode)EXPOSURE_MODE_AUTO); +} +void CameraNdkUnitTest::SetUpTestCase(void) {} + +void CameraNdkUnitTest::TearDownTestCase(void) {} + +void CameraNdkUnitTest::SetUp() +{ + // set native token + uint64_t tokenId; + const char *perms[2]; + perms[0] = "ohos.permission.DISTRIBUTED_DATASYNC"; + perms[1] = "ohos.permission.CAMERA"; + NativeTokenInfoParams infoInstance = { + .dcapsNum = 0, + .permsNum = 2, + .aclsNum = 0, + .dcaps = NULL, + .perms = perms, + .acls = NULL, + .processName = "native_camera_tdd", + .aplStr = "system_basic", + }; + tokenId = GetAccessTokenId(&infoInstance); + SetSelfTokenID(tokenId); + OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo(); + + Camera_ErrorCode ret = OH_Camera_GetCameraMananger(&cameraManager); + EXPECT_EQ(ret, 0); + ret = OH_CameraManager_GetSupportedCameras(cameraManager, &cameraDevice, &cameraDeviceSize); + EXPECT_EQ(ret, 0); +} + +void CameraNdkUnitTest::TearDown() +{ +} +void CameraNdkUnitTest::ReleaseImageReceiver() +{ + if(imageReceiver!=nullptr) + { + std::string receiverKey; + receiverKey=imageReceiver->iraContext_->GetReceiverKey(); + Media::ImageReceiverManager::ReleaseReceiverById(receiverKey); + } +} + +static void CameraPreviewOutptOnFrameStartCb(Camera_PreviewOutput* previewOutput) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +static void CameraPreviewOutptOnFrameEndCb(Camera_PreviewOutput* previewOutput, int32_t frameCount) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +static void CameraPreviewOutptOnErrorCb(Camera_PreviewOutput* previewOutput, Camera_ErrorCode errorCode) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +static void CameraPhotoOutptOnFrameStartCb(Camera_PhotoOutput* photoOutput) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +static void CameraPhotoOutptOnFrameShutterCb(Camera_PhotoOutput* photoOutput, Camera_FrameShutterInfo* info) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +static void CameraPhotoOutptOnFrameEndCb(Camera_PhotoOutput* photoOutput, int32_t timestamp) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +static void CameraPhotoOutptOnErrorCb(Camera_PhotoOutput* photoOutput, Camera_ErrorCode errorCode) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +static void CameraVideoOutptOnFrameStartCb(Camera_VideoOutput* videoOutput) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +static void CameraVideoOutptOnFrameEndCb(Camera_VideoOutput* videoOutput, int32_t frameCount) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +static void CameraVideoOutptOnErrorCb(Camera_VideoOutput* videoOutput, Camera_ErrorCode errorCode) +{ + MEDIA_DEBUG_LOG("fun:%s", __FUNCTION__); +} + +/* + * Feature: Framework + * Function: Test Capture + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test Capture + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_001, TestSize.Level0) +{ + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Capture(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test capture session with commit config multiple times + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session with commit config multiple times + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_002, TestSize.Level0) +{ + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_NE(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test create preview output + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test create preview output + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_004, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret =CAMERA_OK; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_OutputCapability *OutputCapability = nullptr; + ret = OH_CameraManager_GetSupportedCameraOutputCapability(cameraManager, cameraDevice, &OutputCapability); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + + int32_t width =PREVIEW_DEFAULT_WIDTH; + int32_t height =PREVIEW_DEFAULT_HEIGHT; + Camera_Size previewSize = { + .width = width, + .height = height + }; + Camera_Format format = (Camera_Format)CAMERA_FORMAT_RGBA_8888; + Camera_Profile previewProfile = { + .format =format, + .size = previewSize + }; + + sptr previewSurface = IConsumerSurface::Create(); + sptr previewProducer = previewSurface->GetProducer(); + sptr pSurface = Surface::CreateSurfaceAsProducer(previewProducer); + int64_t surfaceIdInt = previewProducer->GetUniqueId(); + string surfaceIdStr = std::to_string(surfaceIdInt); + const char *surfaceId = nullptr; + surfaceId = surfaceIdStr.c_str(); + SurfaceUtils::GetInstance()->Add(surfaceIdInt, pSurface); + Camera_PreviewOutput* previewOutput = nullptr; + ret = OH_CameraManager_CreatePreviewOutput(cameraManager, &previewProfile, surfaceId, &previewOutput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + + EXPECT_EQ(OH_CameraInput_Open(cameraInput), CAMERA_OK); + EXPECT_EQ(OH_CaptureSession_AddInput(captureSession, cameraInput), 0); + EXPECT_EQ(OH_CaptureSession_CommitConfig(captureSession), 0); + + EXPECT_EQ(OH_PreviewOutput_Start(previewOutput), 0); + EXPECT_EQ(OH_PreviewOutput_Stop(previewOutput), 0); + EXPECT_EQ(OH_PreviewOutput_Release(previewOutput), CAMERA_OK); + EXPECT_EQ(OH_CameraInput_Release(cameraInput), 0); + EXPECT_EQ(OH_CaptureSession_Release(captureSession), 0); +} + +/* + * Feature: Framework + * Function: Test capture session start and stop preview multiple times + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session start and stop preview multiple times + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_006, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + + ret = OH_PreviewOutput_Start(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Stop(previewOutput); + EXPECT_EQ(ret, 0); + + ret = OH_PreviewOutput_Start(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Stop(previewOutput); + EXPECT_EQ(ret, 0); + + ret = OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); +} + +/* + * Feature: Framework + * Function: Test capture session start and stop video multiple times + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session start and stop video multiple times + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_007, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret=CAMERA_OK; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + ret = OH_CaptureSession_AddVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Start(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Stop(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Start(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Stop(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Release(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); +} + +/* + * Feature: Framework + * Function: Test video add preview and photo output, remove photo output, add video output + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test video add preview and photo output, remove photo output, add video output + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_008, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_RemovePhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Start(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Stop(videoOutput); + EXPECT_EQ(ret, 0); + + ret = OH_VideoOutput_Release(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test add preview,video and photo output, video start do capture + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test add preview video and photo output, video start do capture + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_009, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_AddVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + + ret = OH_VideoOutput_Start(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Stop(videoOutput); + EXPECT_EQ(ret, 0); + + ret = OH_PhotoOutput_Capture(photoOutput); + EXPECT_EQ(ret, 0); + + ret = OH_VideoOutput_Release(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test add preview and video output, commitconfig remove video Output, add photo output, take photo + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test add preview and video output, commitconfig remove video Output, add photo output, take photo + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_010, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_AddVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_RemoveVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + + ret = OH_PhotoOutput_Capture(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Release(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test add preview and video output, commitconfig remove video Output + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test do OH_CaptureSession_BeginConfig/OH_CaptureSession_CommitConfig again + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_013, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_RemoveVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Release(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); +} + +/* + * Feature: Framework + * Function: Test add preview and photo output, commitconfig remove photo Output + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test do OH_CaptureSession_BeginConfig/OH_CaptureSession_CommitConfig again + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_014, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + + Camera_PhotoOutput* photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_RemovePreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test add two preview output and use + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test add two preview output and use + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_017, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + Camera_PreviewOutput* previewOutput2 = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput2); + EXPECT_EQ(ret, 0); + + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + + ret = OH_PreviewOutput_Start(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Stop(previewOutput); + EXPECT_EQ(ret, 0); + + ret = OH_PreviewOutput_Start(previewOutput2); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Stop(previewOutput2); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Release(previewOutput2); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); +} + +/* + * Feature: Framework + * Function: Test capture session commit config without adding input + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session commit config without adding input + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_027, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_NE(ret, 0); + ret = OH_CaptureSession_RemovePhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test capture session commit config without adding output + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session commit config without adding output + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_028, TestSize.Level0) +{ + Camera_Input *cameraInput = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_NE(ret, 0); + ret = OH_CaptureSession_RemoveInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); +} + +/* + * Feature: Framework + * Function: Test capture session without begin config + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session without begin config + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_029, TestSize.Level0) +{ + Camera_Input *cameraInput = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_NE(ret, 0); + + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_NE(ret, 0); + + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_NE(ret, 0); + + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_NE(ret, 0); + + ret = OH_CaptureSession_Start(captureSession); + EXPECT_NE(ret, 0); + + ret = OH_PreviewOutput_Start(previewOutput); + EXPECT_NE(ret, 0); + + ret = OH_PhotoOutput_Capture(photoOutput); + EXPECT_NE(ret, 0); + + ret = OH_PreviewOutput_Stop(previewOutput); + EXPECT_NE(ret, 0); + + ret = OH_CaptureSession_Stop(captureSession); + EXPECT_NE(ret, 0); + + ret = OH_CaptureSession_RemovePhotoOutput(captureSession, photoOutput); + EXPECT_NE(ret, 0); + + ret = OH_CaptureSession_RemoveInput(captureSession, cameraInput); + EXPECT_NE(ret, 0); + + ret = OH_CaptureSession_RemovePreviewOutput(captureSession, previewOutput); + EXPECT_NE(ret, 0); + + ret = OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test capture session start and stop without adding preview output + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session start and stop without adding preview output + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_030, TestSize.Level0) +{ + Camera_Input *cameraInput = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Start(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Stop(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test session with preview + photo + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test session with preview + photo + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_031, TestSize.Level0) +{ + Camera_Input *cameraInput = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Start(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Capture(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Stop(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test session with preview + video + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test session with preview + video + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_033, TestSize.Level0) +{ + Camera_Input *cameraInput = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Start(previewOutput); + EXPECT_EQ(ret, 0); + sleep(WAIT_TIME_AFTER_START); + ret = OH_VideoOutput_Start(videoOutput); + EXPECT_EQ(ret, 0); + sleep(WAIT_TIME_AFTER_START); + ret = OH_VideoOutput_Stop(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Stop(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Release(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); +} + +/* + * Feature: Framework + * Function: Test capture session remove input with null + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session remove input with null + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_036, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + OH_CaptureSession_CommitConfig(captureSession); + OH_CaptureSession_Start(captureSession); + Camera_Input *cameraInputNull=nullptr; + ret = OH_CaptureSession_RemoveInput(captureSession, cameraInputNull); + EXPECT_NE(ret, 0); + ret =OH_CaptureSession_Stop(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); +} + +/* + * Feature: Framework + * Function: Test capture session remove input + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session remove input + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_037, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret =OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_RemoveInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret =OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); +} + +/* + * Feature: Framework + * Function: Test photo capture with photo settings + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test photo capture with photo settings + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_038, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + ret =OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + Camera_PhotoCaptureSetting capSettings; + capSettings.quality=QUALITY_LEVEL_MEDIUM; + capSettings.rotation=IAMGE_ROTATION_90; + ret =OH_PhotoOutput_Capture_WithCaptureSetting(PhotoOutput, capSettings); + EXPECT_EQ(ret, 0); + OH_CaptureSession_RemovePhotoOutput(captureSession, PhotoOutput); + ret = OH_PhotoOutput_Release(PhotoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test SetMeteringPoint & GetMeteringPoint + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test SetMeteringPoint & GetMeteringPoint + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_041, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + ret =OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + Camera_Point exposurePointSet = {1.0, 2.0}; + ret = OH_CaptureSession_SetMeteringPoint(captureSession, exposurePointSet); + EXPECT_EQ(ret, 0); + Camera_Point exposurePointGet= {0, 0};; + ret = OH_CaptureSession_GetMeteringPoint(captureSession, &exposurePointGet); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(PhotoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret =OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test SetFocusPoint & GetFousPoint + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test SetFocusPoint & GetFousPoint + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_042, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + ret =OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + Camera_Point FocusPointSet = {1.0, 2.0}; + ret = OH_CaptureSession_SetFocusPoint(captureSession, FocusPointSet); + EXPECT_EQ(ret, 0); + Camera_Point FocusPointGet= {0, 0};; + ret = OH_CaptureSession_GetFocusPoint(captureSession, &FocusPointGet); + EXPECT_EQ(ret, 0); + ret =OH_PhotoOutput_Capture(PhotoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(PhotoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret =OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test GetExposureValue and SetExposureBias + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test GetExposureValue and SetExposureBias with value less then the range + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_043, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + ret =OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + float minExposureBias = 0.0f, maxExposureBias = 0.0f, step = 0.0f; + ret = OH_CaptureSession_GetExposureBiasRange(captureSession, &minExposureBias, &maxExposureBias, &step); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_SetExposureBias(captureSession, minExposureBias-1.0); + EXPECT_EQ(ret, CAMERA_OK); + ret =OH_PhotoOutput_Capture(PhotoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(PhotoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret =OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test GetExposureValue and SetExposureBias + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test GetExposureValue and SetExposureBias with value between the range + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_044, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + ret =OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + float minExposureBias = 0.0f, maxExposureBias = 0.0f, step = 0.0f; + ret = OH_CaptureSession_GetExposureBiasRange(captureSession, &minExposureBias, &maxExposureBias, &step); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_SetExposureBias(captureSession, minExposureBias+1.0); + EXPECT_EQ(ret, CAMERA_OK); + ret =OH_PhotoOutput_Capture(PhotoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(PhotoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret =OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test GetExposureValue and SetExposureBias + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test GetExposureValue and SetExposureBias with value more then the range + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_045, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + ret =OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + float minExposureBias = 0.0f, maxExposureBias = 0.0f, step = 0.0f; + ret = OH_CaptureSession_GetExposureBiasRange(captureSession, &minExposureBias, &maxExposureBias, &step); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_SetExposureBias(captureSession, maxExposureBias+1.0); + EXPECT_EQ(ret, CAMERA_OK); + ret =OH_PhotoOutput_Capture(PhotoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(PhotoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret =OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test photo capture with location of capture settings + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test photo capture with capture settings + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_053, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + + Camera_PhotoCaptureSetting capSettings; + capSettings.rotation = IAMGE_ROTATION_90; + Camera_Location location = {1.0, 1.0, 1.0}; + capSettings.location = &location; + ret = OH_PhotoOutput_Capture_WithCaptureSetting(PhotoOutput, capSettings); + EXPECT_EQ(ret, 0); + + location = {0, 0, 0}; + capSettings.location = &location; + ret = OH_PhotoOutput_Capture_WithCaptureSetting(PhotoOutput, capSettings); + EXPECT_EQ(ret, 0); + + ret = OH_PhotoOutput_Release(PhotoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test photo capture with capture settings + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test photo capture with preview output & capture settings + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_054, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + Camera_CaptureSession* captureSession = nullptr; + ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + ret =OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + Camera_PhotoCaptureSetting capSettings; + capSettings.quality=QUALITY_LEVEL_MEDIUM; + capSettings.rotation=IAMGE_ROTATION_90; + ret =OH_PhotoOutput_Capture_WithCaptureSetting(PhotoOutput, capSettings); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(PhotoOutput); + EXPECT_EQ(ret, 0); + ret =OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + + + + + +/* + * Feature: Framework + * Function: Test capture session with Video Stabilization Mode + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test capture session with Video Stabilization Mode + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_057, TestSize.Level0) +{ + Camera_CaptureSession* captureSession; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + + Camera_Input *cameraInput; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + ret = OH_CaptureSession_AddVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Start(previewOutput); + EXPECT_EQ(ret, 0); + bool isSupported=false; + ret = OH_CaptureSession_IsVideoStabilizationModeSupported(captureSession, STABILIZATION_MODE_MIDDLE, &isSupported); + + if (isSupported) + { + ret = OH_CaptureSession_SetVideoStabilizationMode(captureSession, STABILIZATION_MODE_MIDDLE); + EXPECT_EQ(ret, 0); + } + ret = OH_VideoOutput_Start(videoOutput); + EXPECT_EQ(ret, 0); + sleep(WAIT_TIME_AFTER_START); + ret = OH_VideoOutput_Stop(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Release(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Stop(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_PreviewOutput_Release(previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); +} + +/* + * Feature: Framework + * Function: Test add preview,video and photo output,set location,video start do capture + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test add preview video and photo output, video start do capture + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_058, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Start(videoOutput); + EXPECT_EQ(ret, 0); + + Camera_PhotoCaptureSetting capSettings; + capSettings.quality = QUALITY_LEVEL_MEDIUM; + + Camera_Location location = {1.0, 1.0, 1.0}; + capSettings.location = &location; + ret = OH_PhotoOutput_Capture_WithCaptureSetting(photoOutput, capSettings); + EXPECT_EQ(ret, 0); + + ret = OH_VideoOutput_Stop(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Release(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test add preview,video and photo output, set mirror,video start do capture + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test add preview video and photo output, video start do capture + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_059, TestSize.Level0) +{ + Camera_CaptureSession* captureSession = nullptr; + Camera_ErrorCode ret = OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Open(cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_NE(&cameraInput, nullptr); + ret = OH_CaptureSession_BeginConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + Camera_PhotoOutput *photoOutput = CreatePhotoOutput(); + EXPECT_NE(photoOutput, nullptr); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, photoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_AddVideoOutput(captureSession, videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_CommitConfig(captureSession); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Start(videoOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoCaptureSetting capSettings; + capSettings.mirror=true; + ret =OH_PhotoOutput_Capture_WithCaptureSetting(photoOutput, capSettings); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Stop(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_VideoOutput_Release(videoOutput); + EXPECT_EQ(ret, 0); + ret = OH_PhotoOutput_Release(photoOutput); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CameraInput_Release(cameraInput); + EXPECT_EQ(ret, 0); + ret = OH_CaptureSession_Release(captureSession); + EXPECT_EQ(ret, 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test open flash preview capture video callback + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test open flash preview capture video callback + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_061, TestSize.Level0) +{ + Camera_ErrorCode ret =CAMERA_OK; + Camera_CaptureSession* captureSession = nullptr; + EXPECT_EQ(OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession), 0); + EXPECT_NE(captureSession, nullptr); + + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + + EXPECT_EQ(OH_CameraInput_Open(cameraInput), CAMERA_OK); + EXPECT_EQ(OH_CaptureSession_BeginConfig(captureSession), 0); + + Camera_FlashMode flash =static_cast(FLASH_MODE_OPEN); + bool isSupported = false; + ret = OH_CaptureSession_IsFlashModeSupported(captureSession, flash, &isSupported); + EXPECT_EQ(ret, 0); + + if (isSupported) + { + EXPECT_EQ(OH_CaptureSession_SetFlashMode(captureSession, flash), 0); + } + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + VideoOutput_Callbacks setVideoResultCallback = { + .onFrameStart = &CameraVideoOutptOnFrameStartCb, + .onFrameEnd = &CameraVideoOutptOnFrameEndCb, + .onError = &CameraVideoOutptOnErrorCb + }; + ret = OH_VideoOutput_RegisterCallback(videoOutput, &setVideoResultCallback); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(OH_CaptureSession_AddVideoOutput(captureSession, videoOutput), 0); + EXPECT_EQ(OH_CaptureSession_CommitConfig(captureSession), 0); + EXPECT_EQ(OH_PreviewOutput_Start(previewOutput), 0); + EXPECT_EQ(OH_VideoOutput_UnregisterCallback(videoOutput, &setVideoResultCallback), 0); + + EXPECT_EQ(OH_VideoOutput_Release(videoOutput), 0); + EXPECT_EQ(OH_PhotoOutput_Release(PhotoOutput), 0); + EXPECT_EQ(OH_PreviewOutput_Release(previewOutput), 0); + EXPECT_EQ(OH_CaptureSession_Release(captureSession), 0); + EXPECT_EQ(OH_CameraInput_Release(cameraInput), 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test close flash preview capture video callback + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test close flash preview capture video callback + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_065, TestSize.Level0) +{ + Camera_ErrorCode ret = CAMERA_OK; + Camera_CaptureSession* captureSession = nullptr; + EXPECT_EQ(OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession), 0); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(OH_CameraInput_Open(cameraInput), CAMERA_OK); + EXPECT_EQ(OH_CaptureSession_BeginConfig(captureSession), 0); + Camera_FlashMode flash =static_cast(FLASH_MODE_OPEN); + bool isSupported = false; + ret = OH_CaptureSession_IsFlashModeSupported(captureSession, flash, &isSupported); + EXPECT_EQ(ret, 0); + if (isSupported) + { + EXPECT_EQ(OH_CaptureSession_SetFlashMode(captureSession, flash), 0); + } + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + + PreviewOutput_Callbacks setPreviewResultCallback = { + .onFrameStart = &CameraPreviewOutptOnFrameStartCb, + .onFrameEnd = &CameraPreviewOutptOnFrameEndCb, + .onError = &CameraPreviewOutptOnErrorCb + }; + + ret = OH_PreviewOutput_RegisterCallback(previewOutput, &setPreviewResultCallback); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + EXPECT_EQ(OH_CaptureSession_CommitConfig(captureSession), 0); + EXPECT_EQ(OH_PreviewOutput_Start(previewOutput), 0); + EXPECT_EQ(OH_PreviewOutput_UnregisterCallback(previewOutput, &setPreviewResultCallback), 0); + EXPECT_EQ(OH_PreviewOutput_Release(previewOutput), 0); + EXPECT_EQ(OH_CaptureSession_Release(captureSession), 0); + EXPECT_EQ(OH_CameraInput_Release(cameraInput), 0); +} + +/* + * Feature: Framework + * Function: Test close flash preview capture video callback + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test close flash preview capture video callback + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_066, TestSize.Level0) +{ + Camera_ErrorCode ret = CAMERA_OK; + Camera_CaptureSession* captureSession = nullptr; + EXPECT_EQ(OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession), 0); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(OH_CameraInput_Open(cameraInput), CAMERA_OK); + EXPECT_EQ(OH_CaptureSession_BeginConfig(captureSession), 0); + Camera_FlashMode flash =static_cast(FLASH_MODE_OPEN); + bool isSupported = false; + ret = OH_CaptureSession_IsFlashModeSupported(captureSession, flash, &isSupported); + EXPECT_EQ(ret, 0); + if (isSupported) + { + EXPECT_EQ(OH_CaptureSession_SetFlashMode(captureSession, flash), 0); + } + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + PhotoOutput_Callbacks setPhotoOutputResultCallback = { + .onFrameStart = &CameraPhotoOutptOnFrameStartCb, + .onFrameShutter = &CameraPhotoOutptOnFrameShutterCb, + .onFrameEnd = &CameraPhotoOutptOnFrameEndCb, + .onError = &CameraPhotoOutptOnErrorCb + }; + ret = OH_PhotoOutput_RegisterCallback(PhotoOutput, &setPhotoOutputResultCallback); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + EXPECT_EQ(OH_CaptureSession_CommitConfig(captureSession), 0); + EXPECT_EQ(OH_PreviewOutput_Start(previewOutput), 0); + EXPECT_EQ(OH_PhotoOutput_Capture(PhotoOutput), 0); + EXPECT_EQ(OH_PhotoOutput_UnregisterCallback(PhotoOutput, &setPhotoOutputResultCallback), 0); + EXPECT_EQ(OH_PhotoOutput_Release(PhotoOutput), 0); + EXPECT_EQ(OH_CaptureSession_Release(captureSession), 0); + EXPECT_EQ(OH_CameraInput_Release(cameraInput), 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test close flash preview capture video callback + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test close flash preview capture video callback + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_062, TestSize.Level0) +{ + Camera_ErrorCode ret = CAMERA_OK; + Camera_CaptureSession* captureSession = nullptr; + EXPECT_EQ(OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession), 0); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(OH_CameraInput_Open(cameraInput), CAMERA_OK); + EXPECT_EQ(OH_CaptureSession_BeginConfig(captureSession), 0); + Camera_FlashMode flash =static_cast(FLASH_MODE_CLOSE); + bool isSupported = false; + ret = OH_CaptureSession_IsFlashModeSupported(captureSession, flash, &isSupported); + EXPECT_EQ(ret, 0); + if (isSupported) + { + EXPECT_EQ(OH_CaptureSession_SetFlashMode(captureSession, flash), 0); + } + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + Camera_VideoOutput* videoOutput = CreateVideoOutput(); + EXPECT_NE(videoOutput, nullptr); + VideoOutput_Callbacks setVideoResultCallback = { + .onFrameStart = &CameraVideoOutptOnFrameStartCb, + .onFrameEnd = &CameraVideoOutptOnFrameEndCb, + .onError = &CameraVideoOutptOnErrorCb + }; + ret = OH_VideoOutput_RegisterCallback(videoOutput, &setVideoResultCallback); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(OH_CaptureSession_AddVideoOutput(captureSession, videoOutput), 0); + EXPECT_EQ(OH_CaptureSession_CommitConfig(captureSession), 0); + EXPECT_EQ(OH_PreviewOutput_Start(previewOutput), 0); + EXPECT_EQ(OH_VideoOutput_UnregisterCallback(videoOutput, &setVideoResultCallback), 0); + + EXPECT_EQ(OH_VideoOutput_Release(videoOutput), 0); + EXPECT_EQ(OH_PhotoOutput_Release(PhotoOutput), 0); + EXPECT_EQ(OH_PreviewOutput_Release(previewOutput), 0); + EXPECT_EQ(OH_CaptureSession_Release(captureSession), 0); + EXPECT_EQ(OH_CameraInput_Release(cameraInput), 0); + ReleaseImageReceiver(); +} + +/* + * Feature: Framework + * Function: Test close flash preview capture video callback + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test close flash preview capture video callback + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_063, TestSize.Level0) +{ + Camera_ErrorCode ret = CAMERA_OK; + Camera_CaptureSession* captureSession = nullptr; + EXPECT_EQ(OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession), 0); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(OH_CameraInput_Open(cameraInput), CAMERA_OK); + EXPECT_EQ(OH_CaptureSession_BeginConfig(captureSession), 0); + Camera_FlashMode flash =static_cast(FLASH_MODE_CLOSE); + bool isSupported = false; + ret = OH_CaptureSession_IsFlashModeSupported(captureSession, flash, &isSupported); + EXPECT_EQ(ret, 0); + if (isSupported) + { + EXPECT_EQ(OH_CaptureSession_SetFlashMode(captureSession, flash), 0); + } + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + + PreviewOutput_Callbacks setPreviewResultCallback = { + .onFrameStart = &CameraPreviewOutptOnFrameStartCb, + .onFrameEnd = &CameraPreviewOutptOnFrameEndCb, + .onError = &CameraPreviewOutptOnErrorCb + }; + + ret = OH_PreviewOutput_RegisterCallback(previewOutput, &setPreviewResultCallback); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + EXPECT_EQ(OH_CaptureSession_CommitConfig(captureSession), 0); + EXPECT_EQ(OH_PreviewOutput_Start(previewOutput), 0); + EXPECT_EQ(OH_PreviewOutput_UnregisterCallback(previewOutput, &setPreviewResultCallback), 0); + EXPECT_EQ(OH_PreviewOutput_Release(previewOutput), 0); + EXPECT_EQ(OH_CaptureSession_Release(captureSession), 0); + EXPECT_EQ(OH_CameraInput_Release(cameraInput), 0); +} + +/* + * Feature: Framework + * Function: Test close flash preview capture video callback + * SubFunction: NA + * FunctionPoints: NA + * EnvConditions: NA + * CaseDescription: Test close flash preview capture video callback + */ +HWTEST_F(CameraNdkUnitTest, camera_frameworkndk_unittest_064, TestSize.Level0) +{ + Camera_ErrorCode ret = CAMERA_OK; + Camera_CaptureSession* captureSession = nullptr; + EXPECT_EQ(OH_CameraManager_CreateCaptureSession(cameraManager, &captureSession), 0); + EXPECT_NE(captureSession, nullptr); + Camera_Input *cameraInput = nullptr; + ret = OH_CameraManager_CreateCameraInput(cameraManager, cameraDevice, &cameraInput); + EXPECT_EQ(ret, CAMERA_OK); + EXPECT_EQ(OH_CameraInput_Open(cameraInput), CAMERA_OK); + EXPECT_EQ(OH_CaptureSession_BeginConfig(captureSession), 0); + Camera_FlashMode flash =static_cast(FLASH_MODE_CLOSE); + bool isSupported = false; + ret = OH_CaptureSession_IsFlashModeSupported(captureSession, flash, &isSupported); + EXPECT_EQ(ret, 0); + if (isSupported) + { + EXPECT_EQ(OH_CaptureSession_SetFlashMode(captureSession, flash), 0); + } + ret = OH_CaptureSession_AddInput(captureSession, cameraInput); + EXPECT_EQ(ret, 0); + Camera_PreviewOutput* previewOutput = CreatePreviewOutput(); + EXPECT_NE(previewOutput, nullptr); + ret = OH_CaptureSession_AddPreviewOutput(captureSession, previewOutput); + EXPECT_EQ(ret, 0); + Camera_PhotoOutput* PhotoOutput = CreatePhotoOutput(); + EXPECT_NE(PhotoOutput, nullptr); + PhotoOutput_Callbacks setPhotoOutputResultCallback = { + .onFrameStart = &CameraPhotoOutptOnFrameStartCb, + .onFrameShutter = &CameraPhotoOutptOnFrameShutterCb, + .onFrameEnd = &CameraPhotoOutptOnFrameEndCb, + .onError = &CameraPhotoOutptOnErrorCb + }; + ret = OH_PhotoOutput_RegisterCallback(PhotoOutput, &setPhotoOutputResultCallback); + EXPECT_EQ(ret, CAMERA_OK); + ret = OH_CaptureSession_AddPhotoOutput(captureSession, PhotoOutput); + EXPECT_EQ(ret, 0); + EXPECT_EQ(OH_CaptureSession_CommitConfig(captureSession), 0); + EXPECT_EQ(OH_PreviewOutput_Start(previewOutput), 0); + EXPECT_EQ(OH_PhotoOutput_Capture(PhotoOutput), 0); + EXPECT_EQ(OH_PhotoOutput_UnregisterCallback(PhotoOutput, &setPhotoOutputResultCallback), 0); + EXPECT_EQ(OH_PhotoOutput_Release(PhotoOutput), 0); + EXPECT_EQ(OH_CaptureSession_Release(captureSession), 0); + EXPECT_EQ(OH_CameraInput_Release(cameraInput), 0); + ReleaseImageReceiver(); +} +} // CameraStandard +} // OHOS \ No newline at end of file