• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 #include <cstdio>
16 #include <fstream>
17 #include <gtest/gtest.h>
18 
19 #include "input_manager_util.h"
20 #include "mmi_log.h"
21 #include "pointer_renderer.h"
22 
23 #undef MMI_LOG_TAG
24 #define MMI_LOG_TAG "PointerRendererTest"
25 
26 namespace OHOS {
27 namespace MMI {
28 namespace {
29 using namespace testing::ext;
30 } // namespace
31 class PointerRendererTest : public testing::Test {
32 public:
SetUpTestCase(void)33     static void SetUpTestCase(void) {};
TearDownTestCase(void)34     static void TearDownTestCase(void) {};
SetUp(void)35     void SetUp(void) {};
36 };
37 
38 /**
39  * @tc.name: PointerRendererTest_GetOffsetX_001
40  * @tc.desc: Test GetOffsetX
41  * @tc.type: Function
42  * @tc.require:
43  */
44 HWTEST_F(PointerRendererTest, PointerRendererTest_GetOffsetX_001, TestSize.Level1)
45 {
46     CALL_TEST_DEBUG;
47     RenderConfig config;
48     config.align = ICON_TYPE::ANGLE_E;
49     int32_t ret = config.GetOffsetX();
50     EXPECT_EQ(ret, 256);
51     config.align = ICON_TYPE::ANGLE_S;
52     ret = config.GetOffsetX();
53     EXPECT_EQ(ret, 256);
54     config.align = ICON_TYPE::ANGLE_W;
55     ret = config.GetOffsetX();
56     EXPECT_EQ(ret, 256);
57     config.align = ICON_TYPE::ANGLE_N;
58     ret = config.GetOffsetX();
59     EXPECT_EQ(ret, 256);
60     config.align = ICON_TYPE::ANGLE_SE;
61     ret = config.GetOffsetX();
62     EXPECT_EQ(ret, 256);
63     config.align = ICON_TYPE::ANGLE_NE;
64     ret = config.GetOffsetX();
65     EXPECT_EQ(ret, 256);
66     config.align = ICON_TYPE::ANGLE_SW;
67     ret = config.GetOffsetX();
68     EXPECT_EQ(ret, 256);
69     config.align = ICON_TYPE::ANGLE_NW;
70     ret = config.GetOffsetX();
71     EXPECT_EQ(ret, 256);
72     config.align = ICON_TYPE::ANGLE_CENTER;
73     ret = config.GetOffsetX();
74     EXPECT_EQ(ret, 256);
75     config.align = ICON_TYPE::ANGLE_NW_RIGHT;
76     ret = config.GetOffsetX();
77     EXPECT_EQ(ret, 256);
78 }
79 
80 /**
81  * @tc.name: PointerRendererTest_GetOffsetY_001
82  * @tc.desc: Test GetOffsetY
83  * @tc.type: Function
84  * @tc.require:
85  */
86 HWTEST_F(PointerRendererTest, PointerRendererTest_GetOffsetY_001, TestSize.Level1)
87 {
88     CALL_TEST_DEBUG;
89     RenderConfig config;
90     config.align = ICON_TYPE::ANGLE_E;
91     int32_t ret = config.GetOffsetY();
92     EXPECT_EQ(ret, 256);
93     config.align = ICON_TYPE::ANGLE_S;
94     ret = config.GetOffsetY();
95     EXPECT_EQ(ret, 256);
96     config.align = ICON_TYPE::ANGLE_W;
97     ret = config.GetOffsetY();
98     EXPECT_EQ(ret, 256);
99     config.align = ICON_TYPE::ANGLE_N;
100     ret = config.GetOffsetY();
101     EXPECT_EQ(ret, 256);
102     config.align = ICON_TYPE::ANGLE_SE;
103     ret = config.GetOffsetY();
104     EXPECT_EQ(ret, 256);
105     config.align = ICON_TYPE::ANGLE_NE;
106     ret = config.GetOffsetY();
107     EXPECT_EQ(ret, 256);
108     config.align = ICON_TYPE::ANGLE_SW;
109     ret = config.GetOffsetY();
110     EXPECT_EQ(ret, 256);
111     config.align = ICON_TYPE::ANGLE_NW;
112     ret = config.GetOffsetY();
113     EXPECT_EQ(ret, 256);
114     config.align = ICON_TYPE::ANGLE_CENTER;
115     ret = config.GetOffsetY();
116     EXPECT_EQ(ret, 256);
117     config.align = ICON_TYPE::ANGLE_NW_RIGHT;
118     ret = config.GetOffsetY();
119     EXPECT_EQ(ret, 256);
120 }
121 
122 /**
123  * @tc.name: PointerRendererTest_UserIconScale_001
124  * @tc.desc: Test UserIconScale
125  * @tc.type: Function
126  * @tc.require:
127  */
128 HWTEST_F(PointerRendererTest, PointerRendererTest_UserIconScale_001, TestSize.Level1)
129 {
130     CALL_TEST_DEBUG;
131     RenderConfig config;
132     uint32_t width = 100;
133     uint32_t height = 200;
134     config.userIconFollowSystem = true;
135     PointerRenderer renderer;
136     image_ptr_t ret = renderer.UserIconScale(width, height, config);
137     EXPECT_EQ(ret, nullptr);
138     config.userIconFollowSystem = false;
139     ret = renderer.UserIconScale(width, height, config);
140     EXPECT_EQ(ret, nullptr);
141 }
142 
143 /**
144  * @tc.name: PointerRendererTest_Render_001
145  * @tc.desc: Test Render
146  * @tc.type: Function
147  * @tc.require:
148  */
149 HWTEST_F(PointerRendererTest, PointerRendererTest_Render_001, TestSize.Level1)
150 {
151     CALL_TEST_DEBUG;
152     RenderConfig config;
153     PointerRenderer renderer;
154     uint32_t width = 10;
155     uint32_t height = 20;
156     uint8_t addr[800] = {10};
157     config.style = MOUSE_ICON::TRANSPARENT_ICON;
158     int32_t ret = renderer.Render(addr, width, height, config);
159     EXPECT_EQ(ret, RET_OK);
160     config.style = MOUSE_ICON::AECH_DEVELOPER_DEFINED_ICON;
161     ret = renderer.Render(addr, width, height, config);
162     config.direction = 5;
163     EXPECT_EQ(ret, RET_ERR);
164     config.direction = 0;
165     config.style = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
166     ret = renderer.Render(addr, width, height, config);
167     EXPECT_EQ(ret, RET_ERR);
168 }
169 
170 /**
171  * @tc.name: PointerRendererTest_DynamicRender_001
172  * @tc.desc: Test DynamicRender
173  * @tc.type: Function
174  * @tc.require:
175  */
176 HWTEST_F(PointerRendererTest, PointerRendererTest_DynamicRender_001, TestSize.Level1)
177 {
178     CALL_TEST_DEBUG;
179     RenderConfig config;
180     PointerRenderer renderer;
181     uint32_t width = 10;
182     uint32_t height = 20;
183     uint8_t addr[800] = {10};
184     config.style = MOUSE_ICON::TRANSPARENT_ICON;
185     int32_t ret = renderer.DynamicRender(addr, width, height, config);
186     EXPECT_EQ(ret, RET_OK);
187     config.style = MOUSE_ICON::AECH_DEVELOPER_DEFINED_ICON;
188     ret = renderer.DynamicRender(addr, width, height, config);
189     config.direction = 5;
190     EXPECT_EQ(ret, RET_OK);
191     config.direction = 0;
192     config.style = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
193     ret = renderer.DynamicRender(addr, width, height, config);
194     EXPECT_EQ(ret, RET_OK);
195 }
196 
197 /**
198  * @tc.name: PointerRendererTest_ExtractDrawingImage_001
199  * @tc.desc: Test ExtractDrawingImage
200  * @tc.type: Function
201  * @tc.require:
202  */
203 HWTEST_F(PointerRendererTest, PointerRendererTest_ExtractDrawingImage_001, TestSize.Level1)
204 {
205     CALL_TEST_DEBUG;
206     PointerRenderer renderer;
207     pixelmap_ptr_t pixelMap = std::make_shared<OHOS::Media::PixelMap>();
208     ASSERT_NE(pixelMap, nullptr);
209     Media::ImageInfo imageInfo;
210     imageInfo.size.width = 280;
211     imageInfo.size.height = 280;
212     imageInfo.pixelFormat = Media::PixelFormat::RGB_565;
213     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNKNOWN;
214     imageInfo.colorSpace = Media::ColorSpace::DISPLAY_P3;
215     pixelMap->SetImageInfo(imageInfo);
216     image_ptr_t ret = renderer.ExtractDrawingImage(pixelMap);
217     ASSERT_EQ(ret, nullptr);
218     imageInfo.pixelFormat = Media::PixelFormat::RGBA_8888;
219     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
220     imageInfo.colorSpace = Media::ColorSpace::LINEAR_SRGB;
221     pixelMap->SetImageInfo(imageInfo);
222     ret = renderer.ExtractDrawingImage(pixelMap);
223     ASSERT_EQ(ret, nullptr);
224     imageInfo.pixelFormat = Media::PixelFormat::BGRA_8888;
225     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_PREMUL;
226     imageInfo.colorSpace = Media::ColorSpace::SRGB;
227     pixelMap->SetImageInfo(imageInfo);
228     ret = renderer.ExtractDrawingImage(pixelMap);
229     ASSERT_EQ(ret, nullptr);
230     imageInfo.pixelFormat = Media::PixelFormat::ALPHA_8;
231     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNPREMUL;
232     imageInfo.colorSpace = Media::ColorSpace::UNKNOWN;
233     pixelMap->SetImageInfo(imageInfo);
234     ret = renderer.ExtractDrawingImage(pixelMap);
235     ASSERT_EQ(ret, nullptr);
236 }
237 
238 /**
239  * @tc.name: PointerRendererTest_ExtractDrawingImage_002
240  * @tc.desc: Test ExtractDrawingImage
241  * @tc.type: Function
242  * @tc.require:
243  */
244 HWTEST_F(PointerRendererTest, PointerRendererTest_ExtractDrawingImage_002, TestSize.Level1)
245 {
246     CALL_TEST_DEBUG;
247     PointerRenderer renderer;
248     pixelmap_ptr_t pixelMap = std::make_shared<OHOS::Media::PixelMap>();
249     ASSERT_NE(pixelMap, nullptr);
250     Media::ImageInfo imageInfo;
251     imageInfo.size.width = 280;
252     imageInfo.size.height = 280;
253     imageInfo.pixelFormat = Media::PixelFormat::RGBA_F16;
254     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNKNOWN;
255     imageInfo.colorSpace = Media::ColorSpace::DISPLAY_P3;
256     pixelMap->SetImageInfo(imageInfo);
257     image_ptr_t ret = renderer.ExtractDrawingImage(pixelMap);
258     ASSERT_EQ(ret, nullptr);
259     imageInfo.pixelFormat = Media::PixelFormat::UNKNOWN;
260     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
261     imageInfo.colorSpace = Media::ColorSpace::LINEAR_SRGB;
262     pixelMap->SetImageInfo(imageInfo);
263     ret = renderer.ExtractDrawingImage(pixelMap);
264     ASSERT_EQ(ret, nullptr);
265     imageInfo.pixelFormat = Media::PixelFormat::ARGB_8888;
266     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_PREMUL;
267     imageInfo.colorSpace = Media::ColorSpace::SRGB;
268     pixelMap->SetImageInfo(imageInfo);
269     ret = renderer.ExtractDrawingImage(pixelMap);
270     ASSERT_EQ(ret, nullptr);
271     imageInfo.pixelFormat = Media::PixelFormat::RGB_888;
272     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNPREMUL;
273     imageInfo.colorSpace = Media::ColorSpace::UNKNOWN;
274     pixelMap->SetImageInfo(imageInfo);
275     ret = renderer.ExtractDrawingImage(pixelMap);
276     ASSERT_EQ(ret, nullptr);
277 }
278 
279 /**
280  * @tc.name: PointerRendererTest_ExtractDrawingImage_003
281  * @tc.desc: Test ExtractDrawingImage
282  * @tc.type: Function
283  * @tc.require:
284  */
285 HWTEST_F(PointerRendererTest, PointerRendererTest_ExtractDrawingImage_003, TestSize.Level1)
286 {
287     CALL_TEST_DEBUG;
288     PointerRenderer renderer;
289     pixelmap_ptr_t pixelMap = std::make_shared<OHOS::Media::PixelMap>();
290     ASSERT_NE(pixelMap, nullptr);
291     Media::ImageInfo imageInfo;
292     imageInfo.size.width = 280;
293     imageInfo.size.height = 280;
294     imageInfo.pixelFormat = Media::PixelFormat::NV21;
295     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNKNOWN;
296     imageInfo.colorSpace = Media::ColorSpace::DISPLAY_P3;
297     pixelMap->SetImageInfo(imageInfo);
298     image_ptr_t ret = renderer.ExtractDrawingImage(pixelMap);
299     ASSERT_EQ(ret, nullptr);
300     imageInfo.pixelFormat = Media::PixelFormat::NV12;
301     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
302     imageInfo.colorSpace = Media::ColorSpace::LINEAR_SRGB;
303     pixelMap->SetImageInfo(imageInfo);
304     ret = renderer.ExtractDrawingImage(pixelMap);
305     ASSERT_EQ(ret, nullptr);
306     imageInfo.pixelFormat = Media::PixelFormat::CMYK;
307     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_PREMUL;
308     imageInfo.colorSpace = Media::ColorSpace::SRGB;
309     pixelMap->SetImageInfo(imageInfo);
310     ret = renderer.ExtractDrawingImage(pixelMap);
311     ASSERT_EQ(ret, nullptr);
312     imageInfo.pixelFormat = Media::PixelFormat::RGBA_1010102;
313     imageInfo.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_PREMUL;
314     imageInfo.colorSpace = Media::ColorSpace::SRGB;
315     pixelMap->SetImageInfo(imageInfo);
316     ret = renderer.ExtractDrawingImage(pixelMap);
317     ASSERT_EQ(ret, nullptr);
318 }
319 
320 /**
321  * @tc.name: PointerRendererTest_DrawImage_001
322  * @tc.desc: Test DrawImage
323  * @tc.type: Function
324  * @tc.require:
325  */
326 HWTEST_F(PointerRendererTest, PointerRendererTest_DrawImage_001, TestSize.Level1)
327 {
328     CALL_TEST_DEBUG;
329     PointerRenderer renderer;
330     OHOS::Rosen::Drawing::Canvas canvas;
331     RenderConfig config;
332     config.style = MOUSE_ICON::LOADING;
333     int32_t ret = renderer.DrawImage(canvas, config);
334     EXPECT_EQ(ret, RET_ERR);
335     config.style = MOUSE_ICON::DEFAULT;
336     ret = renderer.DrawImage(canvas, config);
337     EXPECT_EQ(ret, RET_OK);
338 }
339 } // namespace MMI
340 } // namespace OHOS