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
SetUpTestCase(void)36 void NativeImageAdapterImplTest::SetUpTestCase(void) {}
37
TearDownTestCase(void)38 void NativeImageAdapterImplTest::TearDownTestCase(void) {}
39
SetUp(void)40 void NativeImageAdapterImplTest::SetUp(void) {}
41
TearDown(void)42 void NativeImageAdapterImplTest::TearDown(void) {}
43
44 /**
45 * @tc.name: NativeImageAdapterImplTest_UpdateSurfaceImage_001
46 * @tc.desc: UpdateSurfaceImage.
47 * @tc.type: FUNC
48 * @tc.require:
49 */
50 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_UpdateSurfaceImage_001, TestSize.Level1)
51 {
52 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
53 EXPECT_NE(imagerAdapter, nullptr);
54 int32_t result = imagerAdapter->UpdateSurfaceImage();
55 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
56 NWebNativeWindow window = imagerAdapter->AquireNativeWindowFromNativeImage();
57 EXPECT_EQ(window, nullptr);
58 int32_t context = imagerAdapter->AttachContext(1);
59 EXPECT_EQ(context, SURFACE_ERROR_ERROR);
60 context = imagerAdapter->DetachContext();
61 EXPECT_EQ(context, SURFACE_ERROR_ERROR);
62 uint32_t textureId = 1;
63 uint32_t textureTarget = 1;
64 imagerAdapter->CreateNativeImage(textureId, textureTarget);
65 result = imagerAdapter->UpdateSurfaceImage();
66 EXPECT_NE(result, static_cast<uint32_t>(SURFACE_ERROR_ERROR));
67 window = imagerAdapter->AquireNativeWindowFromNativeImage();
68 EXPECT_NE(window, nullptr);
69 imagerAdapter->AttachContext(1);
70 imagerAdapter->DetachContext();
71 }
72
73 /**
74 * @tc.name: NativeImageAdapterImplTest_GetTimestamp_001
75 * @tc.desc: GetTimestamp.
76 * @tc.type: FUNC
77 * @tc.require:
78 */
79 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetTimestamp_001, TestSize.Level1)
80 {
81 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
82 EXPECT_NE(imagerAdapter, nullptr);
83 int32_t result = imagerAdapter->GetTimestamp();
84 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
85 uint32_t textureId = 1;
86 uint32_t textureTarget = 1;
87 imagerAdapter->CreateNativeImage(textureId, textureTarget);
88 result = imagerAdapter->GetTimestamp();
89 EXPECT_EQ(result, 0);
90 }
91
92 /**
93 * @tc.name: NativeImageAdapterImplTest_GetTransformMatrix_001
94 * @tc.desc: GetTransformMatrix.
95 * @tc.type: FUNC
96 * @tc.require:
97 */
98 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetTransformMatrix_001, TestSize.Level1)
99 {
100 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
101 EXPECT_NE(imagerAdapter, nullptr);
102 float matrix[16] = { 0 };
103 int32_t result = imagerAdapter->GetTransformMatrix(matrix);
104 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
105 uint32_t textureId = 1;
106 uint32_t textureTarget = 1;
107 imagerAdapter->CreateNativeImage(textureId, textureTarget);
108 result = imagerAdapter->GetTransformMatrix(matrix);
109 EXPECT_EQ(result, 0);
110 }
111
112 /**
113 * @tc.name: NativeImageAdapterImplTest_GetSurfaceId001
114 * @tc.desc:GetSurfaceId.
115 * @tc.type: FUNC
116 * @tc.require:
117 */
118 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetSurfaceId_001, TestSize.Level1)
119 {
120 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
121 EXPECT_NE(imagerAdapter, nullptr);
122 uint64_t surfaceId = 1;
123 int32_t result = imagerAdapter->GetSurfaceId(&surfaceId);
124 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
125 uint32_t textureId = 1;
126 uint32_t textureTarget = 1;
127 imagerAdapter->CreateNativeImage(textureId, textureTarget);
128 result = imagerAdapter->GetSurfaceId(&surfaceId);
129 EXPECT_EQ(result, 0);
130 }
131
132 /**
133 * @tc.name: NativeImageAdapterImplTest_SetOnFrameAvailableListener001
134 * @tc.desc:SetOnFrameAvailableListener.
135 * @tc.type: FUNC
136 * @tc.require:s
137 */
138 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_SetOnFrameAvailableListener_001, TestSize.Level1)
139 {
140 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
141 EXPECT_NE(imagerAdapter, nullptr);
142 int32_t result = imagerAdapter->SetOnFrameAvailableListener(nullptr);
143 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
144 uint32_t textureId = 1;
145 uint32_t textureTarget = 1;
146 imagerAdapter->CreateNativeImage(textureId, textureTarget);
147 result = imagerAdapter->SetOnFrameAvailableListener(nullptr);
148 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
149 }
150
151 /**
152 * @tc.name: NativeImageAdapterImplTest_UnsetOnFrameAvailableListener001
153 * @tc.desc:UnsetOnFrameAvailableListener.
154 * @tc.type: FUNC
155 * @tc.require:
156 */
157 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_UnsetOnFrameAvailableListener_001, TestSize.Level1)
158 {
159 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
160 EXPECT_NE(imagerAdapter, nullptr);
161 int32_t result = imagerAdapter->UnsetOnFrameAvailableListener();
162 EXPECT_EQ(result, SURFACE_ERROR_ERROR);
163 uint32_t textureId = 1;
164 uint32_t textureTarget = 1;
165 imagerAdapter->CreateNativeImage(textureId, textureTarget);
166 result = imagerAdapter->UnsetOnFrameAvailableListener();
167 EXPECT_EQ(result, 0);
168 }
169
170 /**
171 * @tc.name: NativeImageAdapterImplTest_DestroyNativeImage001
172 * @tc.desc:DestroyNativeImage.
173 * @tc.type: FUNC
174 * @tc.require:
175 */
176 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_DestroyNativeImage_001, TestSize.Level1)
177 {
178 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
179 EXPECT_NE(imagerAdapter, nullptr);
180 imagerAdapter->DestroyNativeImage();
181 }
182
183 /**
184 * @tc.name: NativeImageAdapterImplTest_NewNativeImage001
185 * @tc.desc:NewNativeImage.
186 * @tc.type: FUNC
187 * @tc.require:
188 */
189 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_NewNativeImage_001, TestSize.Level1)
190 {
191 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
192 EXPECT_NE(imagerAdapter, nullptr);
193 imagerAdapter->NewNativeImage();
194 EXPECT_NE(imagerAdapter->ohNativeImage_, nullptr);
195 }
196
197 /**
198 * @tc.name: NativeImageAdapterImplTest_AcquireNativeWindowBuffer001
199 * @tc.desc:AcquireNativeWindowBuffer.
200 * @tc.type: FUNC
201 * @tc.require:
202 */
203 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_AcquireNativeWindowBuffer_001, TestSize.Level1)
204 {
205 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
206 EXPECT_NE(imagerAdapter, nullptr);
207
208 void* windowBuffer = nullptr;
209 int fenceId = -1;
210 int32_t ret = imagerAdapter->AcquireNativeWindowBuffer(&windowBuffer, &fenceId);
211 EXPECT_EQ(ret, SURFACE_ERROR_ERROR);
212
213 imagerAdapter->NewNativeImage();
214 EXPECT_NE(imagerAdapter->ohNativeImage_, nullptr);
215 ret = imagerAdapter->AcquireNativeWindowBuffer(&windowBuffer, &fenceId);
216 EXPECT_NE(ret, GSERROR_OK);
217 }
218
219 /**
220 * @tc.name: NativeImageAdapterImplTest_GetNativeBuffer001
221 * @tc.desc:GetNativeBuffer.
222 * @tc.type: FUNC
223 * @tc.require:
224 */
225 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetNativeBuffer_001, TestSize.Level1)
226 {
227 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
228 EXPECT_NE(imagerAdapter, nullptr);
229
230 void* windowBuffer = nullptr;
231 void* nativeBuffer = nullptr;
232 imagerAdapter->GetNativeBuffer(windowBuffer, &nativeBuffer);
233 }
234
235 /**
236 * @tc.name: NativeImageAdapterImplTest_ReleaseNativeWindowBuffer001
237 * @tc.desc:ReleaseNativeWindowBuffer.
238 * @tc.type: FUNC
239 * @tc.require:
240 */
241 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_ReleaseNativeWindowBuffer_001, TestSize.Level1)
242 {
243 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
244 EXPECT_NE(imagerAdapter, nullptr);
245
246 void* windowBuffer = nullptr;
247 int fenceId = -1;
248 int32_t ret = imagerAdapter->ReleaseNativeWindowBuffer(windowBuffer, fenceId);
249 EXPECT_EQ(ret, SURFACE_ERROR_ERROR);
250
251 imagerAdapter->NewNativeImage();
252 EXPECT_NE(imagerAdapter->ohNativeImage_, nullptr);
253 imagerAdapter->ReleaseNativeWindowBuffer(windowBuffer, fenceId);
254 }
255
256 /**
257 * @tc.name: NativeImageAdapterImplTest_GetNativeWindowBufferSize001
258 * @tc.desc:GetNativeWindowBufferSize.
259 * @tc.type: FUNC
260 * @tc.require:
261 */
262 HWTEST_F(NativeImageAdapterImplTest, NativeImageAdapterImplTest_GetNativeWindowBufferSize_001, TestSize.Level1)
263 {
264 std::shared_ptr<NativeImageAdapterImpl> imagerAdapter = std::make_shared<NativeImageAdapterImpl>();
265 EXPECT_NE(imagerAdapter, nullptr);
266
267 void* windowBuffer = nullptr;
268 uint32_t width = 0;
269 uint32_t height = 0;
270 imagerAdapter->GetNativeWindowBufferSize(windowBuffer, &width, &height);
271 EXPECT_EQ(width, 0);
272 EXPECT_EQ(height, 0);
273 }
274 } // namespace OHOS::NWeb
275