• 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 
16 #include <cstdio>
17 #include <fstream>
18 
19 #include <gtest/gtest.h>
20 
21 #include "common_event_data.h"
22 #include "common_event_subscribe_info.h"
23 #include "image_source.h"
24 #include "input_windows_manager_mock.h"
25 #include "i_preference_manager.h"
26 #include "knuckle_drawing_manager.h"
27 #include "libinput_mock.h"
28 #include "mmi_log.h"
29 #include "parameters.h"
30 #include "pixel_map.h"
31 #include "pointer_drawing_manager.h"
32 #include "pointer_event.h"
33 
34 #undef MMI_LOG_TAG
35 #define MMI_LOG_TAG "PointerDrawingManagerTest"
36 
37 namespace OHOS {
38 namespace MMI {
39 namespace {
40 using namespace testing::ext;
41 constexpr int32_t MOUSE_ICON_SIZE = 64;
42 constexpr uint32_t DEFAULT_ICON_COLOR { 0xFF };
43 constexpr int32_t MIDDLE_PIXEL_MAP_WIDTH { 400 };
44 constexpr int32_t MIDDLE_PIXEL_MAP_HEIGHT { 400 };
45 constexpr int32_t MAX_PIXEL_MAP_WIDTH { 600 };
46 constexpr int32_t MAX_PIXEL_MAP_HEIGHT { 600 };
47 constexpr int32_t INT32_BYTE { 4 };
48 constexpr int32_t WINDOW_ROTATE { 0 };
49 constexpr int32_t FOLDABLE_DEVICE { 2 };
50 constexpr int32_t MIN_POINTER_COLOR { 0x000000 };
51 const std::string MOUSE_FILE_NAME { "mouse_settings.xml" };
52 const int32_t ROTATE_POLICY = system::GetIntParameter("const.window.device.rotate_policy", 0);
53 const std::string IMAGE_POINTER_DEFAULT_PATH = "/system/etc/multimodalinput/mouse_icon/";
54 const std::string CURSOR_ICON_PATH = IMAGE_POINTER_DEFAULT_PATH + "Cursor_Circle.png";
55 const std::string CUSTOM_CURSOR_ICON_PATH = IMAGE_POINTER_DEFAULT_PATH + "Custom_Cursor_Circle.svg";
56 const std::string DEFAULT_ICON_PATH = IMAGE_POINTER_DEFAULT_PATH + "Default.svg";
57 constexpr int32_t AECH_DEVELOPER_DEFINED_STYLE { 47 };
58 constexpr int32_t AECH_DEVELOPER_DEFINED { 4 };
59 std::atomic<bool> g_isRsRestart;
60 } // namespace
61 
62 class PointerDrawingManagerTest : public testing::Test {
63 public:
SetUpTestCase(void)64     static void SetUpTestCase(void) {};
TearDownTestCase(void)65     static void TearDownTestCase(void) {};
66     static std::shared_ptr<Media::PixelMap> CreatePixelMap(int32_t width, int32_t height);
SetUp(void)67     void SetUp(void) {}
TearDown(void)68     void TearDown(void) {}
69 
70     std::unique_ptr<OHOS::Media::PixelMap> SetMouseIconTest(const std::string iconPath);
71 
72 private:
73 };
74 
SetMouseIconTest(const std::string iconPath)75 std::unique_ptr<OHOS::Media::PixelMap> PointerDrawingManagerTest::SetMouseIconTest(const std::string iconPath)
76 {
77     CALL_DEBUG_ENTER;
78     OHOS::Media::SourceOptions opts;
79     opts.formatHint = "image/svg+xml";
80     uint32_t ret = 0;
81     auto imageSource = OHOS::Media::ImageSource::CreateImageSource(iconPath, opts, ret);
82     CHKPP(imageSource);
83     std::set<std::string> formats;
84     ret = imageSource->GetSupportedFormats(formats);
85     MMI_HILOGD("Get supported format ret:%{public}u", ret);
86 
87     OHOS::Media::DecodeOptions decodeOpts;
88     decodeOpts.desiredSize = {.width = MOUSE_ICON_SIZE, .height = MOUSE_ICON_SIZE};
89 
90     std::unique_ptr<OHOS::Media::PixelMap> pixelMap = imageSource->CreatePixelMap(decodeOpts, ret);
91     CHKPL(pixelMap);
92     return pixelMap;
93 }
94 
CreatePixelMap(int32_t width,int32_t height)95 std::shared_ptr<Media::PixelMap> PointerDrawingManagerTest::CreatePixelMap(int32_t width, int32_t height)
96 {
97     CALL_DEBUG_ENTER;
98     if (width <= 0 || width > MAX_PIXEL_MAP_WIDTH || height <= 0 || height > MAX_PIXEL_MAP_HEIGHT) {
99         return nullptr;
100     }
101     Media::InitializationOptions opts;
102     opts.size.height = height;
103     opts.size.width = width;
104     opts.pixelFormat = Media::PixelFormat::BGRA_8888;
105     opts.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
106     opts.scaleMode = Media::ScaleMode::FIT_TARGET_SIZE;
107 
108     int32_t colorLen = width * height;
109     uint32_t *pixelColors = new (std::nothrow) uint32_t[colorLen];
110     CHKPP(pixelColors);
111     int32_t colorByteCount = colorLen * INT32_BYTE;
112     errno_t ret = memset_s(pixelColors, colorByteCount, DEFAULT_ICON_COLOR, colorByteCount);
113     if (ret != EOK) {
114         delete[] pixelColors;
115         return nullptr;
116     }
117     std::shared_ptr<Media::PixelMap> pixelMap = Media::PixelMap::Create(pixelColors, colorLen, opts);
118     if (pixelMap == nullptr) {
119         delete[] pixelColors;
120         return nullptr;
121     }
122     delete[] pixelColors;
123     return pixelMap;
124 }
125 
126 /**
127  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_01
128  * @tc.desc: Test DrawPointerStyle
129  * @tc.type: FUNC
130  * @tc.require:
131  */
132 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_01, TestSize.Level1)
133 {
134     CALL_TEST_DEBUG;
135     PointerDrawingManager pointerDrawingManager;
136     pointerDrawingManager.hasDisplay_ = true;
137     pointerDrawingManager.hasPointerDevice_ = true;
138     pointerDrawingManager.surfaceNode_ = nullptr;
139 
140     PointerStyle pointerStyle;
141     pointerStyle.id = 1;
142     pointerStyle.color = 1;
143     pointerStyle.size = 2;
144 
145     int32_t ROTATE_POLICY;
146     ROTATE_POLICY = WINDOW_ROTATE;
147     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
148 }
149 
150 /**
151  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_02
152  * @tc.desc: Test DrawManager
153  * @tc.type: FUNC
154  * @tc.require:
155  */
156 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_02, TestSize.Level1)
157 {
158     CALL_TEST_DEBUG;
159     PointerDrawingManager pointerDrawingManager;
160     pointerDrawingManager.hasDisplay_ = true;
161     pointerDrawingManager.hasPointerDevice_ = true;
162     pointerDrawingManager.surfaceNode_ = nullptr;
163 
164     PointerStyle pointerStyle;
165     pointerStyle.id = 1;
166     pointerStyle.color = 1;
167     pointerStyle.size = 2;
168 
169     int32_t ROTATE_POLICY;
170     ROTATE_POLICY = FOLDABLE_DEVICE;
171     pointerDrawingManager.lastPhysicalX_ = -1;
172     pointerDrawingManager.lastPhysicalY_ = -1;
173     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
174 }
175 
176 /**
177  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_03
178  * @tc.desc: Test DrawManager
179  * @tc.type: FUNC
180  * @tc.require:
181  */
182 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_03, TestSize.Level1)
183 {
184     CALL_TEST_DEBUG;
185     PointerDrawingManager pointerDrawingManager;
186     pointerDrawingManager.hasDisplay_ = true;
187     pointerDrawingManager.hasPointerDevice_ = true;
188     pointerDrawingManager.surfaceNode_ = nullptr;
189 
190     PointerStyle pointerStyle;
191     pointerStyle.id = 1;
192     pointerStyle.color = 1;
193     pointerStyle.size = 2;
194 
195     int32_t ROTATE_POLICY;
196     ROTATE_POLICY = FOLDABLE_DEVICE;
197     pointerDrawingManager.lastPhysicalX_ = 1;
198     pointerDrawingManager.lastPhysicalY_ = -1;
199     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
200 }
201 
202 /**
203  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_04
204  * @tc.desc: Test DrawManager
205  * @tc.type: FUNC
206  * @tc.require:
207  */
208 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_04, TestSize.Level1)
209 {
210     CALL_TEST_DEBUG;
211     PointerDrawingManager pointerDrawingManager;
212     pointerDrawingManager.hasDisplay_ = true;
213     pointerDrawingManager.hasPointerDevice_ = true;
214     pointerDrawingManager.surfaceNode_ = nullptr;
215 
216     PointerStyle pointerStyle;
217     pointerStyle.id = 1;
218     pointerStyle.color = 1;
219     pointerStyle.size = 2;
220 
221     int32_t ROTATE_POLICY;
222     ROTATE_POLICY = FOLDABLE_DEVICE;
223     pointerDrawingManager.lastPhysicalX_ = 2;
224     pointerDrawingManager.lastPhysicalY_ = 2;
225     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
226 }
227 
228 /**
229  * @tc.name: InputWindowsManagerTest_SetPointerStyle_01
230  * @tc.desc: Test SetPointerStyle
231  * @tc.type: FUNC
232  * @tc.require:
233  */
234 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_01, TestSize.Level1)
235 {
236     CALL_TEST_DEBUG;
237     PointerDrawingManager pointerDrawingManager;
238     bool isUiExtension = false;
239 
240     PointerStyle pointerStyle;
241     pointerStyle.id = 1;
242     pointerStyle.color = 0;
243     pointerStyle.size = 2;
244 
245     int32_t pid = 1;
246     int32_t windowId = -2;
247     bool ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
248     EXPECT_FALSE(ret);
249 
250     int32_t ret2 = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle, isUiExtension);
251     EXPECT_EQ(ret2, RET_ERR);
252 }
253 
254 /**
255  * @tc.name: InputWindowsManagerTest_SetPointerStyle_02
256  * @tc.desc: Test SetPointerStyle
257  * @tc.type: FUNC
258  * @tc.require:
259  */
260 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_02, TestSize.Level1)
261 {
262     CALL_TEST_DEBUG;
263     PointerDrawingManager pointerDrawingManager;
264     bool isUiExtension = true;
265 
266     PointerStyle pointerStyle;
267     pointerStyle.id = 1;
268     pointerStyle.color = 0;
269     pointerStyle.size = 2;
270 
271     int32_t pid = 1;
272     int32_t windowId = GLOBAL_WINDOW_ID;
273     bool ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
274     EXPECT_TRUE(ret);
275 
276     int32_t ret2 = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle, isUiExtension);
277     EXPECT_EQ(ret2, RET_OK);
278 }
279 
280 /**
281  * @tc.name: InputWindowsManagerTest_SetPointerStylePreference_01
282  * @tc.desc: Test SetPointerStylePreference
283  * @tc.type: FUNC
284  * @tc.require:
285  */
286 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStylePreference_01, TestSize.Level1)
287 {
288     CALL_TEST_DEBUG;
289     PointerDrawingManager pointerDrawingManager;
290     PointerStyle pointerStyle;
291     pointerStyle.id = 1;
292     pointerStyle.color = 1;
293     pointerStyle.size = 2;
294 
295     std::string name = "pointerStyle";
296     int32_t ret = PREFERENCES_MGR->SetIntValue(name, MOUSE_FILE_NAME, pointerStyle.id);
297     EXPECT_EQ(ret, RET_OK);
298 
299     int32_t ret2 = pointerDrawingManager.SetPointerStylePreference(pointerStyle);
300     EXPECT_EQ(ret2, RET_OK);
301 }
302 
303 /**
304  * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_01
305  * @tc.desc: Test SetMouseHotSpot
306  * @tc.type: FUNC
307  * @tc.require:
308  */
309 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_01, TestSize.Level1)
310 {
311     CALL_TEST_DEBUG;
312     PointerDrawingManager pointerDrawingManager;
313     int32_t pid = -1;
314     int32_t windowId = 2;
315     int32_t hotSpotX = 3;
316     int32_t hotSpotY = 4;
317     int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
318     ASSERT_EQ(ret, RET_ERR);
319 }
320 
321 /**
322  * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_02
323  * @tc.desc: Test SetMouseHotSpot
324  * @tc.type: FUNC
325  * @tc.require:
326  */
327 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_02, TestSize.Level1)
328 {
329     CALL_TEST_DEBUG;
330     PointerDrawingManager pointerDrawingManager;
331     int32_t pid = 1;
332     int32_t windowId = -2;
333     int32_t hotSpotX = 3;
334     int32_t hotSpotY = 4;
335     int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
336     ASSERT_EQ(ret, RET_ERR);
337 }
338 
339 /**
340  * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_03
341  * @tc.desc: Test SetMouseHotSpot
342  * @tc.type: FUNC
343  * @tc.require:
344  */
345 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_03, TestSize.Level1)
346 {
347     CALL_TEST_DEBUG;
348     PointerDrawingManager pointerDrawingManager;
349     int32_t pid = 1;
350     int32_t windowId = 2;
351     EXPECT_CALL(*WIN_MGR_MOCK, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_ERR));
352     int32_t hotSpotX = 3;
353     int32_t hotSpotY = 4;
354     int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
355     ASSERT_EQ(ret, RET_ERR);
356 }
357 
358 /**
359  * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_04
360  * @tc.desc: Test SetMouseHotSpot
361  * @tc.type: FUNC
362  * @tc.require:
363  */
364 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_04, TestSize.Level1)
365 {
366     CALL_TEST_DEBUG;
367     PointerDrawingManager pointerDrawingManager;
368     int32_t pid = 1;
369     int32_t windowId = 2;
370     EXPECT_CALL(*WIN_MGR_MOCK, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
371     int32_t hotSpotX = -3;
372     int32_t hotSpotY = -4;
373     pointerDrawingManager.userIcon_ = nullptr;
374     int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
375     ASSERT_EQ(ret, RET_ERR);
376 }
377 
378 /**
379  * @tc.name: InputWindowsManagerTest_SetMouseIcon_01
380  * @tc.desc: Test SetMouseIcon
381  * @tc.type: FUNC
382  * @tc.require:
383  */
384 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_01, TestSize.Level1)
385 {
386     CALL_TEST_DEBUG;
387     PointerDrawingManager pointerDrawingManager;
388     int32_t pid = -1;
389     int32_t windowId = -2;
390     CursorPixelMap curPixelMap;
391     int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
392     ASSERT_EQ(ret, RET_ERR);
393 }
394 
395 /**
396  * @tc.name: InputWindowsManagerTest_SetMouseIcon_02
397  * @tc.desc: Test SetMouseIcon
398  * @tc.type: FUNC
399  * @tc.require:
400  */
401 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_02, TestSize.Level1)
402 {
403     CALL_TEST_DEBUG;
404     PointerDrawingManager pointerDrawingManager;
405     int32_t pid = 1;
406     int32_t windowId = -2;
407     CursorPixelMap curPixelMap;
408     int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
409     ASSERT_EQ(ret, RET_ERR);
410 }
411 
412 /**
413  * @tc.name: InputWindowsManagerTest_SetMouseIcon_03
414  * @tc.desc: Test SetMouseIcon
415  * @tc.type: FUNC
416  * @tc.require:
417  */
418 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_03, TestSize.Level1)
419 {
420     CALL_TEST_DEBUG;
421     PointerDrawingManager pointerDrawingManager;
422     int32_t pid = 1;
423     int32_t windowId = 2;
424     PointerStyle style;
425     int32_t ret1 = pointerDrawingManager.SetPointerStyle(pid, windowId, style);
426     EXPECT_EQ(ret1, RET_OK);
427 
428     CursorPixelMap curPixelMap;
429     int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
430     ASSERT_EQ(ret, RET_ERR);
431 }
432 
433 /**
434  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_01
435  * @tc.desc: Test AdjustMouseFocusByDirection270
436  * @tc.type: FUNC
437  * @tc.require:
438  */
439 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_01, TestSize.Level1)
440 {
441     CALL_TEST_DEBUG;
442     PointerDrawingManager pointerDrawingManager;
443     ICON_TYPE iconType = ANGLE_SW;
444     int32_t physicalX = 150;
445     int32_t physicalY = 200;
446     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
447 }
448 
449 /**
450  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_02
451  * @tc.desc: Test AdjustMouseFocusByDirection270
452  * @tc.type: FUNC
453  * @tc.require:
454  */
455 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_02, TestSize.Level1)
456 {
457     CALL_TEST_DEBUG;
458     PointerDrawingManager pointerDrawingManager;
459     ICON_TYPE iconType = ANGLE_CENTER;
460     int32_t physicalX = 100;
461     int32_t physicalY = 150;
462     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
463 }
464 
465 /**
466  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_03
467  * @tc.desc: Test AdjustMouseFocusByDirection270
468  * @tc.type: FUNC
469  * @tc.require:
470  */
471 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_03, TestSize.Level1)
472 {
473     CALL_TEST_DEBUG;
474     PointerDrawingManager pointerDrawingManager;
475     ICON_TYPE iconType = ANGLE_NW_RIGHT;
476     int32_t physicalX = 50;
477     int32_t physicalY = 150;
478     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
479 }
480 
481 /**
482  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_04
483  * @tc.desc: Test AdjustMouseFocusByDirection270
484  * @tc.type: FUNC
485  * @tc.require:
486  */
487 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_04, TestSize.Level1)
488 {
489     CALL_TEST_DEBUG;
490     PointerDrawingManager pointerDrawingManager;
491     ICON_TYPE iconType = ANGLE_NW;
492     int32_t physicalX = 100;
493     int32_t physicalY = 50;
494     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.AdjustMouseFocusByDirection270(iconType, physicalX, physicalY));
495 }
496 
497 /**
498  * @tc.name: InputWindowsManagerTest_DrawMovePointer_001
499  * @tc.desc: Test the funcation DrawMovePointer
500  * @tc.type: FUNC
501  * @tc.require:
502  */
503 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawMovePointer_001, TestSize.Level1)
504 {
505     CALL_TEST_DEBUG;
506     PointerDrawingManager manager;
507     uint64_t displayId = 1;
508     int32_t physicalX = 2;
509     int32_t physicalY = 3;
510     PointerStyle pointerStyle;
511     Direction direction = DIRECTION0;
512     manager.surfaceNode_ = nullptr;
513     int32_t ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
514     EXPECT_EQ(ret, RET_ERR);
515     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
516     surfaceNodeConfig.SurfaceNodeName = "pointer window";
517     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
518     manager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
519     ASSERT_TRUE(manager.surfaceNode_ != nullptr);
520     ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
521     EXPECT_EQ(ret, RET_OK);
522 }
523 
524 /**
525  * @tc.name: InputWindowsManagerTest_DrawCursor_002
526  * @tc.desc: Test the funcation DrawCursor
527  * @tc.type: FUNC
528  * @tc.require:
529  */
530 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawCursor_002, TestSize.Level1)
531 {
532     CALL_TEST_DEBUG;
533     PointerDrawingManager manager;
534     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
535     surfaceNodeConfig.SurfaceNodeName = "pointer window";
536     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
537     manager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
538     ASSERT_TRUE(manager.surfaceNode_ != nullptr);
539     MOUSE_ICON mouseStyle = EAST;
540     int32_t ret = manager.DrawCursor(mouseStyle);
541     EXPECT_EQ(ret, RET_OK);
542 }
543 
544 /**
545  * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_003
546  * @tc.desc: Test SetMouseHotSpot
547  * @tc.type: FUNC
548  * @tc.require:
549  */
550 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_003, TestSize.Level1)
551 {
552     CALL_TEST_DEBUG;
553     PointerDrawingManager pointerDrawingManager;
554     auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
555     int32_t pid = 1;
556     int32_t windowId = -2;
557     EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
558     int32_t hotSpotX = -1;
559     int32_t hotSpotY = 2;
560     pointerDrawingManager.userIcon_ = nullptr;
561     int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
562     ASSERT_EQ(ret, RET_ERR);
563     hotSpotX = 1;
564     hotSpotY = -2;
565     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
566     ASSERT_EQ(ret, RET_ERR);
567     hotSpotX = 1;
568     hotSpotY = 2;
569     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
570     ASSERT_EQ(ret, RET_ERR);
571     pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
572     ASSERT_NE(pointerDrawingManager.userIcon_, nullptr);
573     hotSpotX = -1;
574     hotSpotY = 2;
575     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
576     ASSERT_EQ(ret, RET_ERR);
577     hotSpotX = -1;
578     hotSpotY = -2;
579     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
580     ASSERT_EQ(ret, RET_ERR);
581     hotSpotX = 1;
582     hotSpotY = -2;
583     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
584     ASSERT_EQ(ret, RET_ERR);
585     hotSpotX = 3;
586     hotSpotY = 4;
587     pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
588     ASSERT_NE(pointerDrawingManager.userIcon_, nullptr);
589     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
590     ASSERT_EQ(ret, RET_ERR);
591     testing::Mock::AllowLeak(winmgrmock.get());
592 }
593 
594 /**
595  * @tc.name: InputWindowsManagerTest_SetPointerColor_002
596  * @tc.desc: Test SetPointerColor
597  * @tc.type: FUNC
598  * @tc.require:
599  */
600 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerColor_002, TestSize.Level1)
601 {
602     CALL_TEST_DEBUG;
603     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
604     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
605     surfaceNodeConfig.SurfaceNodeName = "pointer window";
606     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
607     pointerDrawingManager->surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
608     ASSERT_TRUE(pointerDrawingManager->surfaceNode_ != nullptr);
609     pointerDrawingManager->SetPointerColor(16777216);
610     int32_t color = pointerDrawingManager->GetPointerColor();
611     EXPECT_EQ(color, RET_OK);
612 }
613 
614 /**
615  * @tc.name: InputWindowsManagerTest_UpdatePointerDevice_002
616  * @tc.desc: Test UpdatePointerDevice
617  * @tc.type: FUNC
618  * @tc.require:
619  */
620 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerDevice_002, TestSize.Level1)
621 {
622     CALL_TEST_DEBUG;
623     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
624     EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 0);
625     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(true, false, true));
626     EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 1);
627     pointerDrawingManager->surfaceNode_ = nullptr;
628     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
629     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
630     surfaceNodeConfig.SurfaceNodeName = "pointer window";
631     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
632     pointerDrawingManager->surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
633     ASSERT_TRUE(pointerDrawingManager->surfaceNode_ != nullptr);
634     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
635 }
636 
637 /**
638  * @tc.name: InputWindowsManagerTest_DrawManager_005
639  * @tc.desc: Test DrawManager
640  * @tc.type: FUNC
641  * @tc.require:
642  */
643 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_005, TestSize.Level1)
644 {
645     CALL_TEST_DEBUG;
646     PointerDrawingManager pointerDrawingManager;
647     auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
648     pointerDrawingManager.hasDisplay_ = true;
649     pointerDrawingManager.hasPointerDevice_ = true;
650     pointerDrawingManager.surfaceNode_ = nullptr;
651     EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_ERR));
652     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
653     EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
654     pointerDrawingManager.lastPhysicalX_ = -1;
655     pointerDrawingManager.lastPhysicalY_ = 1;
656     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
657     pointerDrawingManager.lastPhysicalX_ = 1;
658     pointerDrawingManager.lastPhysicalY_ = -1;
659     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
660     pointerDrawingManager.lastPhysicalX_ = -1;
661     pointerDrawingManager.lastPhysicalY_ = -1;
662     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
663     EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
664     pointerDrawingManager.lastPhysicalX_ = 1;
665     pointerDrawingManager.lastPhysicalY_ = 1;
666     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
667     testing::Mock::AllowLeak(winmgrmock.get());
668 }
669 
670 /**
671  * @tc.name: InputWindowsManagerTest_SetPointerVisible_002
672  * @tc.desc: Test SetPointerVisible
673  * @tc.type: FUNC
674  * @tc.require:
675  */
676 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_002, TestSize.Level1)
677 {
678     CALL_TEST_DEBUG;
679     auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
680     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
681     ExtraData data1;
682     data1.appended = true;
683     EXPECT_CALL(*winmgrmock, GetExtraData).WillRepeatedly(testing::Return(data1));
684     int32_t pid = 1;
685     bool visible = true;
686     int32_t priority = 0;
687     int32_t ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
688     ASSERT_EQ(ret, RET_OK);
689     visible = false;
690     priority = 0;
691     ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
692     ASSERT_EQ(ret, RET_OK);
693     visible = true;
694     priority = 1;
695     ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
696     ASSERT_EQ(ret, RET_OK);
697     visible = false;
698     priority = 1;
699     ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
700     ASSERT_EQ(ret, RET_OK);
701     ExtraData data2;
702     data2.appended = false;
703     EXPECT_CALL(*winmgrmock, GetExtraData).WillRepeatedly(testing::Return(data2));
704     visible = false;
705     priority = 0;
706     ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
707     ASSERT_EQ(ret, RET_OK);
708     visible = true;
709     priority = 1;
710     ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
711     ASSERT_EQ(ret, RET_OK);
712     visible = false;
713     priority = 1;
714     ret = pointerDrawingManager->SetPointerVisible(pid, visible, priority, false);
715     ASSERT_EQ(ret, RET_OK);
716     testing::Mock::AllowLeak(winmgrmock.get());
717 }
718 
719 /**
720  * @tc.name: InputWindowsManagerTest_SetPointerLocation_002
721  * @tc.desc: Test SetPointerLocation
722  * @tc.type: FUNC
723  * @tc.require:
724  */
725 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerLocation_002, TestSize.Level1)
726 {
727     CALL_TEST_DEBUG;
728     PointerDrawingManager pointerDrawingManager;
729     int32_t x = 100;
730     int32_t y = 100;
731     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
732     surfaceNodeConfig.SurfaceNodeName = "pointer window";
733     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
734     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
735     ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
736     uint64_t displayId = 0;
737     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.SetPointerLocation(x, y, displayId));
738 }
739 
740 /**
741  * @tc.name: InputWindowsManagerTest_UpdateDefaultPointerStyle_002
742  * @tc.desc: Test UpdateDefaultPointerStyle
743  * @tc.type: FUNC
744  * @tc.require:
745  */
746 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateDefaultPointerStyle_002, TestSize.Level1)
747 {
748     CALL_TEST_DEBUG;
749     auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
750     PointerDrawingManager pointerDrawingManager;
751     int32_t pid = 1;
752     int32_t windowId = -1;
753     PointerStyle pointerStyle;
754     pointerStyle.id = 0;
755     pointerStyle.color = 0;
756     pointerStyle.size = 2;
757     EXPECT_CALL(*winmgrmock, GetPointerStyle).WillRepeatedly(testing::Return(RET_ERR));
758     int32_t ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle);
759     EXPECT_EQ(ret, RET_OK);
760     testing::Mock::AllowLeak(winmgrmock.get());
761 }
762 
763 /**
764  * @tc.name: InputWindowsManagerTest_GetPointerStyle_001
765  * @tc.desc: Test GetPointerStyle
766  * @tc.type: FUNC
767  * @tc.require:
768  */
769 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_GetPointerStyle_001, TestSize.Level1)
770 {
771     CALL_TEST_DEBUG;
772     auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
773     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
774     int32_t pid = 1;
775     int32_t windowId = 2;
776     bool isUiExtension = true;
777     PointerStyle pointerStyle;
778     EXPECT_CALL(*winmgrmock, GetPointerStyle).WillRepeatedly(testing::Return(RET_ERR));
779     int32_t ret = pointerDrawingManager->GetPointerStyle(pid, windowId, pointerStyle, isUiExtension);
780     EXPECT_EQ(ret, RET_OK);
781     testing::Mock::AllowLeak(winmgrmock.get());
782 }
783 
784 /**
785  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_002
786  * @tc.desc: Test DrawPointerStyle
787  * @tc.type: FUNC
788  * @tc.require:
789  */
790 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_002, TestSize.Level1)
791 {
792     CALL_TEST_DEBUG;
793     PointerDrawingManager pointerDrawingManager;
794     PointerStyle pointerStyle;
795     pointerStyle.id = 0;
796     pointerStyle.color = 0;
797     pointerStyle.size = 2;
798     pointerDrawingManager.hasDisplay_ = false;
799     pointerDrawingManager.hasPointerDevice_ = true;
800     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
801     pointerDrawingManager.hasDisplay_ = true;
802     pointerDrawingManager.hasPointerDevice_ = false;
803     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
804     pointerDrawingManager.hasDisplay_ = false;
805     pointerDrawingManager.hasPointerDevice_ = false;
806     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
807     pointerDrawingManager.hasDisplay_ = true;
808     pointerDrawingManager.hasPointerDevice_ = true;
809     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
810     surfaceNodeConfig.SurfaceNodeName = "pointer window";
811     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
812     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
813     ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
814     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
815     pointerDrawingManager.hasDisplay_ = true;
816     pointerDrawingManager.hasPointerDevice_ = true;
817     pointerDrawingManager.surfaceNode_ = nullptr;
818     pointerDrawingManager.lastPhysicalX_ = -1;
819     pointerDrawingManager.lastPhysicalY_ = 1;
820     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
821     pointerDrawingManager.lastPhysicalX_ = 1;
822     pointerDrawingManager.lastPhysicalY_ = -1;
823     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
824     pointerDrawingManager.lastPhysicalX_ = -1;
825     pointerDrawingManager.lastPhysicalY_ = -1;
826     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
827     pointerDrawingManager.lastPhysicalX_ = 1;
828     pointerDrawingManager.lastPhysicalY_ = 1;
829     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
830 }
831 
832 /**
833  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_003
834  * @tc.desc: Test DrawPointerStyle
835  * @tc.type: FUNC
836  * @tc.require:
837  */
838 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_003, TestSize.Level1)
839 {
840     CALL_TEST_DEBUG;
841     PointerDrawingManager pointerDrawingManager;
842     PointerStyle pointerStyle;
843     pointerStyle.id = 0;
844     pointerStyle.color = 0;
845     pointerStyle.size = 2;
846     pointerDrawingManager.hasDisplay_ = true;
847     pointerDrawingManager.hasPointerDevice_ = true;
848     pointerDrawingManager.surfaceNode_ = nullptr;
849     pointerDrawingManager.displayInfo_.displayDirection = DIRECTION0;
850     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
851 }
852 
853 /**
854  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_004
855  * @tc.desc: Test DrawPointerStyle
856  * @tc.type: FUNC
857  * @tc.require:
858  */
859 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_004, TestSize.Level1)
860 {
861     CALL_TEST_DEBUG;
862     PointerDrawingManager pointerDrawingManager;
863     PointerStyle pointerStyle;
864     pointerStyle.id = 0;
865     pointerStyle.color = 0;
866     pointerStyle.size = 2;
867     pointerDrawingManager.hasDisplay_ = true;
868     pointerDrawingManager.hasPointerDevice_ = true;
869     pointerDrawingManager.surfaceNode_ = nullptr;
870     pointerDrawingManager.displayInfo_.displayDirection = DIRECTION90;
871     pointerDrawingManager.lastPhysicalX_ = -1;
872     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
873 }
874 
875 /**
876  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_006
877  * @tc.desc: Test DrawPointerStyle
878  * @tc.type: FUNC
879  * @tc.require:
880  */
881 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_006, TestSize.Level1)
882 {
883     CALL_TEST_DEBUG;
884     PointerDrawingManager pointerDrawingManager;
885     PointerStyle pointerStyle;
886     pointerStyle.id = 0;
887     pointerStyle.color = 0;
888     pointerStyle.size = 2;
889     pointerDrawingManager.hasDisplay_ = true;
890     pointerDrawingManager.hasPointerDevice_ = true;
891     pointerDrawingManager.surfaceNode_ = nullptr;
892     pointerDrawingManager.displayInfo_.displayDirection = DIRECTION90;
893     pointerDrawingManager.lastPhysicalX_ = 2;
894     pointerDrawingManager.lastPhysicalY_ = 2;
895     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
896 }
897 
898 /**
899  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_007
900  * @tc.desc: Test DrawPointerStyle
901  * @tc.type: FUNC
902  * @tc.require:
903  */
904 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_007, TestSize.Level1)
905 {
906     CALL_TEST_DEBUG;
907     PointerDrawingManager pointerDrawingManager;
908     PointerStyle pointerStyle;
909     pointerStyle.id = 0;
910     pointerStyle.color = 0;
911     pointerStyle.size = 2;
912     pointerDrawingManager.hasDisplay_ = false;
913     pointerDrawingManager.hasPointerDevice_ = true;
914     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
915     pointerDrawingManager.hasDisplay_ = true;
916     pointerDrawingManager.hasPointerDevice_ = false;
917     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
918     pointerDrawingManager.hasDisplay_ = false;
919     pointerDrawingManager.hasPointerDevice_ = false;
920     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
921     pointerDrawingManager.hasDisplay_ = true;
922     pointerDrawingManager.hasPointerDevice_ = true;
923     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
924     surfaceNodeConfig.SurfaceNodeName = "pointer window";
925     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
926     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
927     ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
928     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
929     pointerDrawingManager.hasDisplay_ = true;
930     pointerDrawingManager.hasPointerDevice_ = true;
931     pointerDrawingManager.surfaceNode_ = nullptr;
932     pointerDrawingManager.lastPhysicalX_ = -1;
933     pointerDrawingManager.lastPhysicalY_ = 1;
934     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
935     pointerDrawingManager.lastPhysicalX_ = 1;
936     pointerDrawingManager.lastPhysicalY_ = -1;
937     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
938     pointerDrawingManager.lastPhysicalX_ = -1;
939     pointerDrawingManager.lastPhysicalY_ = -1;
940     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
941     pointerDrawingManager.lastPhysicalX_ = 1;
942     pointerDrawingManager.lastPhysicalY_ = 1;
943     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
944 }
945 
946 /**
947  * @tc.name: InputWindowsManagerTest_Init_001
948  * @tc.desc: Test Init
949  * @tc.type: FUNC
950  * @tc.require:
951  */
952 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_Init_001, TestSize.Level1)
953 {
954     CALL_TEST_DEBUG;
955     bool isSucess = IPointerDrawingManager::GetInstance()->Init();
956     EXPECT_EQ(isSucess, true);
957     IconStyle iconStyle = IPointerDrawingManager::GetInstance()->GetIconStyle(MOUSE_ICON(MOUSE_ICON::DEFAULT));
958     EXPECT_EQ(iconStyle.alignmentWay, 7);
959 }
960 
961 /**
962  * @tc.name: InputWindowsManagerTest_SetMouseDisplayState_001
963  * @tc.desc: Test SetMouseDisplayState
964  * @tc.type: FUNC
965  * @tc.require:
966  */
967 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseDisplayState_001, TestSize.Level1)
968 {
969     CALL_TEST_DEBUG;
970     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
971     pointerDrawingManager->SetMouseDisplayState(true);
972     bool mouseDisplayState = pointerDrawingManager->GetMouseDisplayState();
973     EXPECT_EQ(mouseDisplayState, true);
974 }
975 
976 /**
977  * @tc.name: InputWindowsManagerTest_UpdatePointerDevice_001
978  * @tc.desc: Test UpdatePointerDevice
979  * @tc.type: FUNC
980  * @tc.require:
981  */
982 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerDevice_001, TestSize.Level1)
983 {
984     CALL_TEST_DEBUG;
985     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
986     EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 0);
987     pointerDrawingManager->UpdatePointerDevice(true, true, true);
988     EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 1);
989     pointerDrawingManager->UpdatePointerDevice(false, true, true);
990     EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 0);
991 }
992 
993 /**
994  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection0_001
995  * @tc.desc: Test AdjustMouseFocusByDirection0
996  * @tc.type: FUNC
997  * @tc.require:
998  */
999 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection0_001, TestSize.Level1)
1000 {
1001     CALL_TEST_DEBUG;
1002     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1003     pointerDrawingManager->imageWidth_ = 50;
1004     pointerDrawingManager->imageHeight_ = 50;
1005     pointerDrawingManager->userIconHotSpotX_ = 5;
1006     pointerDrawingManager->userIconHotSpotY_ = 5;
1007     int32_t physicalX = 100;
1008     int32_t physicalY = 100;
1009     pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_SW, physicalX, physicalY);
1010     EXPECT_EQ(physicalX, 100);
1011     EXPECT_EQ(physicalY, 50);
1012     physicalX = 100;
1013     physicalY = 100;
1014     pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_CENTER, physicalX, physicalY);
1015     EXPECT_EQ(physicalX, 75);
1016     EXPECT_EQ(physicalY, 75);
1017     physicalX = 100;
1018     physicalY = 100;
1019     pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_NW_RIGHT, physicalX, physicalY);
1020     EXPECT_EQ(physicalY, 100);
1021     physicalX = 100;
1022     physicalY = 100;
1023     pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1024     pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1025     pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_NW, physicalX, physicalY);
1026     physicalX = 100;
1027     physicalY = 100;
1028     pointerDrawingManager->AdjustMouseFocusByDirection0(ANGLE_E, physicalX, physicalY);
1029     EXPECT_EQ(physicalX, 100);
1030     EXPECT_EQ(physicalY, 100);
1031 }
1032 
1033 /**
1034  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection90_001
1035  * @tc.desc: Test AdjustMouseFocusByDirection90
1036  * @tc.type: FUNC
1037  * @tc.require:
1038  */
1039 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection90_001, TestSize.Level1)
1040 {
1041     CALL_TEST_DEBUG;
1042     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1043     pointerDrawingManager->imageWidth_ = 50;
1044     pointerDrawingManager->imageHeight_ = 50;
1045     pointerDrawingManager->userIconHotSpotX_ = 5;
1046     pointerDrawingManager->userIconHotSpotY_ = 5;
1047     int32_t physicalX = 100;
1048     int32_t physicalY = 100;
1049     pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_SW, physicalX, physicalY);
1050     EXPECT_EQ(physicalX, 100);
1051     EXPECT_EQ(physicalY, 150);
1052     physicalX = 100;
1053     physicalY = 100;
1054     pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_CENTER, physicalX, physicalY);
1055     EXPECT_EQ(physicalX, 75);
1056     EXPECT_EQ(physicalY, 125);
1057     physicalX = 100;
1058     physicalY = 100;
1059     pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_NW_RIGHT, physicalX, physicalY);
1060     physicalX = 100;
1061     physicalY = 100;
1062     pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1063     pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1064     pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_NW, physicalX, physicalY);
1065     physicalX = 100;
1066     physicalY = 100;
1067     pointerDrawingManager->AdjustMouseFocusByDirection90(ANGLE_E, physicalX, physicalY);
1068     EXPECT_EQ(physicalX, 100);
1069     EXPECT_EQ(physicalY, 100);
1070 }
1071 
1072 /**
1073  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection180_001
1074  * @tc.desc: Test AdjustMouseFocusByDirection180
1075  * @tc.type: FUNC
1076  * @tc.require:
1077  */
1078 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection180_001, TestSize.Level1)
1079 {
1080     CALL_TEST_DEBUG;
1081     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1082     pointerDrawingManager->imageWidth_ = 50;
1083     pointerDrawingManager->imageHeight_ = 50;
1084     pointerDrawingManager->userIconHotSpotX_ = 5;
1085     pointerDrawingManager->userIconHotSpotY_ = 5;
1086     int32_t physicalX = 100;
1087     int32_t physicalY = 100;
1088     pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_SW, physicalX, physicalY);
1089     EXPECT_EQ(physicalX, 100);
1090     EXPECT_EQ(physicalY, 150);
1091     physicalX = 100;
1092     physicalY = 100;
1093     pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_CENTER, physicalX, physicalY);
1094     EXPECT_EQ(physicalX, 125);
1095     EXPECT_EQ(physicalY, 125);
1096     physicalX = 100;
1097     physicalY = 100;
1098     pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_NW_RIGHT, physicalX, physicalY);
1099     physicalX = 100;
1100     physicalY = 100;
1101     pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1102     pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1103     pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_NW, physicalX, physicalY);
1104     physicalX = 100;
1105     physicalY = 100;
1106     pointerDrawingManager->AdjustMouseFocusByDirection180(ANGLE_E, physicalX, physicalY);
1107     EXPECT_EQ(physicalX, 100);
1108     EXPECT_EQ(physicalY, 100);
1109 }
1110 
1111 /**
1112  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusByDirection270_001
1113  * @tc.desc: Test AdjustMouseFocusByDirection270
1114  * @tc.type: FUNC
1115  * @tc.require:
1116  */
1117 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusByDirection270_001, TestSize.Level1)
1118 {
1119     CALL_TEST_DEBUG;
1120     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1121     pointerDrawingManager->imageWidth_ = 50;
1122     pointerDrawingManager->imageHeight_ = 50;
1123     pointerDrawingManager->userIconHotSpotX_ = 5;
1124     pointerDrawingManager->userIconHotSpotY_ = 5;
1125     int32_t physicalX = 100;
1126     int32_t physicalY = 100;
1127     pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_SW, physicalX, physicalY);
1128     EXPECT_EQ(physicalX, 100);
1129     EXPECT_EQ(physicalY, 50);
1130     physicalX = 100;
1131     physicalY = 100;
1132     pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_CENTER, physicalX, physicalY);
1133     EXPECT_EQ(physicalX, 125);
1134     EXPECT_EQ(physicalY, 75);
1135     physicalX = 100;
1136     physicalY = 100;
1137     pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_NW_RIGHT, physicalX, physicalY);
1138     physicalX = 100;
1139     physicalY = 100;
1140     pointerDrawingManager->userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1141     pointerDrawingManager->currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1142     pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_NW, physicalX, physicalY);
1143     physicalX = 100;
1144     physicalY = 100;
1145     pointerDrawingManager->AdjustMouseFocusByDirection270(ANGLE_E, physicalX, physicalY);
1146     EXPECT_EQ(physicalX, 100);
1147     EXPECT_EQ(physicalY, 100);
1148 }
1149 
1150 /**
1151  * @tc.name: InputWindowsManagerTest_AdjustMouseFocus_001
1152  * @tc.desc: Test AdjustMouseFocus
1153  * @tc.type: FUNC
1154  * @tc.require:
1155  */
1156 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocus_001, TestSize.Level1)
1157 {
1158     CALL_TEST_DEBUG;
1159     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1160     pointerDrawingManager->imageWidth_ = 50;
1161     pointerDrawingManager->imageHeight_ = 50;
1162     int32_t physicalX = 100;
1163     int32_t physicalY = 100;
1164     pointerDrawingManager->RotateDegree(DIRECTION0);
1165     pointerDrawingManager->AdjustMouseFocus(DIRECTION0, ANGLE_SW, physicalX, physicalY);
1166     EXPECT_EQ(physicalX, 100);
1167     EXPECT_EQ(physicalY, 50);
1168     physicalX = 100;
1169     physicalY = 100;
1170     pointerDrawingManager->RotateDegree(DIRECTION90);
1171     pointerDrawingManager->AdjustMouseFocus(DIRECTION90, ANGLE_SW, physicalX, physicalY);
1172     EXPECT_EQ(physicalX, 100);
1173     EXPECT_EQ(physicalY, 150);
1174     physicalX = 100;
1175     physicalY = 100;
1176     pointerDrawingManager->RotateDegree(DIRECTION180);
1177     pointerDrawingManager->AdjustMouseFocus(DIRECTION180, ANGLE_SW, physicalX, physicalY);
1178     EXPECT_EQ(physicalX, 100);
1179     EXPECT_EQ(physicalY, 150);
1180     physicalX = 100;
1181     physicalY = 100;
1182     pointerDrawingManager->RotateDegree(DIRECTION270);
1183     pointerDrawingManager->AdjustMouseFocus(DIRECTION270, ANGLE_SW, physicalX, physicalY);
1184     EXPECT_EQ(physicalX, 100);
1185     EXPECT_EQ(physicalY, 50);
1186     physicalX = 100;
1187     physicalY = 100;
1188     pointerDrawingManager->RotateDegree(static_cast<Direction>(4));
1189     pointerDrawingManager->AdjustMouseFocus(static_cast<Direction>(4), ANGLE_SW, physicalX, physicalY);
1190     EXPECT_EQ(physicalX, 100);
1191     EXPECT_EQ(physicalY, 100);
1192 }
1193 
1194 /**
1195  * @tc.name: InputWindowsManagerTest_SetCursorLocation_001
1196  * @tc.desc: Test SetCursorLocation
1197  * @tc.type: FUNC
1198  * @tc.require:
1199  */
1200 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetCursorLocation_001, TestSize.Level1)
1201 {
1202     CALL_TEST_DEBUG;
1203     PointerDrawingManager pointerDrawingManager;
1204     auto align = pointerDrawingManager.MouseIcon2IconType(MOUSE_ICON(2));
1205     int32_t physicalX = 100;
1206     int32_t physicalY = 100;
1207     pointerDrawingManager.lastMouseStyle_.id = 2;
1208     auto visible = pointerDrawingManager.SetCursorLocation(physicalX, physicalY, align);
1209     EXPECT_EQ(visible, false);
1210     physicalX = 200;
1211     physicalY = 200;
1212     pointerDrawingManager.lastMouseStyle_.id = 4;
1213     visible = pointerDrawingManager.SetCursorLocation(physicalX, physicalY, align);
1214     EXPECT_EQ(visible, false);
1215     physicalX = 300;
1216     physicalY = 300;
1217     pointerDrawingManager.lastMouseStyle_.id = 8;
1218     visible = pointerDrawingManager.SetCursorLocation(physicalX, physicalY, align);
1219     EXPECT_EQ(visible, false);
1220     physicalX = 400;
1221     physicalY = 400;
1222     pointerDrawingManager.lastMouseStyle_.id = 12;
1223     visible = pointerDrawingManager.SetCursorLocation(physicalX, physicalY, align);
1224     EXPECT_EQ(visible, false);
1225 }
1226 
1227 /**
1228  * @tc.name: InputWindowsManagerTest_SetHardwareCursorPosition_001
1229  * @tc.desc: Test SetHardwareCursorPosition
1230  * @tc.type: FUNC
1231  * @tc.require:
1232  */
1233 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetHardwareCursorPosition_001, TestSize.Level1)
1234 {
1235     CALL_TEST_DEBUG;
1236     PointerDrawingManager pointerDrawingManager;
1237     int32_t physicalX = 100;
1238     int32_t physicalY = 100;
1239     pointerDrawingManager.lastMouseStyle_.id = 2;
1240     ASSERT_NO_FATAL_FAILURE(
1241         pointerDrawingManager.SetHardwareCursorPosition(physicalX, physicalY, pointerDrawingManager.lastMouseStyle_));
1242 }
1243 
1244 /**
1245  * @tc.name: InputWindowsManagerOneTest_GetMainScreenDisplayInfo
1246  * @tc.desc: Test GetMainScreenDisplayInfo
1247  * @tc.type: FUNC
1248  * @tc.require:
1249  */
1250 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerOneTest_GetMainScreenDisplayInfo, TestSize.Level0)
1251 {
1252     CALL_TEST_DEBUG;
1253     PointerDrawingManager pointerDrawingManager;
1254     OLD::DisplayGroupInfo displayGroupInfo;
1255     OLD::DisplayInfo mainScreenDisplayInfo;
1256     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager.GetMainScreenDisplayInfo(displayGroupInfo, mainScreenDisplayInfo));
1257     displayGroupInfo.displaysInfo.push_back(mainScreenDisplayInfo);
1258     displayGroupInfo.displaysInfo.push_back(mainScreenDisplayInfo);
1259     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager.GetMainScreenDisplayInfo(displayGroupInfo, mainScreenDisplayInfo));
1260 }
1261 
1262 /**
1263  * @tc.name: InputWindowsManagerOneTest_CreatePointerWindowForScreenPointer
1264  * @tc.desc: Test CreatePointerWindowForScreenPointer
1265  * @tc.type: FUNC
1266  * @tc.require:
1267  */
1268 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerOneTest_CreatePointerWindowForScreenPointer, TestSize.Level0)
1269 {
1270     CALL_TEST_DEBUG;
1271     PointerDrawingManager pointerDrawingManager;
1272     pointerDrawingManager.displayInfo_.rsId = 2;
1273     int32_t rsId = 2;
1274     int32_t physicalX = 100;
1275     int32_t physicalY = 100;
1276     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager.CreatePointerWindowForScreenPointer(rsId, physicalX, physicalY));
1277 }
1278 
1279 /**
1280  * @tc.name: InputWindowsManagerOneTest_CreatePointerWindow
1281  * @tc.desc: Test CreatePointerWindow
1282  * @tc.type: FUNC
1283  * @tc.require:
1284  */
1285 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerOneTest_CreatePointerWindow, TestSize.Level0)
1286 {
1287     CALL_TEST_DEBUG;
1288     PointerDrawingManager pointerDrawingManager;
1289     int32_t rsId = 10;
1290     int32_t physicalX = 100;
1291     int32_t physicalY = 100;
1292     EXPECT_NO_FATAL_FAILURE(
1293         pointerDrawingManager.CreatePointerWindow(rsId, physicalX, physicalY, Direction::DIRECTION90));
1294     EXPECT_NO_FATAL_FAILURE(
1295         pointerDrawingManager.CreatePointerWindow(rsId, physicalX, physicalY, Direction::DIRECTION180));
1296     EXPECT_NO_FATAL_FAILURE(
1297         pointerDrawingManager.CreatePointerWindow(rsId, physicalX, physicalY, Direction::DIRECTION270));
1298 }
1299 
1300 /**
1301  * @tc.name: InputWindowsManagerTest_IsWindowRotation_001
1302  * @tc.desc: Test IsWindowRotation
1303  * @tc.type: FUNC
1304  * @tc.require:
1305  */
1306 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_IsWindowRotation_001, TestSize.Level1)
1307 {
1308     CALL_TEST_DEBUG;
1309     PointerDrawingManager pointerDrawingManager;
1310     OLD::DisplayInfo displayInfo;
1311     displayInfo.direction = DIRECTION0;
1312     displayInfo.displayDirection = DIRECTION90;
1313     auto color = pointerDrawingManager.IsWindowRotation(&displayInfo);
1314     EXPECT_EQ(color, true);
1315 }
1316 
1317 /**
1318  * @tc.name: InputWindowsManagerTest_SetPointerColor_001
1319  * @tc.desc: Test SetPointerColor
1320  * @tc.type: FUNC
1321  * @tc.require:
1322  */
1323 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerColor_001, TestSize.Level1)
1324 {
1325     CALL_TEST_DEBUG;
1326     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1327     pointerDrawingManager->SetPointerColor(-1);
1328     int32_t color = pointerDrawingManager->GetPointerColor();
1329     EXPECT_EQ(color, 0);
1330     pointerDrawingManager->SetPointerColor(16777216);
1331     color = pointerDrawingManager->GetPointerColor();
1332     EXPECT_EQ(color, 0);
1333 }
1334 
1335 /**
1336  * @tc.name: InputWindowsManagerTest_SetPointerVisible_001
1337  * @tc.desc: Test SetPointerVisible
1338  * @tc.type: FUNC
1339  * @tc.require:
1340  */
1341 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_001, TestSize.Level1)
1342 {
1343     CALL_TEST_DEBUG;
1344     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1345     for (int32_t i = 1; i < 102; i++) {
1346         pointerDrawingManager->SetPointerVisible(i, false, 0, false);
1347     }
1348     bool visible = pointerDrawingManager->GetPointerVisible(1);
1349     EXPECT_EQ(visible, true);
1350     pointerDrawingManager->SetPointerVisible(11, true, 0, false);
1351     visible = pointerDrawingManager->GetPointerVisible(11);
1352     EXPECT_EQ(visible, true);
1353 }
1354 
1355 /**
1356  * @tc.name: InputWindowsManagerTest_SetPointerStyle_001
1357  * @tc.desc: Test SetPointerStyle
1358  * @tc.type: FUNC
1359  * @tc.require:
1360  */
1361 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_001, TestSize.Level1)
1362 {
1363     CALL_TEST_DEBUG;
1364     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1365     PointerStyle pointerStyle;
1366     pointerStyle.id = 0;
1367     pointerDrawingManager->SetPointerStyle(1, -1, pointerStyle);
1368     PointerStyle pointerStyleTmp;
1369     pointerDrawingManager->GetPointerStyle(1, -1, pointerStyleTmp);
1370     EXPECT_EQ(pointerStyleTmp.id, pointerStyle.id);
1371 }
1372 
1373 /**
1374  * @tc.name: InputWindowsManagerTest_SetPointerSize_001
1375  * @tc.desc: Test SetPointerSize
1376  * @tc.type: FUNC
1377  * @tc.require:
1378  */
1379 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerSize_001, TestSize.Level1)
1380 {
1381     CALL_TEST_DEBUG;
1382     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1383     pointerDrawingManager->SetPointerSize(0);
1384     int32_t pointerSize = pointerDrawingManager->GetPointerSize();
1385     EXPECT_EQ(pointerSize, 0);
1386     pointerDrawingManager->SetPointerSize(8);
1387     pointerSize = pointerDrawingManager->GetPointerSize();
1388     EXPECT_EQ(pointerSize, 0);
1389 }
1390 
1391 /**
1392  * @tc.name: InputWindowsManagerTest_FixCursorPosition_001
1393  * @tc.desc: Test FixCursorPosition
1394  * @tc.type: FUNC
1395  * @tc.require:
1396  */
1397 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_FixCursorPosition_001, TestSize.Level1)
1398 {
1399     CALL_TEST_DEBUG;
1400     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
1401     pointerDrawingManager->displayInfo_.displayDirection = DIRECTION0;
1402     pointerDrawingManager->displayInfo_.direction = DIRECTION0;
1403     pointerDrawingManager->displayInfo_.width = 500;
1404     pointerDrawingManager->displayInfo_.height = 1100;
1405     pointerDrawingManager->imageWidth_ = 48;
1406     pointerDrawingManager->imageHeight_ = 48;
1407     int32_t physicalX = 500;
1408     int32_t physicalY = 1100;
1409     pointerDrawingManager->FixCursorPosition(physicalX, physicalY);
1410     EXPECT_NE(physicalX, 497);
1411     EXPECT_NE(physicalY, 1097);
1412     pointerDrawingManager->displayInfo_.direction = DIRECTION90;
1413     physicalX = 1100;
1414     physicalY = 500;
1415     pointerDrawingManager->FixCursorPosition(physicalX, physicalY);
1416     EXPECT_NE(physicalX, 1097);
1417     pointerDrawingManager->displayInfo_.displayDirection = DIRECTION90;
1418     pointerDrawingManager->displayInfo_.direction = DIRECTION0;
1419     physicalX = 500;
1420     physicalY = 1100;
1421     pointerDrawingManager->FixCursorPosition(physicalX, physicalY);
1422     EXPECT_NE(physicalX, 500);
1423     EXPECT_NE(physicalY, 497);
1424 }
1425 
1426 /**
1427  * @tc.name: InputWindowsManagerTest_CreatePointerSwitchObserver_001
1428  * @tc.desc: Test CreatePointerSwitchObserver
1429  * @tc.type: FUNC
1430  * @tc.require:
1431  */
1432 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CreatePointerSwitchObserver_001, TestSize.Level1)
1433 {
1434     CALL_TEST_DEBUG;
1435     PointerDrawingManager pointerDrawingManager;
1436     isMagicCursor item;
1437     item.isShow = true;
1438     item.name = "test";
1439     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.CreatePointerSwitchObserver(item));
1440 }
1441 
1442 /**
1443  * @tc.name: InputWindowsManagerTest_DrawCursor_001
1444  * @tc.desc: Test DrawCursor
1445  * @tc.type: FUNC
1446  * @tc.require:
1447  */
1448 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawCursor_001, TestSize.Level1)
1449 {
1450     CALL_TEST_DEBUG;
1451     PointerDrawingManager pointerDrawingManager;
1452     MOUSE_ICON mouseStyle = EAST;
1453     int32_t ret = pointerDrawingManager.DrawCursor(mouseStyle);
1454     EXPECT_EQ(ret, RET_ERR);
1455     pointerDrawingManager.surfaceNode_ = nullptr;
1456     ret = pointerDrawingManager.DrawCursor(mouseStyle);
1457     EXPECT_EQ(ret, RET_ERR);
1458 }
1459 
1460 /**
1461  * @tc.name: InputWindowsManagerTest_DrawLoadingPointerStyle_001
1462  * @tc.desc: Test DrawLoadingPointerStyle
1463  * @tc.type: FUNC
1464  * @tc.require:
1465  */
1466 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawLoadingPointerStyle_001, TestSize.Level1)
1467 {
1468     CALL_TEST_DEBUG;
1469     PointerDrawingManager pointerDrawingManager;
1470     MOUSE_ICON mouseStyle = EAST;
1471     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawLoadingPointerStyle(mouseStyle));
1472 }
1473 
1474 /**
1475  * @tc.name: InputWindowsManagerTest_DrawRunningPointerAnimate_001
1476  * @tc.desc: Test DrawRunningPointerAnimate
1477  * @tc.type: FUNC
1478  * @tc.require:
1479  */
1480 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawRunningPointerAnimate_001, TestSize.Level1)
1481 {
1482     CALL_TEST_DEBUG;
1483     PointerDrawingManager pointerDrawingManager;
1484     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
1485     surfaceNodeConfig.SurfaceNodeName = "pointer window";
1486     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
1487     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
1488     pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
1489     pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
1490     MOUSE_ICON mouseStyle = EAST;
1491     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawRunningPointerAnimate(mouseStyle));
1492 }
1493 
1494 /**
1495  * @tc.name: InputWindowsManagerTest_GetLayer_001
1496  * @tc.desc: Test GetLayer
1497  * @tc.type: FUNC
1498  * @tc.require:
1499  */
1500 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_GetLayer_001, TestSize.Level1)
1501 {
1502     CALL_TEST_DEBUG;
1503     PointerDrawingManager pointerDrawingManager;
1504     pointerDrawingManager.surfaceNode_ = nullptr;
1505     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.GetLayer());
1506 }
1507 
1508 /**
1509  * @tc.name: InputWindowsManagerTest_SetMouseIcon_001
1510  * @tc.desc: Test SetMouseIcon
1511  * @tc.type: FUNC
1512  * @tc.require:
1513  */
1514 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_001, TestSize.Level1)
1515 {
1516     CALL_TEST_DEBUG;
1517     PointerDrawingManager pointerDrawingManager;
1518     int32_t pid = -1;
1519     int32_t windowId = 1;
1520     CursorPixelMap curPixelMap;
1521     int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1522     EXPECT_EQ(ret, RET_ERR);
1523     pid = 1;
1524     ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1525     EXPECT_EQ(ret, RET_ERR);
1526 }
1527 
1528 /**
1529  * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_001
1530  * @tc.desc: Test SetMouseHotSpot
1531  * @tc.type: FUNC
1532  * @tc.require:
1533  */
1534 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_001, TestSize.Level1)
1535 {
1536     CALL_TEST_DEBUG;
1537     PointerDrawingManager pointerDrawingManager;
1538     int32_t pid = -1;
1539     int32_t windowId = 1;
1540     int32_t hotSpotX = 100;
1541     int32_t hotSpotY = 100;
1542     int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1543     EXPECT_EQ(ret, RET_ERR);
1544     pid = 1;
1545     windowId = -1;
1546     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1547     EXPECT_EQ(ret, RET_ERR);
1548     pid = 1;
1549     windowId = 1;
1550     hotSpotX = -1;
1551     hotSpotY = -1;
1552     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1553     EXPECT_EQ(ret, RET_ERR);
1554     pid = 1;
1555     windowId = 1;
1556     hotSpotX = 100;
1557     hotSpotY = 100;
1558     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1559     EXPECT_EQ(ret, RET_ERR);
1560 }
1561 
1562 /**
1563  * @tc.name: InputWindowsManagerTest_DecodeImageToPixelMap_001
1564  * @tc.desc: Test DecodeImageToPixelMap
1565  * @tc.type: FUNC
1566  * @tc.require:
1567  */
1568 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DecodeImageToPixelMap_001, TestSize.Level1)
1569 {
1570     CALL_TEST_DEBUG;
1571     PointerDrawingManager pointerDrawingManager;
1572     std::string iconPath = ("/system/etc/multimodalinput/mouse_icon/Loading_Left.svg");
1573     pointerDrawingManager.tempPointerColor_ = 1;
1574     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DecodeImageToPixelMap(MOUSE_ICON::RUNNING));
1575 }
1576 
1577 /**
1578  * @tc.name: InputWindowsManagerTest_UpdatePointerVisible_001
1579  * @tc.desc: Test UpdatePointerVisible
1580  * @tc.type: FUNC
1581  * @tc.require:
1582  */
1583 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerVisible_001, TestSize.Level1)
1584 {
1585     CALL_TEST_DEBUG;
1586     PointerDrawingManager pointerDrawingManager;
1587     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
1588     surfaceNodeConfig.SurfaceNodeName = "pointer window";
1589     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
1590     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
1591     pointerDrawingManager.mouseDisplayState_ = true;
1592     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdatePointerVisible());
1593     pointerDrawingManager.mouseDisplayState_ = false;
1594     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdatePointerVisible());
1595 }
1596 
1597 /**
1598  * @tc.name: InputWindowsManagerTest_IsPointerVisible_001
1599  * @tc.desc: Test IsPointerVisible
1600  * @tc.type: FUNC
1601  * @tc.require:
1602  */
1603 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_IsPointerVisible_001, TestSize.Level1)
1604 {
1605     CALL_TEST_DEBUG;
1606     PointerDrawingManager pointerDrawingManager;
1607     bool ret = pointerDrawingManager.IsPointerVisible();
1608     EXPECT_TRUE(ret);
1609 }
1610 
1611 /**
1612  * @tc.name: InputWindowsManagerTest_DeletePointerVisible_001
1613  * @tc.desc: Test DeletePointerVisible
1614  * @tc.type: FUNC
1615  * @tc.require:
1616  */
1617 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DeletePointerVisible_001, TestSize.Level1)
1618 {
1619     CALL_TEST_DEBUG;
1620     PointerDrawingManager pointerDrawingManager;
1621     int32_t pid = 1;
1622     PointerDrawingManager::PidInfo info = {.pid = 1, .visible = true};
1623     pointerDrawingManager.pidInfos_.push_back(info);
1624     info = {.pid = 2, .visible = true};
1625     pointerDrawingManager.pidInfos_.push_back(info);
1626     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
1627 }
1628 
1629 /**
1630  * @tc.name: InputWindowsManagerTest_SetPointerLocation_001
1631  * @tc.desc: Test SetPointerLocation
1632  * @tc.type: FUNC
1633  * @tc.require:
1634  */
1635 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerLocation_001, TestSize.Level1)
1636 {
1637     CALL_TEST_DEBUG;
1638     PointerDrawingManager pointerDrawingManager;
1639     int32_t x = 100;
1640     int32_t y = 100;
1641     uint64_t displayId = 0;
1642     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.SetPointerLocation(x, y, displayId));
1643 }
1644 
1645 /**
1646  * @tc.name: InputWindowsManagerTest_UpdateDefaultPointerStyle_001
1647  * @tc.desc: Test UpdateDefaultPointerStyle
1648  * @tc.type: FUNC
1649  * @tc.require:
1650  */
1651 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateDefaultPointerStyle_001, TestSize.Level1)
1652 {
1653     CALL_TEST_DEBUG;
1654     PointerDrawingManager pointerDrawingManager;
1655     int32_t pid = 1;
1656     int32_t windowId = 1;
1657     PointerStyle pointerStyle;
1658     pointerStyle.id = 0;
1659     pointerStyle.color = 0;
1660     pointerStyle.size = 2;
1661     int32_t ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle);
1662     EXPECT_EQ(ret, RET_OK);
1663     windowId = -1;
1664     ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle);
1665     EXPECT_EQ(ret, RET_OK);
1666 }
1667 
1668 /**
1669  * @tc.name: InputWindowsManagerTest_UpdateIconPath_001
1670  * @tc.desc: Test UpdateIconPath
1671  * @tc.type: FUNC
1672  * @tc.require:
1673  */
1674 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateIconPath_001, TestSize.Level1)
1675 {
1676     CALL_TEST_DEBUG;
1677     PointerDrawingManager pointerDrawingManager;
1678     MOUSE_ICON mouseStyle = EAST;
1679     std::string iconPath = "test";
1680     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdateIconPath(mouseStyle, iconPath));
1681 }
1682 
1683 /**
1684  * @tc.name: InputWindowsManagerTest_SetPointerStylePreference_001
1685  * @tc.desc: Test SetPointerStylePreference
1686  * @tc.type: FUNC
1687  * @tc.require:
1688  */
1689 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStylePreference_001, TestSize.Level1)
1690 {
1691     CALL_TEST_DEBUG;
1692     PointerDrawingManager pointerDrawingManager;
1693     PointerStyle pointerStyle;
1694     pointerStyle.id = 0;
1695     pointerStyle.color = 0;
1696     pointerStyle.size = 2;
1697     int32_t ret = pointerDrawingManager.SetPointerStylePreference(pointerStyle);
1698     EXPECT_EQ(ret, RET_OK);
1699 }
1700 
1701 /**
1702  * @tc.name: InputWindowsManagerTest_CheckPointerStyleParam_001
1703  * @tc.desc: Test CheckPointerStyleParam
1704  * @tc.type: FUNC
1705  * @tc.require:
1706  */
1707 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CheckPointerStyleParam_001, TestSize.Level1)
1708 {
1709     CALL_TEST_DEBUG;
1710     PointerDrawingManager pointerDrawingManager;
1711     PointerStyle pointerStyle;
1712     pointerStyle.id = EAST;
1713     pointerStyle.color = 0;
1714     pointerStyle.size = 2;
1715     int32_t windowId = -2;
1716     bool ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
1717     EXPECT_FALSE(ret);
1718     windowId = 1;
1719     ret = pointerDrawingManager.CheckPointerStyleParam(windowId, pointerStyle);
1720     EXPECT_TRUE(ret);
1721 }
1722 
1723 /**
1724  * @tc.name: InputWindowsManagerTest_CheckMouseIconPath_001
1725  * @tc.desc: Test CheckMouseIconPath
1726  * @tc.type: FUNC
1727  * @tc.require:
1728  */
1729 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CheckMouseIconPath_001, TestSize.Level1)
1730 {
1731     CALL_TEST_DEBUG;
1732     PointerDrawingManager pointerDrawingManager;
1733     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.CheckMouseIconPath());
1734 }
1735 
1736 /**
1737  * @tc.name: InputWindowsManagerTest_DrawPixelmap_001
1738  * @tc.desc: Test DrawPixelmap
1739  * @tc.type: FUNC
1740  * @tc.require:
1741  */
1742 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPixelmap_001, TestSize.Level1)
1743 {
1744     CALL_TEST_DEBUG;
1745     PointerDrawingManager pointerDrawingManager;
1746     pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1747     OHOS::Rosen::Drawing::Canvas canvas;
1748     MOUSE_ICON mouseStyle = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
1749     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPixelmap(canvas, mouseStyle));
1750 }
1751 
1752 /**
1753  * @tc.name: InputWindowsManagerTest_DrawPixelmap_002
1754  * @tc.desc: Test DrawPixelmap
1755  * @tc.type: FUNC
1756  * @tc.require:
1757  */
1758 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPixelmap_002, TestSize.Level1)
1759 {
1760     CALL_TEST_DEBUG;
1761     PointerDrawingManager pointerDrawingManager;
1762     pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1763     OHOS::Rosen::Drawing::Canvas canvas;
1764     MOUSE_ICON mouseStyle = MOUSE_ICON::RUNNING;
1765     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPixelmap(canvas, mouseStyle));
1766 }
1767 
1768 /**
1769  * @tc.name: InputWindowsManagerTest_DrawPixelmap_003
1770  * @tc.desc: Test DrawPixelmap
1771  * @tc.type: FUNC
1772  * @tc.require:
1773  */
1774 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPixelmap_003, TestSize.Level1)
1775 {
1776     CALL_TEST_DEBUG;
1777     PointerDrawingManager pointerDrawingManager;
1778     pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
1779     OHOS::Rosen::Drawing::Canvas canvas;
1780     MOUSE_ICON mouseStyle = MOUSE_ICON::WEST_EAST;
1781     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPixelmap(canvas, mouseStyle));
1782 }
1783 
1784 /**
1785  * @tc.name: InputWindowsManagerTest_SetCustomCursor_001
1786  * @tc.desc: Test SetCustomCursor
1787  * @tc.type: FUNC
1788  * @tc.require:
1789  */
1790 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetCustomCursor_001, TestSize.Level1)
1791 {
1792     CALL_TEST_DEBUG;
1793     PointerDrawingManager pointerDrawingManager;
1794     const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1795     std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1796     ASSERT_NE(pixelMap, nullptr);
1797     int32_t pid = -1;
1798     int32_t windowId = 1;
1799     int32_t focusX = 2;
1800     int32_t focusY = 3;
1801     CursorPixelMap curPixelMap;
1802     curPixelMap.pixelMap = (void *)pixelMap.get();
1803     int32_t ret = pointerDrawingManager.SetCustomCursor(curPixelMap, pid, windowId, focusX, focusY);
1804     ASSERT_EQ(ret, RET_ERR);
1805 }
1806 
1807 /**
1808  * @tc.name: InputWindowsManagerTest_SetMouseIcon_002
1809  * @tc.desc: Test SetMouseIcon
1810  * @tc.type: FUNC
1811  * @tc.require:
1812  */
1813 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_002, TestSize.Level1)
1814 {
1815     CALL_TEST_DEBUG;
1816     PointerDrawingManager pointerDrawingManager;
1817     const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1818     std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1819     ASSERT_NE(pixelMap, nullptr);
1820     int32_t pid = -1;
1821     int32_t windowId = 2;
1822     CursorPixelMap curPixelMap;
1823     curPixelMap.pixelMap = (void *)pixelMap.get();
1824     int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1825     ASSERT_EQ(ret, RET_ERR);
1826 }
1827 
1828 /**
1829  * @tc.name: InputWindowsManagerTest_SetMouseIcon_004
1830  * @tc.desc: Test SetMouseIcon
1831  * @tc.type: FUNC
1832  * @tc.require:
1833  */
1834 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_004, TestSize.Level1)
1835 {
1836     CALL_TEST_DEBUG;
1837     PointerDrawingManager pointerDrawingManager;
1838     const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1839     std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1840     int32_t pid = 1;
1841     int32_t windowId = 2;
1842     CursorPixelMap curPixelMap;
1843     curPixelMap.pixelMap = (void *)pixelMap.release();
1844     int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1845     ASSERT_EQ(ret, RET_OK);
1846 }
1847 
1848 /**
1849  * @tc.name: InputWindowsManagerTest_SetMouseIcon_005
1850  * @tc.desc: Test SetMouseIcon
1851  * @tc.type: FUNC
1852  * @tc.require:
1853  */
1854 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseIcon_005, TestSize.Level1)
1855 {
1856     CALL_TEST_DEBUG;
1857     PointerDrawingManager pointerDrawingManager;
1858     const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
1859     std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
1860     int32_t pid = 2;
1861     int32_t windowId = 2;
1862     CursorPixelMap curPixelMap;
1863     curPixelMap.pixelMap = (void *)pixelMap.release();
1864     int32_t ret = pointerDrawingManager.SetMouseIcon(pid, windowId, curPixelMap);
1865     ASSERT_EQ(ret, RET_OK);
1866 }
1867 
1868 
1869 /**
1870  * @tc.name: InputWindowsManagerTest_SetMouseHotSpot_002
1871  * @tc.desc: Test SetMouseHotSpot
1872  * @tc.type: FUNC
1873  * @tc.require:
1874  */
1875 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetMouseHotSpot_002, TestSize.Level1)
1876 {
1877     CALL_TEST_DEBUG;
1878     PointerDrawingManager pointerDrawingManager;
1879     int32_t pid = -1;
1880     int32_t windowId = 2;
1881     int32_t hotSpotX = 3;
1882     int32_t hotSpotY = 4;
1883     int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1884     ASSERT_EQ(ret, RET_ERR);
1885     pid = 1;
1886     windowId = -2;
1887     hotSpotX = 3;
1888     hotSpotY = 4;
1889     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1890     ASSERT_EQ(ret, RET_ERR);
1891     pid = 1;
1892     windowId = 2;
1893     hotSpotX = 3;
1894     hotSpotY = 4;
1895     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1896     ASSERT_EQ(ret, RET_ERR);
1897     pid = 2;
1898     windowId = 2;
1899     hotSpotX = -3;
1900     hotSpotY = -4;
1901     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1902     ASSERT_EQ(ret, RET_ERR);
1903     pid = 2;
1904     windowId = 2;
1905     hotSpotX = 3;
1906     hotSpotY = 4;
1907     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
1908     ASSERT_EQ(ret, RET_ERR);
1909 }
1910 
1911 /**
1912  * @tc.name: InputWindowsManagerTest_OnDisplayInfo_001
1913  * @tc.desc: Test OnDisplayInfo
1914  * @tc.type: FUNC
1915  * @tc.require:
1916  */
1917 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_001, TestSize.Level1)
1918 {
1919     CALL_TEST_DEBUG;
1920     PointerDrawingManager pointerDrawingManager;
1921     OLD::DisplayInfo displaysInfo;
1922     OLD::DisplayGroupInfo displayGroupInfo;
1923     displayGroupInfo.displaysInfo.push_back(displaysInfo);
1924     displayGroupInfo.focusWindowId = 0;
1925     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
1926     surfaceNodeConfig.SurfaceNodeName = "pointer window";
1927     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
1928     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
1929     pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
1930     pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
1931     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
1932 }
1933 
1934 /**
1935  * @tc.name: InputWindowsManagerTest_OnDisplayInfo_002
1936  * @tc.desc: Test OnDisplayInfo
1937  * @tc.type: FUNC
1938  * @tc.require:
1939  */
1940 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_002, TestSize.Level1)
1941 {
1942     CALL_TEST_DEBUG;
1943     PointerDrawingManager pointerDrawingManager;
1944     OLD::DisplayInfo displaysInfo;
1945     OLD::DisplayGroupInfo displayGroupInfo;
1946     displayGroupInfo.displaysInfo.push_back(displaysInfo);
1947     displayGroupInfo.focusWindowId = 0;
1948     pointerDrawingManager.surfaceNode_ = nullptr;
1949     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
1950 }
1951 
1952 /**
1953  * @tc.name: InputWindowsManagerTest_DrawManager_004
1954  * @tc.desc: Test DrawManager
1955  * @tc.type: FUNC
1956  * @tc.require:
1957  */
1958 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_004, TestSize.Level1)
1959 {
1960     CALL_TEST_DEBUG;
1961     PointerDrawingManager pointerDrawingManager;
1962     pointerDrawingManager.hasDisplay_ = false;
1963     pointerDrawingManager.hasPointerDevice_ = true;
1964     pointerDrawingManager.surfaceNode_ = nullptr;
1965     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
1966 }
1967 
1968 /**
1969  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_005
1970  * @tc.desc: Test DrawPointerStyle
1971  * @tc.type: FUNC
1972  * @tc.require:
1973  */
1974 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_005, TestSize.Level1)
1975 {
1976     CALL_TEST_DEBUG;
1977     PointerDrawingManager pointerDrawingManager;
1978     PointerStyle pointerStyle;
1979     pointerStyle.id = 0;
1980     pointerStyle.color = 0;
1981     pointerStyle.size = 2;
1982     pointerDrawingManager.hasDisplay_ = false;
1983     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
1984 }
1985 
1986 /**
1987  * @tc.name: PointerDrawingManagerTest_ConvertToColorSpace
1988  * @tc.desc: Test ConvertToColorSpace
1989  * @tc.type: FUNC
1990  * @tc.require:
1991  */
1992 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ConvertToColorSpace, TestSize.Level1)
1993 {
1994     CALL_TEST_DEBUG;
1995     PointerDrawingManager pointerDrawingManager;
1996     Media::ColorSpace colorSpace = Media::ColorSpace::DISPLAY_P3;
1997     EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
1998     colorSpace = Media::ColorSpace::LINEAR_SRGB;
1999     EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
2000     colorSpace = Media::ColorSpace::SRGB;
2001     EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
2002     colorSpace = static_cast<Media::ColorSpace>(5);
2003     EXPECT_NE(pointerDrawingManager.ConvertToColorSpace(colorSpace), nullptr);
2004 }
2005 
2006 /**
2007  * @tc.name: PointerDrawingManagerTest_PixelFormatToColorType
2008  * @tc.desc: Test PixelFormatToColorType
2009  * @tc.type: FUNC
2010  * @tc.require:
2011  */
2012 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_PixelFormatToColorType, TestSize.Level1)
2013 {
2014     CALL_TEST_DEBUG;
2015     PointerDrawingManager pointerDrawingManager;
2016     Media::PixelFormat pixelFmt = Media::PixelFormat::RGB_565;
2017     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_RGB_565);
2018     pixelFmt = Media::PixelFormat::RGBA_8888;
2019     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_RGBA_8888);
2020     pixelFmt = Media::PixelFormat::BGRA_8888;
2021     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_BGRA_8888);
2022     pixelFmt = Media::PixelFormat::ALPHA_8;
2023     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_ALPHA_8);
2024     pixelFmt = Media::PixelFormat::RGBA_F16;
2025     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_RGBA_F16);
2026     pixelFmt = Media::PixelFormat::UNKNOWN;
2027     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2028     pixelFmt = Media::PixelFormat::ARGB_8888;
2029     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2030     pixelFmt = Media::PixelFormat::RGB_888;
2031     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2032     pixelFmt = Media::PixelFormat::NV21;
2033     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2034     pixelFmt = Media::PixelFormat::NV12;
2035     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2036     pixelFmt = Media::PixelFormat::CMYK;
2037     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2038     pixelFmt = static_cast<Media::PixelFormat>(100);
2039     EXPECT_EQ(pointerDrawingManager.PixelFormatToColorType(pixelFmt), Rosen::Drawing::ColorType::COLORTYPE_UNKNOWN);
2040 }
2041 
2042 /**
2043  * @tc.name: PointerDrawingManagerTest__AlphaTypeToAlphaType
2044  * @tc.desc: Test AlphaTypeToAlphaType
2045  * @tc.type: Function
2046  * @tc.require:
2047  */
2048 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_AlphaTypeToAlphaType, TestSize.Level1)
2049 {
2050     CALL_TEST_DEBUG;
2051     PointerDrawingManager pointerDrawingManager;
2052     Media::AlphaType alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNKNOWN;
2053     EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_UNKNOWN);
2054     alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
2055     EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_OPAQUE);
2056     alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_PREMUL;
2057     EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_PREMUL);
2058     alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_UNPREMUL;
2059     EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_UNPREMUL);
2060     alphaType = static_cast<Media::AlphaType>(5);
2061     EXPECT_EQ(pointerDrawingManager.AlphaTypeToAlphaType(alphaType), Rosen::Drawing::AlphaType::ALPHATYPE_UNKNOWN);
2062 }
2063 
2064 /**
2065  * @tc.name: PointerDrawingManagerTest_ExtractDrawingImage_001
2066  * @tc.desc: Test ExtractDrawingImage
2067  * @tc.type: FUNC
2068  * @tc.require:
2069  */
2070 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ExtractDrawingImage_001, TestSize.Level1)
2071 {
2072     CALL_TEST_DEBUG;
2073     OHOS::Rosen::Drawing::Bitmap bitmap;
2074     OHOS::Rosen::Drawing::BitmapFormat format {
2075         OHOS::Rosen::Drawing::COLORTYPE_RGBA_8888, OHOS::Rosen::Drawing::ALPHATYPE_OPAQUE};
2076     PointerDrawingManager pointerDrawingManager;
2077     bitmap.Build(64, 64, format);
2078     OHOS::Rosen::Drawing::Canvas canvas(256, 256);
2079     canvas.Bind(bitmap);
2080     canvas.Clear(OHOS::Rosen::Drawing::Color::COLOR_TRANSPARENT);
2081     MOUSE_ICON mouseStyle = MOUSE_ICON::RUNNING_LEFT;
2082     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawImage(canvas, mouseStyle));
2083 }
2084 
2085 /**
2086  * @tc.name: PointerDrawingManagerTest_ExtractDrawingImage_002
2087  * @tc.desc: Test ExtractDrawingImage
2088  * @tc.type: FUNC
2089  * @tc.require:
2090  */
2091 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ExtractDrawingImage_002, TestSize.Level1)
2092 {
2093     CALL_TEST_DEBUG;
2094     OHOS::Rosen::Drawing::Bitmap bitmap;
2095     OHOS::Rosen::Drawing::BitmapFormat format {
2096         OHOS::Rosen::Drawing::COLORTYPE_RGBA_8888, OHOS::Rosen::Drawing::ALPHATYPE_OPAQUE};
2097     PointerDrawingManager pointerDrawingManager;
2098     bitmap.Build(64, 64, format);
2099     OHOS::Rosen::Drawing::Canvas canvas(256, 256);
2100     canvas.Bind(bitmap);
2101     canvas.Clear(OHOS::Rosen::Drawing::Color::COLOR_TRANSPARENT);
2102     MOUSE_ICON mouseStyle = MOUSE_ICON::RUNNING;
2103     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawImage(canvas, mouseStyle));
2104 }
2105 
2106 /**
2107  * @tc.name: PointerDrawingManagerTest_ExtractDrawingImage_003
2108  * @tc.desc: Test ExtractDrawingImage
2109  * @tc.type: FUNC
2110  * @tc.require:
2111  */
2112 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ExtractDrawingImage_003, TestSize.Level1)
2113 {
2114     CALL_TEST_DEBUG;
2115     OHOS::Rosen::Drawing::Bitmap bitmap;
2116     OHOS::Rosen::Drawing::BitmapFormat format {
2117         OHOS::Rosen::Drawing::COLORTYPE_RGBA_8888, OHOS::Rosen::Drawing::ALPHATYPE_OPAQUE};
2118     PointerDrawingManager pointerDrawingManager;
2119     bitmap.Build(64, 64, format);
2120     OHOS::Rosen::Drawing::Canvas canvas(256, 256);
2121     canvas.Bind(bitmap);
2122     canvas.Clear(OHOS::Rosen::Drawing::Color::COLOR_TRANSPARENT);
2123     MOUSE_ICON mouseStyle = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
2124     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawImage(canvas, mouseStyle));
2125     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.SetPointerLocation(200, 200, 0));
2126 }
2127 
2128 /**
2129  * @tc.name: InputWindowsManagerTest_DrawPointer_001
2130  * @tc.desc: Test DrawPointer
2131  * @tc.type: FUNC
2132  * @tc.require:
2133  */
2134 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointer_001, TestSize.Level1)
2135 {
2136     CALL_TEST_DEBUG;
2137     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2138     PointerStyle pointerStyle;
2139     pointerStyle.id = 0;
2140     pointerDrawingManager->DrawPointer(1, 100, 100, pointerStyle, DIRECTION180);
2141     EXPECT_EQ(pointerDrawingManager->lastDirection_, DIRECTION180);
2142     pointerDrawingManager->DrawPointer(1, 200, 200, pointerStyle, DIRECTION270);
2143     EXPECT_EQ(pointerDrawingManager->lastDirection_, DIRECTION270);
2144 }
2145 
2146 /**
2147  * @tc.name: InputWindowsManagerTest_DrawPointerStyle_001
2148  * @tc.desc: Test DrawPointerStyle
2149  * @tc.type: FUNC
2150  * @tc.require:
2151  */
2152 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawPointerStyle_001, TestSize.Level1)
2153 {
2154     CALL_TEST_DEBUG;
2155     PointerDrawingManager pointerDrawingManager;
2156     PointerStyle pointerStyle;
2157     pointerStyle.id = EAST;
2158     pointerStyle.color = 0;
2159     pointerStyle.size = 2;
2160     pointerDrawingManager.hasDisplay_ = true;
2161     pointerDrawingManager.hasPointerDevice_ = true;
2162     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
2163     pointerDrawingManager.lastPhysicalX_ = -1;
2164     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawPointerStyle(pointerStyle));
2165 }
2166 /**
2167  * @tc.name: InputWindowsManagerTest_InitPointerCallback_001
2168  * @tc.desc: Test InitPointerCallback
2169  * @tc.type: FUNC
2170  * @tc.require:
2171  */
2172 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_InitPointerCallback_001, TestSize.Level1)
2173 {
2174     CALL_TEST_DEBUG;
2175     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2176     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->InitPointerCallback());
2177 }
2178 
2179 /**
2180  * @tc.name: InputWindowsManagerTest_InitPointerObserver_001
2181  * @tc.desc: Test InitPointerObserver
2182  * @tc.type: FUNC
2183  * @tc.require:
2184  */
2185 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_InitPointerObserver_001, TestSize.Level1)
2186 {
2187     CALL_TEST_DEBUG;
2188     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2189     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->InitPointerObserver());
2190 }
2191 
2192 #ifdef OHOS_BUILD_ENABLE_MAGICCURSOR
2193 /**
2194  * @tc.name: InputWindowsManagerTest_SetPixelMap
2195  * @tc.desc: Test SetPixelMap
2196  * @tc.type: FUNC
2197  * @tc.require:
2198  */
2199 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPixelMap, TestSize.Level1)
2200 {
2201     CALL_TEST_DEBUG;
2202     PointerDrawingManager manager;
2203     std::shared_ptr<OHOS::Media::PixelMap> pixelMap = CreatePixelMap(MIDDLE_PIXEL_MAP_WIDTH, MIDDLE_PIXEL_MAP_HEIGHT);
2204     ASSERT_NO_FATAL_FAILURE(manager.SetPixelMap(pixelMap));
2205 }
2206 #endif // OHOS_BUILD_ENABLE_MAGICCURSOR
2207 
2208 /**
2209  * @tc.name: PointerDrawingManagerTest_SwitchPointerStyle
2210  * @tc.desc: Test SwitchPointerStyle
2211  * @tc.type: FUNC
2212  * @tc.require:
2213  */
2214 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_SwitchPointerStyle, TestSize.Level1)
2215 {
2216     CALL_TEST_DEBUG;
2217     PointerDrawingManager pointerDrawMgr;
2218     pointerDrawMgr.lastMouseStyle_.id = 2;
2219     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.SwitchPointerStyle());
2220 }
2221 
2222 /**
2223  * @tc.name: PointerDrawingManagerTest_CreateMagicCursorChangeObserver
2224  * @tc.desc: Test CreateMagicCursorChangeObserver
2225  * @tc.type: FUNC
2226  * @tc.require:
2227  */
2228 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_CreateMagicCursorChangeObserver, TestSize.Level1)
2229 {
2230     CALL_TEST_DEBUG;
2231     PointerDrawingManager pointerDrawMgr;
2232     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.CreateMagicCursorChangeObserver());
2233 }
2234 
2235 /**
2236  * @tc.name: PointerDrawingManagerTest_UpdateStyleOptions
2237  * @tc.desc: Test UpdateStyleOptions
2238  * @tc.type: FUNC
2239  * @tc.require:
2240  */
2241 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateStyleOptions, TestSize.Level1)
2242 {
2243     CALL_TEST_DEBUG;
2244     PointerDrawingManager pointerDrawMgr;
2245     pointerDrawMgr.pid_ = 100;
2246     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.UpdateStyleOptions());
2247 }
2248 
2249 /**
2250  * @tc.name: PointerDrawingManagerTest_InitPointerObserver
2251  * @tc.desc: Test InitPointerObserver
2252  * @tc.type: FUNC
2253  * @tc.require:
2254  */
2255 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_InitPointerObserver, TestSize.Level1)
2256 {
2257     CALL_TEST_DEBUG;
2258     PointerDrawingManager pointerDrawMgr;
2259     pointerDrawMgr.hasInitObserver_ = true;
2260     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.InitPointerObserver());
2261 
2262     pointerDrawMgr.hasInitObserver_ = false;
2263     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.InitPointerObserver());
2264 }
2265 
2266 /**
2267  * @tc.name: PointerDrawingManagerTest_AdjustMouseFocusByDirection90
2268  * @tc.desc: Test AdjustMouseFocusByDirection90
2269  * @tc.type: FUNC
2270  * @tc.require:
2271  */
2272 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_AdjustMouseFocusByDirection90, TestSize.Level1)
2273 {
2274     CALL_TEST_DEBUG;
2275     PointerDrawingManager pointerDrawMgr;
2276     ICON_TYPE iconType = ANGLE_SW;
2277     int32_t physicalX = 500;
2278     int32_t physicalY = 500;
2279     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2280     iconType = ANGLE_CENTER;
2281     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2282     iconType = ANGLE_NW_RIGHT;
2283     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2284     iconType = ANGLE_NW;
2285     pointerDrawMgr.userIcon_ = CreatePixelMap(MIDDLE_PIXEL_MAP_WIDTH, MIDDLE_PIXEL_MAP_HEIGHT);
2286     ASSERT_NE(pointerDrawMgr.userIcon_, nullptr);
2287     pointerDrawMgr.currentMouseStyle_.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
2288     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2289     pointerDrawMgr.userIcon_ = nullptr;
2290     ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.AdjustMouseFocusByDirection90(iconType, physicalX, physicalY));
2291 }
2292 
2293 /**
2294  * @tc.name: InputWindowsManagerTest_UpdatePointerDevice_003
2295  * @tc.desc: Test UpdatePointerDevice
2296  * @tc.type: FUNC
2297  * @tc.require:
2298  */
2299 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdatePointerDevice_003, TestSize.Level1)
2300 {
2301     CALL_TEST_DEBUG;
2302     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2303     EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 100);
2304     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(true, false, true));
2305     pointerDrawingManager->UpdatePointerDevice(true, true, true);
2306     EXPECT_EQ(pointerDrawingManager->pidInfos_.size(), 100);
2307     pointerDrawingManager->surfaceNode_ = nullptr;
2308     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
2309     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2310     surfaceNodeConfig.SurfaceNodeName = "pointer window";
2311     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2312     pointerDrawingManager->surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2313     ASSERT_TRUE(pointerDrawingManager->surfaceNode_ != nullptr);
2314     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(false, false, true));
2315 }
2316 
2317 /**
2318  * @tc.name: InputWindowsManagerTest_DrawManager_001
2319  * @tc.desc: Test DrawManager
2320  * @tc.type: FUNC
2321  * @tc.require:
2322  */
2323 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_001, TestSize.Level1)
2324 {
2325     CALL_TEST_DEBUG;
2326     PointerDrawingManager pointerDrawingManager;
2327     pointerDrawingManager.hasDisplay_ = false;
2328     pointerDrawingManager.hasPointerDevice_ = true;
2329     pointerDrawingManager.surfaceNode_ = nullptr;
2330     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2331     pointerDrawingManager.hasDisplay_ = true;
2332     pointerDrawingManager.hasPointerDevice_ = false;
2333     pointerDrawingManager.surfaceNode_ = nullptr;
2334     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2335     pointerDrawingManager.hasDisplay_ = false;
2336     pointerDrawingManager.hasPointerDevice_ = false;
2337     pointerDrawingManager.surfaceNode_ = nullptr;
2338     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2339     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2340     surfaceNodeConfig.SurfaceNodeName = "pointer window";
2341     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2342     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2343     ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2344     pointerDrawingManager.hasDisplay_ = true;
2345     pointerDrawingManager.hasPointerDevice_ = true;
2346     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2347     pointerDrawingManager.hasDisplay_ = false;
2348     pointerDrawingManager.hasPointerDevice_ = true;
2349     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2350     pointerDrawingManager.hasDisplay_ = true;
2351     pointerDrawingManager.hasPointerDevice_ = false;
2352     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2353     pointerDrawingManager.hasDisplay_ = false;
2354     pointerDrawingManager.hasPointerDevice_ = false;
2355     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2356     pointerDrawingManager.hasDisplay_ = true;
2357     pointerDrawingManager.hasPointerDevice_ = true;
2358     pointerDrawingManager.surfaceNode_ = nullptr;
2359     pointerDrawingManager.lastPhysicalX_ = -1;
2360     pointerDrawingManager.lastPhysicalY_ = 1;
2361     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2362     pointerDrawingManager.lastPhysicalX_ = 1;
2363     pointerDrawingManager.lastPhysicalY_ = -1;
2364     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2365     pointerDrawingManager.lastPhysicalX_ = -1;
2366     pointerDrawingManager.lastPhysicalY_ = -1;
2367     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2368     pointerDrawingManager.lastPhysicalX_ = 1;
2369     pointerDrawingManager.lastPhysicalY_ = 1;
2370     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2371 }
2372 
2373 /**
2374  * @tc.name: InputWindowsManagerTest_DrawManager_002
2375  * @tc.desc: Test DrawManager
2376  * @tc.type: FUNC
2377  * @tc.require:
2378  */
2379 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_002, TestSize.Level1)
2380 {
2381     CALL_TEST_DEBUG;
2382     PointerDrawingManager pointerDrawingManager;
2383     pointerDrawingManager.hasDisplay_ = true;
2384     pointerDrawingManager.hasPointerDevice_ = true;
2385     pointerDrawingManager.surfaceNode_ = nullptr;
2386     pointerDrawingManager.displayInfo_.displayDirection = DIRECTION0;
2387     pointerDrawingManager.lastPhysicalX_ = -1;
2388     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2389 }
2390 
2391 /**
2392  * @tc.name: InputWindowsManagerTest_DrawManager_003
2393  * @tc.desc: Test DrawManager
2394  * @tc.type: FUNC
2395  * @tc.require:
2396  */
2397 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawManager_003, TestSize.Level1)
2398 {
2399     CALL_TEST_DEBUG;
2400     PointerDrawingManager pointerDrawingManager;
2401     pointerDrawingManager.hasDisplay_ = true;
2402     pointerDrawingManager.hasPointerDevice_ = true;
2403     pointerDrawingManager.surfaceNode_ = nullptr;
2404     pointerDrawingManager.displayInfo_.displayDirection = DIRECTION90;
2405     pointerDrawingManager.lastPhysicalX_ = 2;
2406     pointerDrawingManager.lastPhysicalY_ = 2;
2407     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawManager());
2408 }
2409 
2410 /**
2411  * @tc.name: InputWindowsManagerTest_DeletePointerVisible_002
2412  * @tc.desc: Test DeletePointerVisible
2413  * @tc.type: FUNC
2414  * @tc.require:
2415  */
2416 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DeletePointerVisible_002, TestSize.Level1)
2417 {
2418     CALL_TEST_DEBUG;
2419     PointerDrawingManager pointerDrawingManager;
2420     int32_t pid = 1;
2421     pointerDrawingManager.surfaceNode_ = nullptr;
2422     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2423     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2424     surfaceNodeConfig.SurfaceNodeName = "pointer window";
2425     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2426     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2427     ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2428     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2429 }
2430 
2431 /**
2432  * @tc.name: InputWindowsManagerTest_DeletePointerVisible_003
2433  * @tc.desc: Test DeletePointerVisible
2434  * @tc.type: FUNC
2435  * @tc.require:
2436  */
2437 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DeletePointerVisible_003, TestSize.Level1)
2438 {
2439     CALL_TEST_DEBUG;
2440     PointerDrawingManager pointerDrawingManager;
2441     int32_t pid = 1;
2442     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2443     PointerDrawingManager::PidInfo info = {.pid = 1, .visible = true};
2444     pointerDrawingManager.pidInfos_.push_back(info);
2445     info = {.pid = 2, .visible = true};
2446     pointerDrawingManager.pidInfos_.push_back(info);
2447     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2448     pid = 5;
2449     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DeletePointerVisible(pid));
2450 }
2451 
2452 /**
2453  * @tc.name: InputWindowsManagerTest_UpdateDefaultPointerStyle_003
2454  * @tc.desc: Test UpdateDefaultPointerStyle
2455  * @tc.type: FUNC
2456  * @tc.require:
2457  */
2458 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateDefaultPointerStyle_003, TestSize.Level1)
2459 {
2460     CALL_TEST_DEBUG;
2461     PointerDrawingManager pointerDrawingManager;
2462     int32_t pid = 1;
2463     int32_t windowId = 2;
2464     PointerStyle pointerStyle;
2465     pointerStyle.id = 0;
2466     pointerStyle.color = 0;
2467     pointerStyle.size = 2;
2468     bool isUiExtension = true;
2469     int32_t ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle, isUiExtension);
2470     EXPECT_EQ(ret, RET_OK);
2471     windowId = -1;
2472     ret = pointerDrawingManager.UpdateDefaultPointerStyle(pid, windowId, pointerStyle, isUiExtension);
2473 }
2474 
2475 /**
2476  * @tc.name: PointerDrawingManagerTest_DrawScreenCenterPointer_001
2477  * @tc.desc: Test DrawScreenCenterPointer
2478  * @tc.type: FUNC
2479  * @tc.require:
2480  */
2481 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_DrawScreenCenterPointer_001, TestSize.Level1)
2482 {
2483     CALL_TEST_DEBUG;
2484     PointerDrawingManager pointerDrawingManager;
2485     PointerStyle pointerStyle;
2486     pointerStyle.id = 0;
2487     pointerStyle.color = 0;
2488     pointerStyle.size = 2;
2489     pointerDrawingManager.hasDisplay_ = true;
2490     pointerDrawingManager.hasPointerDevice_ = true;
2491     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2492     surfaceNodeConfig.SurfaceNodeName = "pointer window";
2493     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2494     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2495     ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2496 
2497     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawScreenCenterPointer(pointerStyle));
2498 }
2499 
2500 /**
2501  * @tc.name: PointerDrawingManagerTest_DrawScreenCenterPointer_002
2502  * @tc.desc: Test DrawScreenCenterPointer
2503  * @tc.type: FUNC
2504  * @tc.require:
2505  */
2506 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_DrawScreenCenterPointer_002, TestSize.Level1)
2507 {
2508     CALL_TEST_DEBUG;
2509     PointerDrawingManager pointerDrawingManager;
2510     PointerStyle pointerStyle;
2511     pointerStyle.id = 0;
2512     pointerStyle.color = 0;
2513     pointerStyle.size = 2;
2514     pointerDrawingManager.hasDisplay_ = false;
2515     pointerDrawingManager.hasPointerDevice_ = true;
2516     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2517     surfaceNodeConfig.SurfaceNodeName = "pointer window";
2518     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2519     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2520     ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2521 
2522     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawScreenCenterPointer(pointerStyle));
2523 }
2524 
2525 /**
2526  * @tc.name: PointerDrawingManagerTest_UpdateBindDisplayId_001
2527  * @tc.desc: Test UpdateBindDisplayId
2528  * @tc.type: FUNC
2529  * @tc.require:
2530  */
2531 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateBindDisplayId_001, TestSize.Level1)
2532 {
2533     CALL_TEST_DEBUG;
2534     PointerDrawingManager pointerDrawingManager;
2535     pointerDrawingManager.lastDisplayId_ = 0;
2536     uint64_t displayId = 0;
2537     pointerDrawingManager.UpdateBindDisplayId(displayId);
2538     EXPECT_EQ(pointerDrawingManager.lastDisplayId_, 0);
2539     EXPECT_EQ(pointerDrawingManager.screenId_, 0);
2540 
2541     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2542     surfaceNodeConfig.SurfaceNodeName = "pointer window";
2543     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2544     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2545     ASSERT_TRUE(pointerDrawingManager.surfaceNode_ != nullptr);
2546     pointerDrawingManager.UpdateBindDisplayId(displayId);
2547     EXPECT_EQ(pointerDrawingManager.lastDisplayId_, 0);
2548     EXPECT_EQ(pointerDrawingManager.screenId_, 0);
2549     displayId = 1;
2550     pointerDrawingManager.UpdateBindDisplayId(displayId);
2551     EXPECT_EQ(pointerDrawingManager.lastDisplayId_, 1);
2552     EXPECT_EQ(pointerDrawingManager.screenId_, 1);
2553 }
2554 
2555 /**
2556  * @tc.name: PointerDrawingManagerTest_DestroyPointerWindow_001
2557  * @tc.desc: Test DestroyPointerWindow
2558  * @tc.type: FUNC
2559  * @tc.require:
2560  */
2561 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_DestroyPointerWindow_001, TestSize.Level1)
2562 {
2563     CALL_TEST_DEBUG;
2564     PointerDrawingManager pointerDrawingManager;
2565     pointerDrawingManager.delegateProxy_ = std::make_shared<DelegateInterface>(nullptr, nullptr);
2566     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2567     surfaceNodeConfig.SurfaceNodeName = "pointer window";
2568     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2569     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2570     ASSERT_NE(pointerDrawingManager.delegateProxy_, nullptr);
2571     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DestroyPointerWindow());
2572     pointerDrawingManager.surfaceNode_ = nullptr;
2573     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DestroyPointerWindow());
2574 }
2575 
2576 /**
2577  * @tc.name: PointerDrawingManagerTest_SetMouseHotSpot_004
2578  * @tc.desc: Test SetMouseHotSpot
2579  * @tc.type: FUNC
2580  * @tc.require:
2581  */
2582 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_SetMouseHotSpot_004, TestSize.Level1)
2583 {
2584     CALL_TEST_DEBUG;
2585     PointerDrawingManager pointerDrawingManager;
2586     auto winmgrmock = std::make_shared<InputWindowsManagerMock>();
2587     int32_t pid = 1;
2588     int32_t windowId = 2;
2589     EXPECT_CALL(*winmgrmock, CheckWindowIdPermissionByPid).WillRepeatedly(testing::Return(RET_OK));
2590     int32_t hotSpotX = 1;
2591     int32_t hotSpotY = 2;
2592     // userIcon_ == nullptr
2593     int32_t ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
2594     ASSERT_EQ(ret, RET_ERR);
2595     pointerDrawingManager.userIcon_ = std::make_unique<OHOS::Media::PixelMap>();
2596     // hotSpotX < 0
2597     hotSpotX = -1;
2598     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
2599     ASSERT_EQ(ret, RET_ERR);
2600     // hotSpotY < 0
2601     hotSpotX = 1;
2602     hotSpotY = -2;
2603     ret = pointerDrawingManager.SetMouseHotSpot(pid, windowId, hotSpotX, hotSpotY);
2604     ASSERT_EQ(ret, RET_ERR);
2605     testing::Mock::AllowLeak(winmgrmock.get());
2606 }
2607 
2608 /**
2609  * @tc.name: InputWindowsManagerTest_IsPointerVisible_002
2610  * @tc.desc: Test IsPointerVisible
2611  * @tc.type: FUNC
2612  * @tc.require:
2613  */
2614 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_IsPointerVisible_002, TestSize.Level1)
2615 {
2616     CALL_TEST_DEBUG;
2617     PointerDrawingManager pointerDrawingManager;
2618     pointerDrawingManager.pidInfos_.clear();
2619     pointerDrawingManager.pid_ = 0;
2620     PointerDrawingManager::PidInfo pidInfo;
2621     for (int32_t i = 1; i < 3; i++) {
2622         pidInfo.pid = 3 - i;
2623         pidInfo.visible = false;
2624         pointerDrawingManager.hapPidInfos_.push_back(pidInfo);
2625     }
2626     bool ret = pointerDrawingManager.IsPointerVisible();
2627     EXPECT_FALSE(ret);
2628     pointerDrawingManager.pid_ = 1;
2629     ret = pointerDrawingManager.IsPointerVisible();
2630     EXPECT_FALSE(ret);
2631 }
2632 
2633 /**
2634  * @tc.name: InputWindowsManagerTest_SetPointerVisible_003
2635  * @tc.desc: Test SetPointerVisible
2636  * @tc.type: FUNC
2637  * @tc.require:
2638  */
2639 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerVisible_003, TestSize.Level1)
2640 {
2641     CALL_TEST_DEBUG;
2642     PointerDrawingManager pointerDrawingManager;
2643     int32_t pid = 102;
2644     int32_t priority = 1;
2645     bool visible = false;
2646     bool isHap = true;
2647     PointerDrawingManager::PidInfo pidInfo;
2648     for (int32_t i = 1; i < 101; i++) {
2649         pidInfo.pid = 3 - i;
2650         pidInfo.visible = false;
2651         pointerDrawingManager.hapPidInfos_.push_back(pidInfo);
2652     }
2653     int32_t ret = pointerDrawingManager.SetPointerVisible(pid, visible, priority, isHap);
2654     ASSERT_EQ(ret, RET_OK);
2655     pid = 103;
2656     ret = pointerDrawingManager.SetPointerVisible(pid, visible, priority, isHap);
2657     ASSERT_EQ(ret, RET_OK);
2658     pid = 10;
2659     ret = pointerDrawingManager.SetPointerVisible(pid, visible, priority, isHap);
2660     ASSERT_EQ(ret, RET_OK);
2661 }
2662 
2663 /**
2664  * @tc.name: InputWindowsManagerTest_DrawMovePointer_002
2665  * @tc.desc: Test the funcation DrawMovePointer
2666  * @tc.type: FUNC
2667  * @tc.require:
2668  */
2669 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawMovePointer_002, TestSize.Level1)
2670 {
2671     CALL_TEST_DEBUG;
2672     PointerDrawingManager pointerDrawingManager;
2673     int32_t physicalX = 1;
2674     int32_t physicalY = 2;
2675     uint64_t displayId = 3;
2676     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawMovePointer(displayId, physicalX, physicalY));
2677     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
2678     surfaceNodeConfig.SurfaceNodeName = "pointer window";
2679     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
2680     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
2681     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.DrawMovePointer(displayId, physicalX, physicalY));
2682 }
2683 
2684 /**
2685  * @tc.name: InputWindowsManagerTest_SetPointerStyle_002
2686  * @tc.desc: Test SetPointerStyle
2687  * @tc.type: FUNC
2688  * @tc.require:
2689  */
2690 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerStyle_002, TestSize.Level1)
2691 {
2692     CALL_TEST_DEBUG;
2693     PointerDrawingManager pointerDrawingManager;
2694     PointerStyle pointerStyle;
2695     int32_t pid = 1;
2696     int32_t windowId = -2;
2697     int32_t ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2698     ASSERT_EQ(ret, RET_ERR);
2699     windowId = -1;
2700     pointerStyle.id = MOUSE_ICON::DEVELOPER_DEFINED_ICON;
2701     ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2702     ASSERT_EQ(ret, RET_OK);
2703     windowId = 1;
2704     ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2705     ASSERT_EQ(ret, RET_OK);
2706     IconStyle iconStyle;
2707     iconStyle.alignmentWay = 0;
2708     iconStyle.iconPath = "testpath";
2709     pointerDrawingManager.mouseIcons_.insert(std::make_pair(static_cast<MOUSE_ICON>(pointerStyle.id), iconStyle));
2710     ret = pointerDrawingManager.SetPointerStyle(pid, windowId, pointerStyle);
2711     ASSERT_EQ(ret, RET_OK);
2712 }
2713 
2714 /**
2715  * @tc.name: InputWindowsManagerTest_branchCoverage
2716  * @tc.desc: Test SetPointerStyle
2717  * @tc.type: FUNC
2718  * @tc.require:
2719  */
2720 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_branchCoverage, TestSize.Level1)
2721 {
2722     PointerDrawingManager pointerDrawingManager;
2723     MOUSE_ICON mouseStyle = EAST;
2724     const std::string iconPath = "/system/etc/multimodalinput/mouse_icon/North_South.svg";
2725     std::unique_ptr<OHOS::Media::PixelMap> pixelMap = SetMouseIconTest(iconPath);
2726     ASSERT_NE(pixelMap, nullptr);
2727     pointerDrawingManager.UpdateIconPath(mouseStyle, iconPath);
2728 
2729     pointerDrawingManager.surfaceNode_ = nullptr;
2730     auto ret = pointerDrawingManager.SkipPointerLayer(false);
2731     ASSERT_EQ(ret, RET_OK);
2732     pointerDrawingManager.canvasWidth_ = 0;
2733     pointerDrawingManager.cursorWidth_ = 1;
2734     pointerDrawingManager.canvasHeight_ = 0;
2735     pointerDrawingManager.cursorHeight_ = 1;
2736     pointerDrawingManager.SetSurfaceNodeBounds();
2737     ret = pointerDrawingManager.DrawNewDpiPointer();
2738     ASSERT_NE(ret, RET_OK);
2739 }
2740 
2741 /**
2742  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_001
2743  * @tc.desc: Test AdjustMouseFocusToSoftRenderOrigin
2744  * @tc.type: FUNC
2745  * @tc.require:
2746  */
2747 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_001, TestSize.Level1)
2748 {
2749     CALL_TEST_DEBUG;
2750     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2751     pointerDrawingManager->imageWidth_ = 50;
2752     pointerDrawingManager->imageHeight_ = 50;
2753     int32_t physicalX = 100;
2754     int32_t physicalY = 100;
2755     pointerDrawingManager->RotateDegree(DIRECTION0);
2756     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(
2757         DIRECTION0, MOUSE_ICON::TEXT_CURSOR, physicalX, physicalY);
2758     if (pointerDrawingManager->GetHardCursorEnabled()) {
2759         EXPECT_EQ(physicalX, 100);
2760         EXPECT_EQ(physicalY, 100);
2761     } else {
2762         EXPECT_EQ(physicalX, 75);
2763         EXPECT_EQ(physicalY, 75);
2764     }
2765     physicalX = 100;
2766     physicalY = 100;
2767     pointerDrawingManager->RotateDegree(DIRECTION90);
2768     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(
2769         DIRECTION90, MOUSE_ICON::TEXT_CURSOR, physicalX, physicalY);
2770     if (pointerDrawingManager->GetHardCursorEnabled()) {
2771         EXPECT_EQ(physicalX, 100);
2772         EXPECT_EQ(physicalY, 100);
2773     } else {
2774         EXPECT_EQ(physicalX, 75);
2775         EXPECT_EQ(physicalY, 125);
2776     }
2777     physicalX = 100;
2778     physicalY = 100;
2779     pointerDrawingManager->RotateDegree(DIRECTION270);
2780     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(
2781         DIRECTION270, MOUSE_ICON::TEXT_CURSOR, physicalX, physicalY);
2782     if (pointerDrawingManager->GetHardCursorEnabled()) {
2783         EXPECT_EQ(physicalX, 100);
2784         EXPECT_EQ(physicalY, 100);
2785     } else {
2786         EXPECT_EQ(physicalX, 125);
2787         EXPECT_EQ(physicalY, 75);
2788     }
2789 }
2790 
2791 /**
2792  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_002
2793  * @tc.desc: Test AdjustMouseFocusToSoftRenderOrigin
2794  * @tc.type: FUNC
2795  * @tc.require:
2796  */
2797 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_002, TestSize.Level1)
2798 {
2799     CALL_TEST_DEBUG;
2800     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2801     pointerDrawingManager->imageWidth_ = 50;
2802     pointerDrawingManager->imageHeight_ = 50;
2803     pointerDrawingManager->UpdateIconPath(MOUSE_ICON::DEFAULT, CURSOR_ICON_PATH);
2804     int32_t physicalX = 100;
2805     int32_t physicalY = 100;
2806     pointerDrawingManager->RotateDegree(DIRECTION0);
2807     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION0, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2808     if (pointerDrawingManager->GetHardCursorEnabled()) {
2809         EXPECT_EQ(physicalX, 100);
2810         EXPECT_EQ(physicalY, 100);
2811     } else {
2812         EXPECT_EQ(physicalX, 75);
2813         EXPECT_EQ(physicalY, 75);
2814     }
2815     physicalX = 100;
2816     physicalY = 100;
2817     pointerDrawingManager->RotateDegree(DIRECTION90);
2818     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION90, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2819     if (pointerDrawingManager->GetHardCursorEnabled()) {
2820         EXPECT_EQ(physicalX, 100);
2821         EXPECT_EQ(physicalY, 100);
2822     } else {
2823         EXPECT_EQ(physicalX, 75);
2824         EXPECT_EQ(physicalY, 125);
2825     }
2826     physicalX = 100;
2827     physicalY = 100;
2828     pointerDrawingManager->RotateDegree(DIRECTION270);
2829     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION270, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2830     if (pointerDrawingManager->GetHardCursorEnabled()) {
2831         EXPECT_EQ(physicalX, 100);
2832         EXPECT_EQ(physicalY, 100);
2833     } else {
2834         EXPECT_EQ(physicalX, 125);
2835         EXPECT_EQ(physicalY, 75);
2836     }
2837 }
2838 
2839 /**
2840  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_003
2841  * @tc.desc: Test AdjustMouseFocusToSoftRenderOrigin
2842  * @tc.type: FUNC
2843  * @tc.require:
2844  */
2845 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_003, TestSize.Level1)
2846 {
2847     CALL_TEST_DEBUG;
2848     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2849     pointerDrawingManager->imageWidth_ = 50;
2850     pointerDrawingManager->imageHeight_ = 50;
2851     pointerDrawingManager->UpdateIconPath(MOUSE_ICON::DEFAULT, CUSTOM_CURSOR_ICON_PATH);
2852     int32_t physicalX = 100;
2853     int32_t physicalY = 100;
2854     pointerDrawingManager->RotateDegree(DIRECTION0);
2855     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION0, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2856     if (pointerDrawingManager->GetHardCursorEnabled()) {
2857         EXPECT_EQ(physicalX, 100);
2858         EXPECT_EQ(physicalY, 100);
2859     } else {
2860         EXPECT_NE(physicalX, 75);
2861         EXPECT_NE(physicalY, 75);
2862     }
2863     physicalX = 100;
2864     physicalY = 100;
2865     pointerDrawingManager->RotateDegree(DIRECTION90);
2866     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION90, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2867     if (pointerDrawingManager->GetHardCursorEnabled()) {
2868         EXPECT_EQ(physicalX, 100);
2869         EXPECT_EQ(physicalY, 100);
2870     } else {
2871         EXPECT_NE(physicalX, 75);
2872         EXPECT_NE(physicalY, 125);
2873     }
2874     physicalX = 100;
2875     physicalY = 100;
2876     pointerDrawingManager->RotateDegree(DIRECTION270);
2877     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION270, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2878     if (pointerDrawingManager->GetHardCursorEnabled()) {
2879         EXPECT_EQ(physicalX, 100);
2880         EXPECT_EQ(physicalY, 100);
2881     } else {
2882         EXPECT_NE(physicalX, 125);
2883         EXPECT_NE(physicalY, 75);
2884     }
2885 }
2886 
2887 /**
2888  * @tc.name: InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_004
2889  * @tc.desc: Test AdjustMouseFocusToSoftRenderOrigin
2890  * @tc.type: FUNC
2891  * @tc.require:
2892  */
2893 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AdjustMouseFocusToSoftRenderOrigin_004, TestSize.Level1)
2894 {
2895     CALL_TEST_DEBUG;
2896     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2897     pointerDrawingManager->imageWidth_ = 50;
2898     pointerDrawingManager->imageHeight_ = 50;
2899     pointerDrawingManager->UpdateIconPath(MOUSE_ICON::DEFAULT, DEFAULT_ICON_PATH);
2900     int32_t physicalX = 100;
2901     int32_t physicalY = 100;
2902     pointerDrawingManager->RotateDegree(DIRECTION0);
2903     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION0, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2904     EXPECT_EQ(physicalX, 100);
2905     EXPECT_EQ(physicalY, 100);
2906     physicalX = 100;
2907     physicalY = 100;
2908     pointerDrawingManager->RotateDegree(DIRECTION90);
2909     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION90, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2910     EXPECT_EQ(physicalX, 100);
2911     EXPECT_EQ(physicalY, 100);
2912     physicalX = 100;
2913     physicalY = 100;
2914     pointerDrawingManager->RotateDegree(DIRECTION270);
2915     pointerDrawingManager->AdjustMouseFocusToSoftRenderOrigin(DIRECTION270, MOUSE_ICON::DEFAULT, physicalX, physicalY);
2916     EXPECT_EQ(physicalX, 100);
2917     EXPECT_EQ(physicalY, 100);
2918 }
2919 
2920 /**
2921  * @tc.name: PointerDrawingManagerTest_UpdateMouseStyle
2922  * @tc.desc: Test UpdateMouseStyle
2923  * @tc.type: Function
2924  * @tc.require:
2925  */
2926 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateMouseStyle, TestSize.Level1)
2927 {
2928     CALL_TEST_DEBUG;
2929     PointerDrawingManager pointerDrawingManager;
2930     PointerStyle pointerStyle;
2931     pointerStyle.id = AECH_DEVELOPER_DEFINED_STYLE;
2932     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdateMouseStyle());
2933     pointerStyle.id = AECH_DEVELOPER_DEFINED;
2934     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdateMouseStyle());
2935 }
2936 
2937 /**
2938  * @tc.name: PointerDrawingManagerTest_ConvertToColorSpace_001
2939  * @tc.desc: Test ConvertToColorSpace
2940  * @tc.type: Function
2941  * @tc.require:
2942  */
2943 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_ConvertToColorSpace_001, TestSize.Level1)
2944 {
2945     CALL_TEST_DEBUG;
2946     PointerDrawingManager pointerDrawingManager;
2947     Media::ColorSpace colorSpace = Media::ColorSpace::DISPLAY_P3;
2948     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.ConvertToColorSpace(colorSpace));
2949     colorSpace = Media::ColorSpace::LINEAR_SRGB;
2950     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.ConvertToColorSpace(colorSpace));
2951     colorSpace = Media::ColorSpace::ACES;
2952     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.ConvertToColorSpace(colorSpace));
2953 }
2954 
2955 /**
2956  * @tc.name: PointerDrawingManagerTest_RegisterDisplayStatusReceiver_001
2957  * @tc.desc: Test RegisterDisplayStatusReceiver
2958  * @tc.type: Function
2959  * @tc.require:
2960  */
2961 HWTEST_F(PointerDrawingManagerTest, RegisterDisplayStatusReceiver_001, TestSize.Level1)
2962 {
2963     CALL_TEST_DEBUG;
2964     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2965     pointerDrawingManager->initDisplayStatusReceiverFlag_ = true;
2966     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->RegisterDisplayStatusReceiver());
2967 }
2968 
2969 /**
2970  * @tc.name: PointerDrawingManagerTest_RegisterDisplayStatusReceiver_002
2971  * @tc.desc: Test RegisterDisplayStatusReceiver
2972  * @tc.type: Function
2973  * @tc.require:
2974  */
2975 HWTEST_F(PointerDrawingManagerTest, RegisterDisplayStatusReceiver_002, TestSize.Level1)
2976 {
2977     CALL_TEST_DEBUG;
2978     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2979     pointerDrawingManager->initDisplayStatusReceiverFlag_ = false;
2980     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->RegisterDisplayStatusReceiver());
2981 }
2982 
2983 /**
2984  * @tc.name: PointerDrawingManagerTest_CalculateRenderDirection_001
2985  * @tc.desc: Test CalculateRenderDirection
2986  * @tc.type: Function
2987  * @tc.require:
2988  */
2989 HWTEST_F(PointerDrawingManagerTest, CalculateRenderDirection_001, TestSize.Level1)
2990 {
2991     CALL_TEST_DEBUG;
2992     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
2993     pointerDrawingManager->displayInfo_.displayDirection = DIRECTION270;
2994     pointerDrawingManager->displayInfo_.direction = DIRECTION90;
2995     bool isHard = true;
2996     bool isWindowRotate = true;
2997     Direction ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
2998     ASSERT_EQ(ret, DIRECTION90);
2999     isHard = true;
3000     isWindowRotate = false;
3001     ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3002     ASSERT_EQ(ret, DIRECTION90);
3003     isHard = false;
3004     isWindowRotate = true;
3005     ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3006     ASSERT_EQ(ret, DIRECTION180);
3007     isHard = false;
3008     isWindowRotate = false;
3009     ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3010     ASSERT_EQ(ret, DIRECTION0);
3011 }
3012 
3013 /**
3014  * @tc.name: PointerDrawingManagerTest_CalculateRenderDirection_002
3015  * @tc.desc: Test CalculateRenderDirection
3016  * @tc.type: Function
3017  * @tc.require:
3018  */
3019 HWTEST_F(PointerDrawingManagerTest, CalculateRenderDirection_002, TestSize.Level1)
3020 {
3021     CALL_TEST_DEBUG;
3022     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3023     pointerDrawingManager->displayInfo_.displayDirection = DIRECTION270;
3024     pointerDrawingManager->displayInfo_.direction = DIRECTION90;
3025     bool isHard = true;
3026     bool isWindowRotate = true;
3027     Direction ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3028     ASSERT_EQ(ret, DIRECTION90);
3029     isHard = true;
3030     isWindowRotate = false;
3031     ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3032     ASSERT_EQ(ret, DIRECTION90);
3033     isHard = false;
3034     isWindowRotate = true;
3035     ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3036     ASSERT_EQ(ret, DIRECTION180);
3037     isHard = false;
3038     isWindowRotate = false;
3039     ret = pointerDrawingManager->CalculateRenderDirection(isHard, isWindowRotate);
3040     ASSERT_EQ(ret, DIRECTION0);
3041 }
3042 
3043 /**
3044  * @tc.name: PointerDrawingManagerTest_UpdateMirrorScreens_001
3045  * @tc.desc: Test UpdateMirrorScreens
3046  * @tc.type: Function
3047  * @tc.require:
3048  */
3049 HWTEST_F(PointerDrawingManagerTest, UpdateMirrorScreens_001, TestSize.Level1)
3050 {
3051     CALL_TEST_DEBUG;
3052     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3053     OLD::DisplayInfo displaysInfo;
3054     displaysInfo.rsId = 102;
3055     displaysInfo.direction = DIRECTION0;
3056     displaysInfo.displayDirection = DIRECTION0;
3057     displaysInfo.width = 400;
3058     displaysInfo.height = 300;
3059     pointerDrawingManager->displayInfo_.rsId = 100;
3060     pointerDrawingManager->displayInfo_.direction = DIRECTION0;
3061     pointerDrawingManager->displayInfo_.displayDirection = DIRECTION0;
3062     pointerDrawingManager->displayInfo_.width = 600;
3063     pointerDrawingManager->displayInfo_.height = 400;
3064     auto spMirror = std::make_shared<ScreenPointer>(
3065         pointerDrawingManager->hardwareCursorPointerManager_, pointerDrawingManager->handler_, displaysInfo);
3066     auto spMain = std::make_shared<ScreenPointer>(pointerDrawingManager->hardwareCursorPointerManager_,
3067         pointerDrawingManager->handler_, pointerDrawingManager->displayInfo_);
3068     spMirror->mode_ = mode_t::SCREEN_MIRROR;
3069     spMirror->displayDirection_ = DIRECTION0;
3070     pointerDrawingManager->screenPointers_[displaysInfo.rsId] = spMirror;
3071     pointerDrawingManager->screenPointers_[101] = nullptr;
3072     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->UpdateMirrorScreens(spMain, pointerDrawingManager->displayInfo_));
3073     pointerDrawingManager->displayInfo_.direction = DIRECTION90;
3074     pointerDrawingManager->displayInfo_.displayDirection = DIRECTION270;
3075     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->UpdateMirrorScreens(spMain, pointerDrawingManager->displayInfo_));
3076 }
3077 
3078 /**
3079  * @tc.name: PointerDrawingManagerTest_SwitchPointerStyle_002
3080  * @tc.desc: Test SwitchPointerStyle
3081  * @tc.type: FUNC
3082  * @tc.require:
3083  */
3084 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_SwitchPointerStyle_002, TestSize.Level1)
3085 {
3086     CALL_TEST_DEBUG;
3087     PointerDrawingManager pointerDrawMgr;
3088     int32_t maxId = 49;
3089     std::vector<int32_t> vecStyleId;
3090     for (int32_t i = 0; i < maxId; i++) {
3091         vecStyleId.push_back(i);
3092     }
3093     vecStyleId.push_back(-100);
3094     vecStyleId.push_back(-101);
3095     vecStyleId.push_back(-1);
3096     for (size_t i = 0; i < vecStyleId.size(); i++) {
3097         pointerDrawMgr.lastMouseStyle_.id = vecStyleId[i];
3098         ASSERT_NO_FATAL_FAILURE(pointerDrawMgr.SwitchPointerStyle());
3099     }
3100 }
3101 
3102 /**
3103  * @tc.name: InputWindowsManagerTest_GetMainScreenDisplayInfo_001
3104  * @tc.desc: Test GetMainScreenDisplayInfo
3105  * @tc.type: FUNC
3106  * @tc.require:
3107  */
3108 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_GetMainScreenDisplayInfo_001, TestSize.Level1)
3109 {
3110     CALL_TEST_DEBUG;
3111     PointerDrawingManager pointerDrawingManager;
3112     OLD::DisplayInfo displayInfo1;
3113     displayInfo1.id = 1;
3114     displayInfo1.x = 1;
3115     displayInfo1.y = 1;
3116     displayInfo1.width = 2;
3117     displayInfo1.height = 2;
3118     displayInfo1.dpi = 240;
3119     displayInfo1.name = "pp";
3120     displayInfo1.direction = DIRECTION0;
3121     displayInfo1.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_MAIN;
3122 
3123     OLD::DisplayInfo displayInfo2;
3124     displayInfo2.id = 2;
3125     displayInfo2.x = 1;
3126     displayInfo2.y = 1;
3127     displayInfo2.width = 2;
3128     displayInfo2.height = 2;
3129     displayInfo2.dpi = 240;
3130     displayInfo2.name = "pp";
3131     displayInfo2.uniq = "pp";
3132     displayInfo2.direction = DIRECTION0;
3133     displayInfo2.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_EXPAND;
3134 
3135     OLD::DisplayGroupInfo displayGroupInfo;
3136     displayGroupInfo.displaysInfo.push_back(displayInfo2);
3137     displayGroupInfo.displaysInfo.push_back(displayInfo1);
3138     OLD::DisplayInfo displayInfo = displayGroupInfo.displaysInfo[0];
3139     ASSERT_EQ(pointerDrawingManager.GetMainScreenDisplayInfo(displayGroupInfo, displayInfo), RET_OK);
3140 }
3141 
3142 /**
3143  * @tc.name: InputWindowsManagerTest_UpdateMouseLayer
3144  * @tc.desc: Test UpdateMouseLayer
3145  * @tc.type: FUNC
3146  * @tc.require:
3147  */
3148 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_UpdateMouseLayer, TestSize.Level1)
3149 {
3150     CALL_TEST_DEBUG;
3151     PointerDrawingManager pointerDrawingManager;
3152     PointerStyle pointerStyle;
3153     int32_t physicalX = 1;
3154     int32_t physicalY = 2;
3155     pointerDrawingManager.surfaceNode_ = nullptr;
3156     pointerDrawingManager.hardwareCursorPointerManager_->SetHdiServiceState(true);
3157     pointerDrawingManager.hardwareCursorPointerManager_->isEnableState_ = true;
3158     pointerDrawingManager.lastMouseStyle_.id = 2;
3159     ASSERT_EQ(pointerDrawingManager.UpdateMouseLayer(pointerStyle, physicalX, physicalY), RET_ERR);
3160 }
3161 
3162 /**
3163  * @tc.name: PointerDrawingManagerExTest_UpdateMirrorScreens_001
3164  * @tc.desc: Test the funcation UpdateMirrorScreens
3165  * @tc.type: FUNC
3166  * @tc.require:
3167  */
3168 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerExTest_UpdateMirrorScreens_001, TestSize.Level1)
3169 {
3170     CALL_TEST_DEBUG;
3171     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3172     hwcmgr_ptr_t hwcmgr = nullptr;
3173     handler_ptr_t handler = nullptr;
3174     OLD::DisplayInfo di;
3175     std::shared_ptr<ScreenPointer> screenpointer = std::make_shared<ScreenPointer>(hwcmgr, handler, di);
3176     OLD::DisplayInfo displaysInfo;
3177     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager->UpdateMirrorScreens(screenpointer, displaysInfo));
3178 }
3179 
3180 /**
3181  * @tc.name: InputWindowsManagerTest_OnDisplayInfo_004
3182  * @tc.desc: Test OnDisplayInfo
3183  * @tc.type: FUNC
3184  * @tc.require:
3185  */
3186 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_004, TestSize.Level1)
3187 {
3188     CALL_TEST_DEBUG;
3189     PointerDrawingManager pointerDrawingManager;
3190     OLD::DisplayInfo displaysInfo;
3191     displaysInfo.rsId = 22;
3192     OLD::DisplayGroupInfo displayGroupInfo;
3193     displayGroupInfo.displaysInfo.push_back(displaysInfo);
3194     displayGroupInfo.focusWindowId = 0;
3195     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3196     surfaceNodeConfig.SurfaceNodeName = "pointer window";
3197     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3198     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3199     pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3200     pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3201     OLD::DisplayInfo displaysInfo_;
3202     displaysInfo_.rsId = 11;
3203     pointerDrawingManager.displayInfo_ = displaysInfo_;
3204     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3205 
3206     OLD::DisplayGroupInfo displayGroupInfo2;
3207     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo2));
3208 
3209     OLD::DisplayInfo displaysInfo3;
3210     displaysInfo3.rsId = 33;
3211     OLD::DisplayGroupInfo displayGroupInfo3;
3212     displayGroupInfo3.displaysInfo.push_back(displaysInfo3);
3213     displayGroupInfo3.focusWindowId = 0;
3214     OLD::DisplayInfo displaysInfo33_;
3215     displaysInfo33_.rsId = 33;
3216     pointerDrawingManager.displayInfo_ = displaysInfo33_;
3217     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo3));
3218 }
3219 
3220 /**
3221  * @tc.name: InputWindowsManagerTest_OnDisplayInfo_005
3222  * @tc.desc: Test OnDisplayInfo
3223  * @tc.type: FUNC
3224  * @tc.require:
3225  */
3226 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_005, TestSize.Level1)
3227 {
3228     CALL_TEST_DEBUG;
3229     PointerDrawingManager pointerDrawingManager;
3230     OLD::DisplayInfo displaysInfo;
3231     displaysInfo.rsId = 22;
3232     OLD::DisplayGroupInfo displayGroupInfo;
3233     displayGroupInfo.displaysInfo.push_back(displaysInfo);
3234     displayGroupInfo.focusWindowId = 0;
3235     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3236     surfaceNodeConfig.SurfaceNodeName = "pointer window";
3237     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3238     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3239     pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3240     pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3241     OLD::DisplayInfo displaysInfo_;
3242     displaysInfo_.rsId = 11;
3243     pointerDrawingManager.displayInfo_ = displaysInfo_;
3244     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3245 }
3246 
3247 /**
3248  * @tc.name: InputWindowsManagerTest_OnDisplayInfo_006
3249  * @tc.desc: Test OnDisplayInfo
3250  * @tc.type: FUNC
3251  * @tc.require:
3252  */
3253 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_006, TestSize.Level1)
3254 {
3255     CALL_TEST_DEBUG;
3256     PointerDrawingManager pointerDrawingManager;
3257     OLD::DisplayInfo displaysInfo;
3258     displaysInfo.rsId = 11;
3259     OLD::DisplayGroupInfo displayGroupInfo;
3260     displayGroupInfo.displaysInfo.push_back(displaysInfo);
3261     displayGroupInfo.focusWindowId = 0;
3262     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3263     surfaceNodeConfig.SurfaceNodeName = "pointer window";
3264     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3265     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3266     pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3267     pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3268     OLD::DisplayInfo displaysInfo_;
3269     displaysInfo_.rsId = 11;
3270     pointerDrawingManager.displayInfo_ = displaysInfo_;
3271     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3272 }
3273 
3274 /**
3275  * @tc.name: InputWindowsManagerTest_OnDisplayInfo_007
3276  * @tc.desc: Test OnDisplayInfo
3277  * @tc.type: FUNC
3278  * @tc.require:
3279  */
3280 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_007, TestSize.Level1)
3281 {
3282     CALL_TEST_DEBUG;
3283     PointerDrawingManager pointerDrawingManager;
3284     OLD::DisplayInfo displaysInfo;
3285     displaysInfo.rsId = 11;
3286     displaysInfo.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_EXTEND;
3287     OLD::DisplayGroupInfo displayGroupInfo;
3288     displayGroupInfo.displaysInfo.push_back(displaysInfo);
3289     displayGroupInfo.focusWindowId = 0;
3290     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3291     surfaceNodeConfig.SurfaceNodeName = "pointer window";
3292     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3293     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3294     pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3295     pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3296     OLD::DisplayInfo displaysInfo_;
3297     displaysInfo_.rsId = 11;
3298     displaysInfo_.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_MAIN;
3299     pointerDrawingManager.displayInfo_ = displaysInfo_;
3300     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3301 }
3302 
3303 /**
3304  * @tc.name: InputWindowsManagerTest_OnDisplayInfo_008
3305  * @tc.desc: Test OnDisplayInfo
3306  * @tc.type: FUNC
3307  * @tc.require:
3308  */
3309 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_OnDisplayInfo_008, TestSize.Level1)
3310 {
3311     CALL_TEST_DEBUG;
3312     PointerDrawingManager pointerDrawingManager;
3313     OLD::DisplayInfo displaysInfo;
3314     displaysInfo.rsId = 11;
3315     displaysInfo.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_MAIN;
3316     OLD::DisplayGroupInfo displayGroupInfo;
3317     displayGroupInfo.displaysInfo.push_back(displaysInfo);
3318     displayGroupInfo.focusWindowId = 0;
3319     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3320     surfaceNodeConfig.SurfaceNodeName = "pointer window";
3321     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3322     pointerDrawingManager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3323     pointerDrawingManager.surfaceNode_->SetFrameGravity(Rosen::Gravity::RESIZE_ASPECT_FILL);
3324     pointerDrawingManager.surfaceNode_->SetPositionZ(Rosen::RSSurfaceNode::POINTER_WINDOW_POSITION_Z);
3325     OLD::DisplayInfo displaysInfo_;
3326     displaysInfo_.rsId = 11;
3327     displaysInfo_.displaySourceMode = OHOS::MMI::DisplaySourceMode::SCREEN_MAIN;
3328     pointerDrawingManager.displayInfo_ = displaysInfo_;
3329     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.OnDisplayInfo(displayGroupInfo));
3330 }
3331 
3332 /**
3333  * @tc.name: InputWindowsManagerTest_CreatePointerWindowForScreenPointer_003
3334  * @tc.desc: Test CreatePointerWindowForScreenPointer
3335  * @tc.type: FUNC
3336  * @tc.require:
3337  */
3338 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CreatePointerWindowForScreenPointer_003, TestSize.Level1)
3339 {
3340     CALL_TEST_DEBUG;
3341     OLD::DisplayInfo displayInfo_;
3342     std::unordered_map<uint32_t, std::shared_ptr<ScreenPointer>> screenPointers_;
3343 
3344     int32_t rsId = 1;
3345     int32_t physicalX = 0;
3346     int32_t physicalY = 0;
3347     auto sp = std::make_shared<ScreenPointer>(nullptr, nullptr, displayInfo_);
3348     auto pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3349     pointerDrawingManager->screenPointers_[rsId] = sp;
3350     OLD::DisplayInfo displaysInfo_;
3351     displaysInfo_.rsId = 1;
3352     pointerDrawingManager->displayInfo_ = displaysInfo_;
3353     g_isRsRestart.store(false);
3354     int32_t result = pointerDrawingManager->CreatePointerWindowForScreenPointer(rsId, physicalX, physicalY);
3355     EXPECT_EQ(result, RET_ERR);
3356 }
3357 
3358 /**
3359  * @tc.name: InputWindowsManagerTest_CreatePointerWindowForScreenPointer_004
3360  * @tc.desc: Test CreatePointerWindowForScreenPointer
3361  * @tc.type: FUNC
3362  * @tc.require:
3363  */
3364 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CreatePointerWindowForScreenPointer_004, TestSize.Level1)
3365 {
3366     CALL_TEST_DEBUG;
3367     OLD::DisplayInfo displayInfo_;
3368     std::unordered_map<uint32_t, std::shared_ptr<ScreenPointer>> screenPointers_;
3369 
3370     int32_t rsId = 1;
3371     int32_t physicalX = 0;
3372     int32_t physicalY = 0;
3373     auto sp = std::make_shared<ScreenPointer>(nullptr, nullptr, displayInfo_);
3374     auto pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3375     pointerDrawingManager->screenPointers_[rsId] = sp;
3376     OLD::DisplayInfo displaysInfo_;
3377     displaysInfo_.rsId = 2;
3378     pointerDrawingManager->displayInfo_ = displaysInfo_;
3379     g_isRsRestart.store(false);
3380     int32_t result = pointerDrawingManager->CreatePointerWindowForScreenPointer(rsId, physicalX, physicalY);
3381     EXPECT_NE(result, RET_OK);
3382 }
3383 
3384 /**
3385  * @tc.name: InputWindowsManagerTest_CreatePointerWindowForScreenPointer_005
3386  * @tc.desc: Test CreatePointerWindowForScreenPointer
3387  * @tc.type: FUNC
3388  * @tc.require:
3389  */
3390 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_CreatePointerWindowForScreenPointer_005, TestSize.Level1)
3391 {
3392     CALL_TEST_DEBUG;
3393     OLD::DisplayInfo displayInfo_;
3394     std::unordered_map<uint32_t, std::shared_ptr<ScreenPointer>> screenPointers_;
3395 
3396     int32_t rsId = 2;
3397     int32_t physicalX = 0;
3398     int32_t physicalY = 0;
3399     auto sp = std::make_shared<ScreenPointer>(nullptr, nullptr, displayInfo_);
3400     auto pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3401     pointerDrawingManager->screenPointers_[rsId] = sp;
3402 
3403     g_isRsRestart.store(false);
3404     int32_t result = pointerDrawingManager->CreatePointerWindowForScreenPointer(rsId, physicalX, physicalY);
3405     EXPECT_NE(result, RET_OK);
3406 }
3407 
3408 /**
3409  * @tc.name: InputWindowsManagerTest_DrawMovePointer_003
3410  * @tc.desc: Test the funcation DrawMovePointer
3411  * @tc.type: FUNC
3412  * @tc.require:
3413  */
3414 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_DrawMovePointer_003, TestSize.Level1)
3415 {
3416     CALL_TEST_DEBUG;
3417     PointerDrawingManager manager;
3418     PointerStyle pointerStyle;
3419 
3420     int32_t displayId = 1;
3421     int32_t physicalX = 2;
3422     int32_t physicalY = 3;
3423     auto align = manager.MouseIcon2IconType(MOUSE_ICON(2));
3424     Direction direction = DIRECTION0;
3425     manager.surfaceNode_ = nullptr;
3426     int32_t ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
3427     EXPECT_EQ(ret, RET_ERR);
3428     Rosen::RSSurfaceNodeConfig surfaceNodeConfig;
3429     surfaceNodeConfig.SurfaceNodeName = "pointer window";
3430     Rosen::RSSurfaceNodeType surfaceNodeType = Rosen::RSSurfaceNodeType::SELF_DRAWING_WINDOW_NODE;
3431     manager.surfaceNode_ = Rosen::RSSurfaceNode::Create(surfaceNodeConfig, surfaceNodeType);
3432     ASSERT_TRUE(manager.surfaceNode_ != nullptr);
3433     auto setlot = manager.SetCursorLocation(physicalX, physicalY, align);
3434     EXPECT_EQ(setlot, true);
3435     ret = manager.DrawMovePointer(displayId, physicalX, physicalY, pointerStyle, direction);
3436     EXPECT_EQ(ret, RET_OK);
3437 }
3438 
3439 /**
3440  * @tc.name: InputWindowsManagerTest_SetPointerSize_002
3441  * @tc.desc: Test SetPointerSize
3442  * @tc.type: FUNC
3443  * @tc.require:
3444  */
3445 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_SetPointerSize_002, TestSize.Level1)
3446 {
3447     CALL_TEST_DEBUG;
3448     PointerDrawingManager pointerDrawMgr;
3449     pointerDrawMgr.hardwareCursorPointerManager_->SetHdiServiceState(true);
3450     pointerDrawMgr.hardwareCursorPointerManager_->isEnableState_ = true;
3451     pointerDrawMgr.lastMouseStyle_.id = 2;
3452     ASSERT_EQ(pointerDrawMgr.SetPointerSize(0), RET_OK);
3453 }
3454 
3455 /**
3456  * @tc.name: PointerDrawingManagerTest_UpdateBindDisplayId_002
3457  * @tc.desc: Test UpdateBindDisplayId
3458  * @tc.type: FUNC
3459  * @tc.require:
3460  */
3461 HWTEST_F(PointerDrawingManagerTest, PointerDrawingManagerTest_UpdateBindDisplayId_002, TestSize.Level1)
3462 {
3463     CALL_TEST_DEBUG;
3464     PointerDrawingManager pointerDrawingManager;
3465     pointerDrawingManager.lastDisplayId_ = 0;
3466     pointerDrawingManager.surfaceNode_ = nullptr;
3467     int32_t displayId = 1;
3468     ASSERT_NO_FATAL_FAILURE(pointerDrawingManager.UpdateBindDisplayId(displayId));
3469 }
3470 
3471 /**
3472  * @tc.name: InputWindowsManagerTest_LoadCursorSvgWithColor_001
3473  * @tc.desc: Test LoadCursorSvgWithColor
3474  * @tc.type: FUNC
3475  * @tc.require:
3476  */
3477 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_LoadCursorSvgWithColor_001, TestSize.Level1)
3478 {
3479     CALL_TEST_DEBUG;
3480     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3481     auto type = MOUSE_ICON::DEFAULT;
3482     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->LoadCursorSvgWithColor(type, MIN_POINTER_COLOR));
3483 }
3484 
3485 /**
3486  * @tc.name: InputWindowsManagerTest_AoutPointer_001
3487  * @tc.desc: Test AoutPointer
3488  * @tc.type: FUNC
3489  * @tc.require:
3490  */
3491 HWTEST_F(PointerDrawingManagerTest, InputWindowsManagerTest_AoutPointer_001, TestSize.Level1)
3492 {
3493     CALL_TEST_DEBUG;
3494     auto *pointerDrawingManager = static_cast<PointerDrawingManager *>(IPointerDrawingManager::GetInstance());
3495     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->SetPointerColor(MIN_POINTER_COLOR));
3496     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->SetPointerSize(1));
3497     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->UpdatePointerDevice(true, true, false));
3498     pointerDrawingManager->pidInfos_.clear();
3499     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->DeletePointerVisible(0));
3500     PointerDrawingManager::PidInfo pidInfo1{1, false};
3501     PointerDrawingManager::PidInfo pidInfo2{0, false};
3502     pointerDrawingManager->hapPidInfos_.push_back(pidInfo1);
3503     pointerDrawingManager->hapPidInfos_.push_back(pidInfo2);
3504     pointerDrawingManager->pid_ = 0;
3505     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->GetPointerVisible(0));
3506     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->SetPointerVisible(0, true, 0, true));
3507     PointerStyle pointerStyle;
3508     EXPECT_NO_FATAL_FAILURE(pointerDrawingManager->SetPointerStylePreference(pointerStyle));
3509 }
3510 } // namespace MMI
3511 } // namespace OHOS