1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <cstring>
17 #include <gmock/gmock.h>
18 #include <gtest/gtest.h>
19
20 #define private public
21 #include "iconsumer_surface.h"
22 #include "native_image_adapter_impl.h"
23
24 using namespace testing;
25 using namespace testing::ext;
26
27 namespace OHOS::NWeb {
28 class NativeImageAdapterImplTest : public testing::Test {
29 public:
30 static void SetUpTestCase(void);
31 static void TearDownTestCase(void);
32 void SetUp();
33 void TearDown();
34 };
35
36 class FrameAvailableListenerTest : public FrameAvailableListener {
37 public:
FrameAvailableListenerTest()38 FrameAvailableListenerTest() {}
~FrameAvailableListenerTest()39 ~FrameAvailableListenerTest() {}
GetContext()40 void* GetContext() override { return nullptr;}
GetOnFrameAvailableCb()41 OnFrameAvailableCb GetOnFrameAvailableCb() override { return nullptr; }
42 };
43
SetUpTestCase(void)44 void NativeImageAdapterImplTest::SetUpTestCase(void) {}
45
TearDownTestCase(void)46 void NativeImageAdapterImplTest::TearDownTestCase(void) {}
47
SetUp(void)48 void NativeImageAdapterImplTest::SetUp(void) {}
49
TearDown(void)50 void NativeImageAdapterImplTest::TearDown(void) {}
51
52 /**
53 * @tc.name: NativeImageAdapterImplTest_UpdateSurfaceImage_001
54 * @tc.desc: UpdateSurfaceImage.
55 * @tc.type: FUNC
56 * @tc.require:
57 */
58 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_UpdateSurfaceImage_001, TestSize.Level1)
59 {
60 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
61 EXPECT_NE(imagerAdapter, nullptr);
62 int32_t result = imagerAdapter->UpdateSurfaceImage();
63 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
64 NWebNativeWindow window = imagerAdapter->AquireNativeWindowFromNativeImage();
65 EXPECT_EQ(window, nullptr);
66 int32_t context = imagerAdapter->AttachContext(1);
67 EXPECT_EQ(context, SURFACE_ERROR_ERROR);
68 context = imagerAdapter->DetachContext();
69 EXPECT_EQ(context, SURFACE_ERROR_ERROR);
70 uint32_t textureId = 1;
71 uint32_t textureTarget = 1;
72 imagerAdapter->CreateNativeImage(textureId, textureTarget);
73 result = imagerAdapter->UpdateSurfaceImage();
74 EXPECT_NE(result, static_cast<uint32_t>(SURFACE_ERROR_ERROR));
75 window = imagerAdapter->AquireNativeWindowFromNativeImage();
76 EXPECT_NE(window, nullptr);
77 imagerAdapter->AttachContext(1);
78 imagerAdapter->DetachContext();
79 }
80
81 /**
82 * @tc.name: NativeImageAdapterImplTest_GetTimestamp_001
83 * @tc.desc: GetTimestamp.
84 * @tc.type: FUNC
85 * @tc.require:
86 */
87 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetTimestamp_001, TestSize.Level1)
88 {
89 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
90 EXPECT_NE(imagerAdapter, nullptr);
91 int32_t result = imagerAdapter->GetTimestamp();
92 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
93 uint32_t textureId = 1;
94 uint32_t textureTarget = 1;
95 imagerAdapter->CreateNativeImage(textureId, textureTarget);
96 result = imagerAdapter->GetTimestamp();
97 EXPECT_EQ(result, 0);
98 }
99
100 /**
101 * @tc.name: NativeImageAdapterImplTest_GetTransformMatrix_001
102 * @tc.desc: GetTransformMatrix.
103 * @tc.type: FUNC
104 * @tc.require:
105 */
106 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetTransformMatrix_001, TestSize.Level1)
107 {
108 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
109 EXPECT_NE(imagerAdapter, nullptr);
110 float matrix[16] = { 0 };
111 int32_t result = imagerAdapter->GetTransformMatrix(matrix);
112 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
113 uint32_t textureId = 1;
114 uint32_t textureTarget = 1;
115 imagerAdapter->CreateNativeImage(textureId, textureTarget);
116 result = imagerAdapter->GetTransformMatrix(matrix);
117 EXPECT_EQ(result, 0);
118 }
119
120 /**
121 * @tc.name: NativeImageAdapterImplTest_GetSurfaceId001
122 * @tc.desc:GetSurfaceId.
123 * @tc.type: FUNC
124 * @tc.require:
125 */
126 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetSurfaceId_001, TestSize.Level1)
127 {
128 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
129 EXPECT_NE(imagerAdapter, nullptr);
130 uint64_t surfaceId = 1;
131 int32_t result = imagerAdapter->GetSurfaceId(&surfaceId);
132 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
133 uint32_t textureId = 1;
134 uint32_t textureTarget = 1;
135 imagerAdapter->CreateNativeImage(textureId, textureTarget);
136 result = imagerAdapter->GetSurfaceId(&surfaceId);
137 EXPECT_EQ(result, 0);
138 }
139
140 /**
141 * @tc.name: NativeImageAdapterImplTest_SetOnFrameAvailableListener001
142 * @tc.desc:SetOnFrameAvailableListener.
143 * @tc.type: FUNC
144 * @tc.require:s
145 */
146 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_SetOnFrameAvailableListener_001, TestSize.Level1)
147 {
148 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
149 EXPECT_NE(imagerAdapter, nullptr);
150 int32_t result = imagerAdapter->SetOnFrameAvailableListener(nullptr);
151 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
152 uint32_t textureId = 1;
153 uint32_t textureTarget = 1;
154 imagerAdapter->CreateNativeImage(textureId, textureTarget);
155 result = imagerAdapter->SetOnFrameAvailableListener(nullptr);
156 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
157 std::shared_ptr<FrameAvailableListener> listener = std::make_shared<FrameAvailableListenerTest>();
158 result = imagerAdapter->SetOnFrameAvailableListener(listener);
159 EXPECT_NE(result, SURFACE_ERROR_ERROR);
160 }
161
162 /**
163 * @tc.name: NativeImageAdapterImplTest_UnsetOnFrameAvailableListener001
164 * @tc.desc:UnsetOnFrameAvailableListener.
165 * @tc.type: FUNC
166 * @tc.require:
167 */
168 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_UnsetOnFrameAvailableListener_001, TestSize.Level1)
169 {
170 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
171 EXPECT_NE(imagerAdapter, nullptr);
172 int32_t result = imagerAdapter->UnsetOnFrameAvailableListener();
173 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
174 uint32_t textureId = 1;
175 uint32_t textureTarget = 1;
176 imagerAdapter->CreateNativeImage(textureId, textureTarget);
177 result = imagerAdapter->UnsetOnFrameAvailableListener();
178 EXPECT_EQ(result, 0);
179 }
180
181 /**
182 * @tc.name: NativeImageAdapterImplTest_DestroyNativeImage001
183 * @tc.desc:DestroyNativeImage.
184 * @tc.type: FUNC
185 * @tc.require:
186 */
187 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_DestroyNativeImage_001, TestSize.Level1)
188 {
189 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
190 EXPECT_NE(imagerAdapter, nullptr);
191 imagerAdapter->DestroyNativeImage();
192 }
193
194 /**
195 * @tc.name: NativeImageAdapterImplTest_NewNativeImage001
196 * @tc.desc:NewNativeImage.
197 * @tc.type: FUNC
198 * @tc.require:
199 */
200 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_NewNativeImage_001, TestSize.Level1)
201 {
202 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
203 EXPECT_NE(imagerAdapter, nullptr);
204 imagerAdapter->NewNativeImage();
205 EXPECT_NE(imagerAdapter->ohNativeImage_, nullptr);
206 }
207
208 /**
209 * @tc.name: NativeImageAdapterImplTest_AcquireNativeWindowBuffer001
210 * @tc.desc:AcquireNativeWindowBuffer.
211 * @tc.type: FUNC
212 * @tc.require:
213 */
214 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_AcquireNativeWindowBuffer_001, TestSize.Level1)
215 {
216 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
217 EXPECT_NE(imagerAdapter, nullptr);
218
219 void* windowBuffer = nullptr;
220 int fenceId = -1;
221 int32_t ret = imagerAdapter->AcquireNativeWindowBuffer(&windowBuffer, &fenceId);
222 EXPECT_EQ(ret, SURFACE_ERROR_ERROR);
223
224 imagerAdapter->NewNativeImage();
225 EXPECT_NE(imagerAdapter->ohNativeImage_, nullptr);
226 ret = imagerAdapter->AcquireNativeWindowBuffer(&windowBuffer, &fenceId);
227 EXPECT_NE(ret, GSERROR_OK);
228 }
229
230 /**
231 * @tc.name: NativeImageAdapterImplTest_GetNativeBuffer001
232 * @tc.desc:GetNativeBuffer.
233 * @tc.type: FUNC
234 * @tc.require:
235 */
236 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetNativeBuffer_001, TestSize.Level1)
237 {
238 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
239 EXPECT_NE(imagerAdapter, nullptr);
240
241 void* windowBuffer = nullptr;
242 void* nativeBuffer = nullptr;
243 imagerAdapter->GetNativeBuffer(windowBuffer, &nativeBuffer);
244 }
245
246 /**
247 * @tc.name: NativeImageAdapterImplTest_ReleaseNativeWindowBuffer001
248 * @tc.desc:ReleaseNativeWindowBuffer.
249 * @tc.type: FUNC
250 * @tc.require:
251 */
252 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_ReleaseNativeWindowBuffer_001, TestSize.Level1)
253 {
254 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
255 EXPECT_NE(imagerAdapter, nullptr);
256
257 void* windowBuffer = nullptr;
258 int fenceId = -1;
259 int32_t ret = imagerAdapter->ReleaseNativeWindowBuffer(windowBuffer, fenceId);
260 EXPECT_EQ(ret, SURFACE_ERROR_ERROR);
261
262 imagerAdapter->NewNativeImage();
263 EXPECT_NE(imagerAdapter->ohNativeImage_, nullptr);
264 imagerAdapter->ReleaseNativeWindowBuffer(windowBuffer, fenceId);
265 }
266
267 /**
268 * @tc.name: NativeImageAdapterImplTest_GetNativeWindowBufferSize001
269 * @tc.desc:GetNativeWindowBufferSize.
270 * @tc.type: FUNC
271 * @tc.require:
272 */
273 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetNativeWindowBufferSize_001, TestSize.Level1)
274 {
275 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
276 EXPECT_NE(imagerAdapter, nullptr);
277
278 void* windowBuffer = nullptr;
279 uint32_t width = 0;
280 uint32_t height = 0;
281 imagerAdapter->GetNativeWindowBufferSize(windowBuffer, nullptr, nullptr);
282 imagerAdapter->GetNativeWindowBufferSize(windowBuffer, &width, nullptr);
283 imagerAdapter->GetNativeWindowBufferSize(windowBuffer, nullptr, &height);
284 imagerAdapter->GetNativeWindowBufferSize(windowBuffer, &width, &height);
285 imagerAdapter->NewNativeImage();
286 EXPECT_NE(imagerAdapter->ohNativeImage_, nullptr);
287 int fenceId = -1;
288 int32_t ret = imagerAdapter->AcquireNativeWindowBuffer(&windowBuffer, &fenceId);
289 EXPECT_NE(ret, GSERROR_OK);
290 imagerAdapter->GetNativeWindowBufferSize(windowBuffer, nullptr, nullptr);
291 imagerAdapter->GetNativeWindowBufferSize(windowBuffer, &width, nullptr);
292 imagerAdapter->GetNativeWindowBufferSize(windowBuffer, nullptr, &height);
293 imagerAdapter->GetNativeWindowBufferSize(windowBuffer, &width, &height);
294 EXPECT_EQ(width, 0);
295 EXPECT_EQ(height, 0);
296 }
297 } // namespace OHOS::NWeb
298