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