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 #ifndef CAMERA_BASE_FUNCTION_MODULETEST_H 17 #define CAMERA_BASE_FUNCTION_MODULETEST_H 18 19 #include <vector> 20 21 #include "gtest/gtest.h" 22 #include "input/camera_manager.h" 23 #include "session/capture_session.h" 24 25 namespace OHOS { 26 namespace CameraStandard { 27 // camera manager 28 class TestCameraMuteListener : public CameraMuteListener { 29 public: 30 TestCameraMuteListener() = default; 31 virtual ~TestCameraMuteListener() = default; 32 void OnCameraMute(bool muteMode) const override; 33 }; 34 class TestTorchListener : public TorchListener { 35 public: 36 TestTorchListener() = default; 37 virtual ~TestTorchListener() = default; 38 void OnTorchStatusChange(const TorchStatusInfo &torchStatusInfo) const override; 39 }; 40 class TestFoldListener : public FoldListener { 41 public: 42 TestFoldListener() = default; 43 virtual ~TestFoldListener() = default; 44 void OnFoldStatusChanged(const FoldStatusInfo &foldStatusInfo) const override; 45 }; 46 // capture session 47 class TestSessionCallback : public SessionCallback { 48 public: 49 TestSessionCallback() = default; 50 virtual ~TestSessionCallback() = default; 51 void OnError(int32_t errorCode) override; 52 }; 53 class TestExposureCallback : public ExposureCallback { 54 public: 55 TestExposureCallback() = default; 56 virtual ~TestExposureCallback() = default; 57 void OnExposureState(ExposureState state) override; 58 }; 59 class TestFocusCallback : public FocusCallback { 60 public: 61 TestFocusCallback() = default; 62 virtual ~TestFocusCallback() = default; 63 void OnFocusState(FocusState state) override; 64 }; 65 class TestMacroStatusCallback : public MacroStatusCallback { 66 public: 67 TestMacroStatusCallback() = default; 68 virtual ~TestMacroStatusCallback() = default; 69 void OnMacroStatusChanged(MacroStatus status) override; 70 }; 71 class TestMoonCaptureBoostStatusCallback : public MoonCaptureBoostStatusCallback { 72 public: 73 TestMoonCaptureBoostStatusCallback() = default; 74 virtual ~TestMoonCaptureBoostStatusCallback() = default; 75 void OnMoonCaptureBoostStatusChanged(MoonCaptureBoostStatus status) override; 76 }; 77 class TestFeatureDetectionStatusCallback : public FeatureDetectionStatusCallback { 78 public: 79 TestFeatureDetectionStatusCallback() = default; 80 virtual ~TestFeatureDetectionStatusCallback() = default; 81 void OnFeatureDetectionStatusChanged(SceneFeature feature, FeatureDetectionStatus status) override; 82 bool IsFeatureSubscribed(SceneFeature feature) override; 83 }; 84 class TestSmoothZoomCallback : public SmoothZoomCallback { 85 public: 86 TestSmoothZoomCallback() = default; 87 virtual ~TestSmoothZoomCallback() = default; 88 void OnSmoothZoom(int32_t duration) override; 89 }; 90 class TestARCallback : public ARCallback { 91 public: 92 TestARCallback() = default; 93 virtual ~TestARCallback() = default; 94 void OnResult(const ARStatusInfo &arStatusInfo) const override; 95 }; 96 class TestEffectSuggestionCallback : public EffectSuggestionCallback { 97 public: 98 TestEffectSuggestionCallback() = default; 99 virtual ~TestEffectSuggestionCallback() = default; 100 void OnEffectSuggestionChange(EffectSuggestionType effectSuggestionType) override; 101 }; 102 class TestLcdFlashStatusCallback : public LcdFlashStatusCallback { 103 public: 104 TestLcdFlashStatusCallback() = default; 105 virtual ~TestLcdFlashStatusCallback() = default; 106 void OnLcdFlashStatusChanged(LcdFlashStatusInfo lcdFlashStatusInfo) override; 107 }; 108 class TestAutoDeviceSwitchCallback : public AutoDeviceSwitchCallback { 109 public: 110 TestAutoDeviceSwitchCallback() = default; 111 virtual ~TestAutoDeviceSwitchCallback() = default; 112 void OnAutoDeviceSwitchStatusChange(bool isDeviceSwitched, bool isDeviceCapabilityChanged) const override; 113 }; 114 class TestMetadataStateCallback : public MetadataStateCallback { 115 public: 116 TestMetadataStateCallback() = default; 117 virtual ~TestMetadataStateCallback() = default; 118 void OnError(int32_t errorCode) const override; 119 }; 120 121 // ms 122 static const int32_t DURATION_AFTER_SESSION_START = 200; 123 static const int32_t DURATION_BEFORE_SESSION_STOP = 200; 124 static const int32_t DURATION_AFTER_CAPTURE = 200; 125 static const int32_t DURATION_DURING_RECORDING = 500; 126 static const int32_t DURATION_AFTER_RECORDING = 200; 127 static const int32_t DURATION_AFTER_DEVICE_CLOSE = 200; 128 static const int32_t DURATION_WAIT_CALLBACK = 200; 129 130 static const int32_t PHOTO_DEFAULT_WIDTH = 1280; 131 static const int32_t PHOTO_DEFAULT_HEIGHT = 960; 132 static const int32_t PREVIEW_DEFAULT_WIDTH = 1280; 133 static const int32_t PREVIEW_DEFAULT_HEIGHT = 720; 134 static const int32_t VIDEO_DEFAULT_WIDTH = 1280; 135 static const int32_t VIDEO_DEFAULT_HEIGHT = 720; 136 137 static const int32_t PRVIEW_WIDTH_176 = 176; 138 static const int32_t PRVIEW_HEIGHT_144 = 144; 139 static const int32_t PRVIEW_WIDTH_480 = 480; 140 static const int32_t PRVIEW_HEIGHT_480 = 480; 141 static const int32_t PRVIEW_WIDTH_640 = 640; 142 static const int32_t PRVIEW_HEIGHT_640 = 640; 143 static const int32_t PRVIEW_WIDTH_4096 = 4096; 144 static const int32_t PRVIEW_HEIGHT_3072 = 3072; 145 static const int32_t PRVIEW_WIDTH_4160 = 4160; 146 static const int32_t PRVIEW_HEIGHT_3120 = 3120; 147 static const int32_t PRVIEW_WIDTH_8192 = 8192; 148 static const int32_t PRVIEW_HEIGHT_6144 = 6144; 149 150 class CameraBaseFunctionModuleTest : public testing::Test { 151 public: 152 static const int32_t deviceBackIndex = 0; 153 static const int32_t deviceFrontIndex = 1; 154 155 /* SetUpTestCase: The preset action of the test suite is executed before the first test case */ 156 static void SetUpTestCase(void); 157 158 /* TearDownTestCase: The cleanup action of the test suite is executed after the last test case */ 159 static void TearDownTestCase(void); 160 161 /* SetUp: Execute before each test case */ 162 void SetUp(); 163 164 /* TearDown: Execute after each test case */ 165 void TearDown(); 166 167 static void SetNativeToken(); 168 void UpdateCameraOutputCapability(int32_t index = 0, int32_t modeName = 0); 169 void FilterPreviewProfiles(std::vector<Profile>& previewProfiles); 170 171 sptr<PreviewOutput> CreatePreviewOutput(Profile &previewProfile); 172 sptr<PhotoOutput> CreatePhotoOutput(Profile &photoProfile); 173 sptr<VideoOutput> CreateVideoOutput(VideoProfile &videoProfile); 174 175 void CreateAndConfigureDefaultCaptureOutput(sptr<PhotoOutput> &photoOutput, sptr<VideoOutput> &videoOutput); 176 void StartDefaultCaptureOutput(sptr<PhotoOutput> photoOutput, sptr<VideoOutput> videoOutput); 177 178 protected: 179 int32_t previewFd_ = -1; 180 int32_t videoFd_ = -1; 181 int32_t sketchFd_ = -1; 182 183 sptr<CameraInput> cameraInput_ = nullptr; 184 sptr<CameraManager> cameraManager_ = nullptr; 185 sptr<CaptureSession> captureSession_ = nullptr; 186 std::vector<sptr<CameraDevice>> cameraDevices_ = {}; 187 188 std::vector<Profile> photoProfiles_ = {}; 189 std::vector<Profile> previewProfiles_ = {}; 190 std::vector<VideoProfile> videoProfiles_ = {}; 191 std::vector<DepthProfile> depthProfiles_ = {}; 192 std::vector<MetadataObjectType> metadataObjectTypes_ = {}; 193 }; 194 } // CameraStandard 195 } // OHOS 196 #endif // CAMERA_BASE_FUNCTION_MODULETEST_H