• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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