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