• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #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