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 <gmock/gmock.h>
17 #include <gtest/gtest.h>
18 
19 #include <fstream>
20 
21 #include "libinput-private.h"
22 
23 #include "input_device_manager.h"
24 #include "key_auto_repeat.h"
25 #include "mmi_log.h"
26 #include "uds_server.h"
27 #include "uds_session.h"
28 
29 namespace OHOS {
30 namespace MMI {
31 namespace {
32 using namespace testing::ext;
33 } // namespace
34 
35 class InputDeviceManagerTest : public testing::Test {
36 public:
SetUpTestCase(void)37     static void SetUpTestCase(void) {}
TearDownTestCase(void)38     static void TearDownTestCase(void) {}
39 };
40 
41 class MockUDSSession : public UDSSession {
42 public:
43     MOCK_METHOD1(SendMsg, int32_t(NetPacket &));
MockUDSSession(const std::string & programName,const int32_t moduleType,const int32_t fd,const int32_t uid,const int32_t pid)44     MockUDSSession(const std::string &programName, const int32_t moduleType, const int32_t fd, const int32_t uid,
45         const int32_t pid) : UDSSession(programName, moduleType, fd, uid, pid) {}
46 };
47 
48 class MockInputDevice {
49 public:
50     MOCK_METHOD1(SetId, void(int32_t deviceId));
51     MOCK_METHOD0(MakeVirtualDeviceInfo, int());
52 };
53 
54 /**
55  * @tc.name: InputDeviceManagerTest_GetInputDeviceIds_003
56  * @tc.desc: Test the function GetInputDeviceIds
57  * @tc.type: FUNC
58  * @tc.require:
59  */
60 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetInputDeviceIds_003, TestSize.Level1)
61 {
62     CALL_TEST_DEBUG;
63     InputDeviceManager manager;
64     InputDeviceManager::InputDeviceInfo info1;
65     info1.networkIdOrigin = "device1";
66     info1.enable = true;
67     manager.inputDevice_[1] = info1;
68     InputDeviceManager::InputDeviceInfo info2;
69     info2.networkIdOrigin = "device2";
70     info2.enable = false;
71     manager.inputDevice_[2] = info2;
72     InputDeviceManager::InputDeviceInfo info3;
73     info3.networkIdOrigin = "device3";
74     info3.enable = true;
75     manager.inputDevice_[3] = info3;
76     auto ids = manager.GetInputDeviceIds();
77     ASSERT_EQ(ids.size(), 2);
78     EXPECT_EQ(ids[0], 1);
79     EXPECT_EQ(ids[1], 3);
80 }
81 
82 /**
83  * @tc.name: InputDeviceManagerTest_SupportKeys_003
84  * @tc.desc: Test the function SupportKeys
85  * @tc.type: FUNC
86  * @tc.require:
87  */
88 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_SupportKeys_003, TestSize.Level1)
89 {
90     CALL_TEST_DEBUG;
91     InputDeviceManager manager;
92     InputDeviceManager::InputDeviceInfo info;
93     info.networkIdOrigin = "device1";
94     info.enable = true;
95     manager.inputDevice_[1] = info;
96     std::vector<int32_t> keyCodes = {1};
97     std::vector<bool> keystroke;
98     int32_t ret = manager.SupportKeys(1, keyCodes, keystroke);
99     ASSERT_EQ(ret, RET_OK);
100     ASSERT_EQ(keystroke.size(), 1);
101     EXPECT_EQ(keystroke[0], true);
102 }
103 
104 /**
105  * @tc.name: InputDeviceManagerTest_GetDeviceConfig_003
106  * @tc.desc: Test the function GetDeviceConfig
107  * @tc.type: FUNC
108  * @tc.require:
109  */
110 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetDeviceConfig_003, TestSize.Level1)
111 {
112     CALL_TEST_DEBUG;
113     InputDeviceManager manager;
114     int32_t keyboardType;
115     int32_t ret = manager.GetDeviceConfig(-1, keyboardType);
116     ASSERT_EQ(ret, false);
117     InputDeviceManager::InputDeviceInfo info;
118     info.networkIdOrigin = "device1";
119     manager.inputDevice_[1] = info;
120     ret = manager.GetDeviceConfig(1, keyboardType);
121     ASSERT_EQ(ret, false);
122     std::map<int32_t, DeviceConfig> deviceConfig;
123     DeviceConfig config;
124     config.keyboardType = 1;
125     deviceConfig[1] = config;
126     ret = manager.GetDeviceConfig(1, keyboardType);
127     ASSERT_EQ(ret, RET_OK);
128     ASSERT_EQ(keyboardType, RET_OK);
129 }
130 
131 /**
132  * @tc.name: InputDeviceManagerTest_NotifyDevRemoveCallback_002
133  * @tc.desc: Test the function NotifyDevRemoveCallback
134  * @tc.type: FUNC
135  * @tc.require:
136  */
137 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_NotifyDevRemoveCallback_002, TestSize.Level1)
138 {
139     CALL_TEST_DEBUG;
140     InputDeviceManager deviceManager;
141     int32_t deviceId = 1;
142     InputDeviceManager::InputDeviceInfo deviceInfo;
143     deviceInfo.sysUid = "";
144     ASSERT_NO_FATAL_FAILURE(deviceManager.NotifyDevRemoveCallback(deviceId, deviceInfo));
145 }
146 
147 /**
148  * @tc.name: InputDeviceManagerTest_GenerateVirtualDeviceId_001
149  * @tc.desc: Test the function GenerateVirtualDeviceId
150  * @tc.type: FUNC
151  * @tc.require:
152  */
153 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GenerateVirtualDeviceId_001, TestSize.Level1)
154 {
155     CALL_TEST_DEBUG;
156     InputDeviceManager deviceManager;
157     int32_t deviceId = 0;
158     int32_t MAX_VIRTUAL_INPUT_DEVICE_NUM = 128;
159     for (int i = 0; i < MAX_VIRTUAL_INPUT_DEVICE_NUM; i++) {
160         deviceManager.virtualInputDevices_.insert(std::make_pair(i, std::make_shared<InputDevice>()));
161     }
162     EXPECT_EQ(deviceManager.GenerateVirtualDeviceId(deviceId), RET_ERR);
163 }
164 
165 /**
166  * @tc.name: InputDeviceManagerTest_GenerateVirtualDeviceId_002
167  * @tc.desc: Test the function GenerateVirtualDeviceId
168  * @tc.type: FUNC
169  * @tc.require:
170  */
171 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GenerateVirtualDeviceId_002, TestSize.Level1)
172 {
173     CALL_TEST_DEBUG;
174     InputDeviceManager deviceManager;
175     int32_t deviceId = 0;
176     deviceManager.virtualInputDevices_.insert(std::make_pair(1, std::make_shared<InputDevice>()));
177     EXPECT_EQ(deviceManager.GenerateVirtualDeviceId(deviceId), RET_OK);
178 }
179 
180 /**
181  * @tc.name: InputDeviceManagerTest_GenerateVirtualDeviceId_003
182  * @tc.desc: Test the function GenerateVirtualDeviceId
183  * @tc.type: FUNC
184  * @tc.require:
185  */
186 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GenerateVirtualDeviceId_003, TestSize.Level1)
187 {
188     CALL_TEST_DEBUG;
189     InputDeviceManager deviceManager;
190     int32_t deviceId = 0;
191     EXPECT_EQ(deviceManager.GenerateVirtualDeviceId(deviceId), RET_OK);
192 }
193 
194 /**
195  * @tc.name: InputDeviceManagerTest_RemoveVirtualInputDevice_001
196  * @tc.desc: Test the function RemoveVirtualInputDevice
197  * @tc.type: FUNC
198  * @tc.require:
199  */
200 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_RemoveVirtualInputDevice_001, TestSize.Level1)
201 {
202     CALL_TEST_DEBUG;
203     InputDeviceManager deviceManager;
204     int32_t deviceId = 1;
205     EXPECT_EQ(deviceManager.RemoveVirtualInputDevice(deviceId), RET_ERR);
206 }
207 
208 /**
209  * @tc.name: InputDeviceManagerTest_RemoveVirtualInputDevice_002
210  * @tc.desc: Test the function RemoveVirtualInputDevice
211  * @tc.type: FUNC
212  * @tc.require:
213  */
214 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_RemoveVirtualInputDevice_002, TestSize.Level1)
215 {
216     CALL_TEST_DEBUG;
217     InputDeviceManager deviceManager;
218     int32_t deviceId = 1;
219     deviceManager.virtualInputDevices_[deviceId] = std::make_shared<InputDevice>();
220     EXPECT_EQ(deviceManager.RemoveVirtualInputDevice(deviceId), RET_OK);
221 }
222 
223 /**
224  * @tc.name: InputDeviceManagerTest_RemoveVirtualInputDevice_003
225  * @tc.desc: Test the function RemoveVirtualInputDevice
226  * @tc.type: FUNC
227  * @tc.require:
228  */
229 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_RemoveVirtualInputDevice_003, TestSize.Level1)
230 {
231     CALL_TEST_DEBUG;
232     InputDeviceManager deviceManager;
233     int32_t deviceId = 1;
234     auto device = std::make_shared<InputDevice>();
235     deviceManager.virtualInputDevices_[deviceId] = device;
236     EXPECT_EQ(deviceManager.RemoveVirtualInputDevice(deviceId), RET_OK);
237     EXPECT_EQ(deviceManager.virtualInputDevices_.find(deviceId), deviceManager.virtualInputDevices_.end());
238 }
239 
240 /**
241  * @tc.name: InputDeviceManagerTest_AddVirtualInputDevice_001
242  * @tc.desc: Test the function AddVirtualInputDevice
243  * @tc.type: FUNC
244  * @tc.require:
245  */
246 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_AddVirtualInputDevice_001, TestSize.Level1)
247 {
248     CALL_TEST_DEBUG;
249     InputDeviceManager manager;
250     std::shared_ptr<MockInputDevice> mockDevice = std::make_shared<MockInputDevice>();
251     int32_t deviceId = 0;
252     std::shared_ptr<InputDevice> device;
253     EXPECT_CALL(*mockDevice, MakeVirtualDeviceInfo()).WillRepeatedly(testing::Return(RET_ERR));
254     int32_t ret = manager.AddVirtualInputDevice(device, deviceId);
255     EXPECT_EQ(ret, RET_ERR);
256     EXPECT_EQ(deviceId, RET_OK);
257 }
258 
259 /**
260  * @tc.name: InputDeviceManagerTest_AddVirtualInputDevice_002
261  * @tc.desc: Test the function AddVirtualInputDevice
262  * @tc.type: FUNC
263  * @tc.require:
264  */
265 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_AddVirtualInputDevice_002, TestSize.Level1)
266 {
267     CALL_TEST_DEBUG;
268     InputDeviceManager manager;
269     std::shared_ptr<MockInputDevice> mockDevice = std::make_shared<MockInputDevice>();
270     int32_t deviceId = 1;
271     std::shared_ptr<InputDevice> device;
272     EXPECT_CALL(*mockDevice, MakeVirtualDeviceInfo()).WillRepeatedly(testing::Return(RET_ERR));
273     int32_t ret = manager.AddVirtualInputDevice(device, deviceId);
274     EXPECT_EQ(ret, RET_ERR);
275 }
276 
277 /**
278  * @tc.name: InputDeviceManagerTest_AddVirtualInputDevice_003
279  * @tc.desc: Test the function AddVirtualInputDevice
280  * @tc.type: FUNC
281  * @tc.require:
282  */
283 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_AddVirtualInputDevice_003, TestSize.Level1)
284 {
285     CALL_TEST_DEBUG;
286     InputDeviceManager manager;
287     std::shared_ptr<MockInputDevice> mockDevice = std::make_shared<MockInputDevice>();
288     int32_t deviceId = 1;
289     std::shared_ptr<InputDevice> device;
290     EXPECT_CALL(*mockDevice, MakeVirtualDeviceInfo()).WillRepeatedly(testing::Return(RET_OK));
291     int32_t ret = manager.AddVirtualInputDevice(device, deviceId);
292     EXPECT_EQ(ret, RET_ERR);
293 }
294 
295 /**
296  * @tc.name: InputDeviceManagerTest_AddVirtualInputDevice_004
297  * @tc.desc: Test the function AddVirtualInputDevice
298  * @tc.type: FUNC
299  * @tc.require:
300  */
301 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_AddVirtualInputDevice_004, TestSize.Level1)
302 {
303     CALL_TEST_DEBUG;
304     InputDeviceManager deviceManager;
305     int32_t deviceId = 1;
306     std::shared_ptr<InputDevice> device;
307 
308     int32_t MAX_VIRTUAL_INPUT_DEVICE_NUM = 128;
309     for (int i = 0; i < MAX_VIRTUAL_INPUT_DEVICE_NUM; i++) {
310         deviceManager.virtualInputDevices_.insert(std::make_pair(i, std::make_shared<InputDevice>()));
311     }
312 
313     EXPECT_EQ(deviceManager.GenerateVirtualDeviceId(deviceId), RET_ERR);
314     int32_t ret = INPUT_DEV_MGR->AddVirtualInputDevice(device, deviceId);
315     EXPECT_EQ(ret, RET_ERR);
316 }
317 
318 /**
319  * @tc.name: InputDeviceManagerTest_AddVirtualInputDevice_005
320  * @tc.desc: Test the function AddVirtualInputDevice
321  * @tc.type: FUNC
322  * @tc.require:
323  */
324 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_AddVirtualInputDevice_005, TestSize.Level1)
325 {
326     CALL_TEST_DEBUG;
327     InputDeviceManager deviceManager;
328     int32_t deviceId = 2;
329     std::shared_ptr<InputDevice> device;
330     deviceManager.virtualInputDevices_.insert(std::make_pair(1, std::make_shared<InputDevice>()));
331     EXPECT_EQ(deviceManager.GenerateVirtualDeviceId(deviceId), RET_OK);
332 
333     int32_t ret = INPUT_DEV_MGR->AddVirtualInputDevice(device, deviceId);
334     EXPECT_EQ(ret, RET_ERR);
335 }
336 
337 /**
338  * @tc.name: InputDeviceManagerTest_AddVirtualInputDevice_006
339  * @tc.desc: Test the function AddVirtualInputDevice
340  * @tc.type: FUNC
341  * @tc.require:
342  */
343 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_AddVirtualInputDevice_006, TestSize.Level1)
344 {
345     CALL_TEST_DEBUG;
346     InputDeviceManager deviceManager;
347     int32_t deviceId = 2;
348     std::shared_ptr<InputDevice> device;
349     std::shared_ptr<MockInputDevice> mockDevice = std::make_shared<MockInputDevice>();
350     deviceManager.virtualInputDevices_.insert(std::make_pair(1, std::make_shared<InputDevice>()));
351     EXPECT_EQ(deviceManager.GenerateVirtualDeviceId(deviceId), RET_OK);
352     EXPECT_CALL(*mockDevice, MakeVirtualDeviceInfo()).WillRepeatedly(testing::Return(RET_ERR));
353 
354     int32_t ret = INPUT_DEV_MGR->AddVirtualInputDevice(device, deviceId);
355     EXPECT_EQ(ret, RET_ERR);
356 }
357 
358 /**
359  * @tc.name: InputDeviceManagerTest_AddVirtualInputDevice_007
360  * @tc.desc: Test the function AddVirtualInputDevice
361  * @tc.type: FUNC
362  * @tc.require:
363  */
364 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_AddVirtualInputDevice_007, TestSize.Level1)
365 {
366     CALL_TEST_DEBUG;
367     InputDeviceManager deviceManager;
368     int32_t deviceId = 2;
369     std::shared_ptr<InputDevice> device;
370     std::shared_ptr<MockInputDevice> mockDevice = std::make_shared<MockInputDevice>();
371     deviceManager.virtualInputDevices_.insert(std::make_pair(1, std::make_shared<InputDevice>()));
372     EXPECT_EQ(deviceManager.GenerateVirtualDeviceId(deviceId), RET_OK);
373     EXPECT_CALL(*mockDevice, MakeVirtualDeviceInfo()).WillRepeatedly(testing::Return(RET_OK));
374 
375     int32_t ret = INPUT_DEV_MGR->AddVirtualInputDevice(device, deviceId);
376     EXPECT_EQ(ret, RET_ERR);
377 }
378 
379 /**
380  * @tc.name: InputDeviceManagerTest_GetKeyboardType_003
381  * @tc.desc: Test the function GetKeyboardType
382  * @tc.type: FUNC
383  * @tc.require:
384  */
385 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetKeyboardType_003, TestSize.Level1)
386 {
387     CALL_TEST_DEBUG;
388     InputDeviceManager inputDeviceManager;
389     int32_t deviceId = 1;
390     int32_t keyboardType = 0;
391     std::shared_ptr<InputDevice> device = std::make_shared<InputDevice>();
392     inputDeviceManager.virtualInputDevices_.insert(std::make_pair(deviceId, device));
393     EXPECT_EQ(inputDeviceManager.GetKeyboardType(deviceId, keyboardType), RET_OK);
394     EXPECT_EQ(keyboardType, KEYBOARD_TYPE_NONE);
395 }
396 
397 /**
398  * @tc.name: InputDeviceManagerTest_GetKeyboardType_004
399  * @tc.desc: Test the function GetKeyboardType
400  * @tc.type: FUNC
401  * @tc.require:
402  */
403 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetKeyboardType_004, TestSize.Level1)
404 {
405     CALL_TEST_DEBUG;
406     InputDeviceManager inputDeviceManager;
407     int32_t deviceId = 2;
408     int32_t keyboardType = 0;
409     std::shared_ptr<InputDevice> device = std::make_shared<InputDevice>();
410     inputDeviceManager.virtualInputDevices_.insert(std::make_pair(deviceId, device));
411     EXPECT_EQ(inputDeviceManager.GetKeyboardType(deviceId, keyboardType), RET_OK);
412     EXPECT_EQ(keyboardType, KEYBOARD_TYPE_NONE);
413 }
414 
415 /**
416  * @tc.name: InputDeviceManagerTest_GetKeyboardType_005
417  * @tc.desc: Test the function GetKeyboardType
418  * @tc.type: FUNC
419  * @tc.require:
420  */
421 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetKeyboardType_005, TestSize.Level1)
422 {
423     CALL_TEST_DEBUG;
424     InputDeviceManager inputDeviceManager;
425     int32_t deviceId = 3;
426     int32_t keyboardType = 0;
427     inputDeviceManager.inputDevice_.insert(std::make_pair(deviceId, InputDeviceManager::InputDeviceInfo()));
428     inputDeviceManager.inputDevice_[deviceId].enable = false;
429     EXPECT_EQ(inputDeviceManager.GetKeyboardType(deviceId, keyboardType), RET_ERR);
430 }
431 
432 /**
433  * @tc.name: InputDeviceManagerTest_OnEnableInputDevice_Test_001
434  * @tc.desc: Test the function OnEnableInputDevice
435  * @tc.type: FUNC
436  * @tc.require:
437  */
438 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnEnableInputDevice_Test_001, TestSize.Level1)
439 {
440     CALL_TEST_DEBUG;
441     InputDeviceManager inputDevice;
442     bool enable = true;
443     int32_t keyboardType = KEYBOARD_TYPE_NONE;
444     EXPECT_TRUE(keyboardType != KEYBOARD_TYPE_ALPHABETICKEYBOARD);
445     int32_t ret = inputDevice.OnEnableInputDevice(enable);
446     EXPECT_EQ(ret, RET_OK);
447 }
448 
449 /**
450  * @tc.name: InputDeviceManagerTest_OnEnableInputDevice_Test_02
451  * @tc.desc: Test the function OnEnableInputDevice
452  * @tc.type: FUNC
453  * @tc.require:
454  */
455 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnEnableInputDevice_Test_02, TestSize.Level1)
456 {
457     CALL_TEST_DEBUG;
458     InputDeviceManager inputDevice;
459     int32_t deviceId = 3;
460     bool enable = true;
461 
462     InputDeviceManager::InputDeviceInfo deviceInfo;
463     deviceInfo.isRemote = true;
464     deviceInfo.enable = false;
465     inputDevice.inputDevice_.insert(std::make_pair(deviceId, deviceInfo));
466 
467     int32_t ret = inputDevice.OnEnableInputDevice(enable);
468     EXPECT_EQ(ret, RET_OK);
469 }
470 
471 /**
472  * @tc.name: InputDeviceManagerTest_OnEnableInputDevice_Test_03
473  * @tc.desc: Test the function OnEnableInputDevice
474  * @tc.type: FUNC
475  * @tc.require:
476  */
477 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnEnableInputDevice_Test_03, TestSize.Level1)
478 {
479     CALL_TEST_DEBUG;
480     InputDeviceManager inputDevice;
481     int32_t deviceId = 3;
482     bool enable = true;
483 
484     InputDeviceManager::InputDeviceInfo deviceInfo;
485     deviceInfo.isRemote = false;
486     deviceInfo.enable = true;
487     inputDevice.inputDevice_.insert(std::make_pair(deviceId, deviceInfo));
488 
489     int32_t ret = inputDevice.OnEnableInputDevice(enable);
490     EXPECT_EQ(ret, RET_OK);
491 }
492 
493 /**
494  * @tc.name: InputDeviceManagerTest_OnEnableInputDevice_Test_04
495  * @tc.desc: Test the function OnEnableInputDevice
496  * @tc.type: FUNC
497  * @tc.require:
498  */
499 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnEnableInputDevice_Test_04, TestSize.Level1)
500 {
501     CALL_TEST_DEBUG;
502     InputDeviceManager inputDevice;
503     int32_t deviceId = 5;
504     bool enable = true;
505 
506     InputDeviceManager::InputDeviceInfo deviceInfo;
507     deviceInfo.isRemote = false;
508     deviceInfo.enable = false;
509     deviceInfo.isPointerDevice = false;
510     inputDevice.inputDevice_.insert(std::make_pair(deviceId, deviceInfo));
511 
512     int32_t ret = inputDevice.OnEnableInputDevice(enable);
513     EXPECT_EQ(ret, RET_OK);
514 }
515 
516 /**
517  * @tc.name: InputDeviceManagerTest_OnEnableInputDevice_Test_05
518  * @tc.desc: Test the function OnEnableInputDevice
519  * @tc.type: FUNC
520  * @tc.require:
521  */
522 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnEnableInputDevice_Test_05, TestSize.Level1)
523 {
524     CALL_TEST_DEBUG;
525     InputDeviceManager inputDevice;
526     int32_t deviceId = 3;
527     bool enable = true;
528 
529     InputDeviceManager::InputDeviceInfo deviceInfo;
530     deviceInfo.isRemote = false;
531     deviceInfo.enable = false;
532     deviceInfo.isPointerDevice = true;
533     inputDevice.inputDevice_.insert(std::make_pair(deviceId, deviceInfo));
534 
535     int32_t ret = inputDevice.OnEnableInputDevice(enable);
536     EXPECT_EQ(ret, RET_OK);
537 }
538 
539 /**
540  * @tc.name: InputDeviceManagerTest_OnEnableInputDevice_Test_06
541  * @tc.desc: Test the function OnEnableInputDevice
542  * @tc.type: FUNC
543  * @tc.require:
544  */
545 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnEnableInputDevice_Test_06, TestSize.Level1)
546 {
547     CALL_TEST_DEBUG;
548     InputDeviceManager inputDevice;
549     int32_t deviceId = 3;
550     bool enable = true;
551 
552     InputDeviceManager::InputDeviceInfo deviceInfo;
553     deviceInfo.isRemote = false;
554     deviceInfo.enable = true;
555     deviceInfo.isPointerDevice = true;
556     inputDevice.inputDevice_.insert(std::make_pair(deviceId, deviceInfo));
557 
558     int32_t ret = inputDevice.OnEnableInputDevice(enable);
559     EXPECT_EQ(ret, RET_OK);
560 }
561 
562 /**
563  * @tc.name: InputDeviceManagerTest_GetKeyboardDevice_Test_001
564  * @tc.desc: Test the function GetKeyboardDevice
565  * @tc.type: FUNC
566  * @tc.require:
567  */
568 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetKeyboardDevice_Test_001, TestSize.Level1)
569 {
570     CALL_TEST_DEBUG;
571     InputDeviceManager inputDevice;
572     struct libinput_device *device = nullptr;
573     std::vector<int32_t> keyCodes;
574     keyCodes.push_back(KeyEvent::KEYCODE_Q);
575     keyCodes.push_back(KeyEvent::KEYCODE_NUMPAD_1);
576 
577     bool ret1 = inputDevice.IsMatchKeys(device, keyCodes);
578     EXPECT_FALSE(ret1);
579     auto ret2 = inputDevice.GetKeyboardDevice();
580     EXPECT_EQ(ret2, nullptr);
581 }
582 
583 /**
584  * @tc.name: InputDeviceManagerTest_OnInputDeviceAdded_Test_001
585  * @tc.desc: Test the function OnInputDeviceAdded
586  * @tc.type: FUNC
587  * @tc.require:
588  */
589 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnInputDeviceAdded_Test_001, TestSize.Level1)
590 {
591     CALL_TEST_DEBUG;
592     InputDeviceManager inputDevice;
593     int32_t deviceId;
594     struct libinput_device *device = nullptr;
595     deviceId = 2;
596     ASSERT_NO_FATAL_FAILURE(inputDevice.OnInputDeviceAdded(device));
597 }
598 
599 /**
600  * @tc.name: InputDeviceManagerTest_GetDeviceSupportKey_Test_001
601  * @tc.desc: Test the function GetDeviceSupportKey
602  * @tc.type: FUNC
603  * @tc.require:
604  */
605 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetDeviceSupportKey_Test_001, TestSize.Level1)
606 {
607     CALL_TEST_DEBUG;
608     std::vector<int32_t> keyCodes;
609     int32_t deviceId = 1;
610     int32_t keyboardType = KEYBOARD_TYPE_REMOTECONTROL;
611     std::map<int32_t, bool> determineKbType;
612     int32_t returnCode1 = 401;
613     int32_t returnCode2 = 65142786;
614     InputDeviceManager inputDevice;
615     keyCodes.push_back(KeyEvent::KEYCODE_Q);
616     keyCodes.push_back(KeyEvent::KEYCODE_HOME);
617     keyCodes.push_back(KeyEvent::KEYCODE_CTRL_LEFT);
618     keyCodes.push_back(KeyEvent::KEYCODE_F2);
619 
620     int32_t ret1 = inputDevice.GetKeyboardBusMode(deviceId);
621     EXPECT_EQ(ret1, returnCode2);
622     int32_t ret2 = inputDevice.GetDeviceSupportKey(deviceId, keyboardType);
623     EXPECT_EQ(ret2, returnCode1);
624 }
625 
626 /**
627  * @tc.name: GetInputDevice_Test_001
628  * @tc.desc: Test the function GetInputDevice
629  * @tc.type: FUNC
630  * @tc.require:
631  */
632 HWTEST_F(InputDeviceManagerTest, GetInputDevice_Test_001, TestSize.Level1)
633 {
634     CALL_TEST_DEBUG;
635     InputDeviceManager inputDevice;
636     std::shared_ptr<InputDevice> inputDeviceManager{nullptr};
637     int32_t id = 1;
638     bool checked = true;
639     inputDeviceManager = inputDevice.GetInputDevice(id, checked);
640     EXPECT_EQ(inputDeviceManager, nullptr);
641 }
642 
643 /**
644  * @tc.name: GetInputDeviceIds_Test_001
645  * @tc.desc: Test the function GetInputDeviceIds
646  * @tc.type: FUNC
647  * @tc.require:
648  */
649 HWTEST_F(InputDeviceManagerTest, GetInputDeviceIds_Test_001, TestSize.Level1)
650 {
651     CALL_TEST_DEBUG;
652     InputDeviceManager inputDevice;
653     ASSERT_NO_FATAL_FAILURE(inputDevice.GetInputDeviceIds());
654 }
655 
656 /**
657  * @tc.name: SupportKeys_Test_001
658  * @tc.desc: Test the function SupportKeys
659  * @tc.type: FUNC
660  * @tc.require:
661  */
662 HWTEST_F(InputDeviceManagerTest, SupportKeys_Test_001, TestSize.Level1)
663 {
664     CALL_TEST_DEBUG;
665     InputDeviceManager inputDevice;
666     int32_t deviceId = 1;
667     std::vector<int32_t> keyCodes{12};
668     std::vector<bool> keystroke{true};
669     int32_t returnCode = 401;
670     int32_t ret = inputDevice.SupportKeys(deviceId, keyCodes, keystroke);
671     EXPECT_EQ(ret, returnCode);
672 }
673 
674 /**
675  * @tc.name: GetDeviceConfig_Test_001
676  * @tc.desc: Test the function GetDeviceConfig
677  * @tc.type: FUNC
678  * @tc.require:
679  */
680 HWTEST_F(InputDeviceManagerTest, GetDeviceConfig_Test_001, TestSize.Level1)
681 {
682     CALL_TEST_DEBUG;
683     InputDeviceManager inputDevice;
684     int32_t deviceId = 1;
685     int32_t keyboardType = 1;
686     bool ret = inputDevice.GetDeviceConfig(deviceId, keyboardType);
687     EXPECT_FALSE(ret);
688 }
689 
690 /**
691  * @tc.name: GetDeviceSupportKey_Test_001
692  * @tc.desc: Test the function GetDeviceSupportKey
693  * @tc.type: FUNC
694  * @tc.require:
695  */
696 HWTEST_F(InputDeviceManagerTest, GetDeviceSupportKey_Test_001, TestSize.Level1)
697 {
698     CALL_TEST_DEBUG;
699     InputDeviceManager inputDevice;
700     int32_t deviceId = 1;
701     int32_t keyboardType = 1;
702     int32_t returnCode = 401;
703     int32_t ret = inputDevice.GetDeviceSupportKey(deviceId, keyboardType);
704     EXPECT_EQ(ret, returnCode);
705 }
706 
707 /**
708  * @tc.name: GetKeyboardType_Test_001
709  * @tc.desc: Test the function GetKeyboardType
710  * @tc.type: FUNC
711  * @tc.require:
712  */
713 HWTEST_F(InputDeviceManagerTest, GetKeyboardType_Test_001, TestSize.Level1)
714 {
715     CALL_TEST_DEBUG;
716     InputDeviceManager inputDevice;
717     int32_t deviceId = 1;
718     int32_t keyboardType = 1;
719     int32_t returnCode = 401;
720     int32_t ret = inputDevice.GetKeyboardType(deviceId, keyboardType);
721     EXPECT_EQ(ret, returnCode);
722 }
723 
724 /**
725  * @tc.name: HasTouchDevice_Test_001
726  * @tc.desc: Test the function HasTouchDevice
727  * @tc.type: FUNC
728  * @tc.require:
729  */
730 HWTEST_F(InputDeviceManagerTest, HasTouchDevice_Test_001, TestSize.Level1)
731 {
732     CALL_TEST_DEBUG;
733     InputDeviceManager inputDevice;
734     bool ret = inputDevice.HasTouchDevice();
735     EXPECT_FALSE(ret);
736 }
737 
738 /**
739  * @tc.name: ScanPointerDevice_Test_001
740  * @tc.desc: Test the function ScanPointerDevice
741  * @tc.type: FUNC
742  * @tc.require:
743  */
744 HWTEST_F(InputDeviceManagerTest, ScanPointerDevice_Test_001, TestSize.Level1)
745 {
746     CALL_TEST_DEBUG;
747     InputDeviceManager inputDevice;
748     ASSERT_NO_FATAL_FAILURE(inputDevice.ScanPointerDevice());
749 }
750 
751 /**
752  * @tc.name: Dump_Test_001
753  * @tc.desc: Test the function Dump
754  * @tc.type: FUNC
755  * @tc.require:
756  */
757 HWTEST_F(InputDeviceManagerTest, Dump_Test_001, TestSize.Level1)
758 {
759     CALL_TEST_DEBUG;
760     InputDeviceManager inputDevice;
761     int32_t fd = 1;
762     std::vector<std::string> args{"test"};
763     ASSERT_NO_FATAL_FAILURE(inputDevice.Dump(fd, args));
764 }
765 
766 /**
767  * @tc.name: DumpDeviceList_Test_001
768  * @tc.desc: Test the function DumpDeviceList
769  * @tc.type: FUNC
770  * @tc.require:
771  */
772 HWTEST_F(InputDeviceManagerTest, DumpDeviceList_Test_001, TestSize.Level1)
773 {
774     CALL_TEST_DEBUG;
775     InputDeviceManager inputDevice;
776     int32_t fd = 1;
777     std::vector<std::string> args{"test"};
778     ASSERT_NO_FATAL_FAILURE(inputDevice.DumpDeviceList(fd, args));
779 }
780 
781 /**
782  * @tc.name: GetVendorConfig_Test_001
783  * @tc.desc: Test the function GetVendorConfig
784  * @tc.type: FUNC
785  * @tc.require:
786  */
787 HWTEST_F(InputDeviceManagerTest, GetVendorConfig_Test_001, TestSize.Level1)
788 {
789     CALL_TEST_DEBUG;
790     InputDeviceManager inputDevice;
791     int32_t deviceId = 1;
792     ASSERT_NO_FATAL_FAILURE(inputDevice.GetVendorConfig(deviceId));
793 }
794 
795 /**
796  * @tc.name: OnEnableInputDevice_Test_001
797  * @tc.desc: Test the function OnEnableInputDevice
798  * @tc.type: FUNC
799  * @tc.require:
800  */
801 HWTEST_F(InputDeviceManagerTest, OnEnableInputDevice_Test_001, TestSize.Level1)
802 {
803     CALL_TEST_DEBUG;
804     InputDeviceManager inputDevice;
805     bool enable = true;
806     int32_t ret = inputDevice.OnEnableInputDevice(enable);
807     EXPECT_EQ(ret, RET_OK);
808     enable = false;
809     ret = inputDevice.OnEnableInputDevice(enable);
810     EXPECT_EQ(ret, RET_OK);
811 }
812 
813 /**
814  * @tc.name: InitSessionLostCallback_Test_001
815  * @tc.desc: Test the function InitSessionLostCallback
816  * @tc.type: FUNC
817  * @tc.require:
818  */
819 HWTEST_F(InputDeviceManagerTest, InitSessionLostCallback_Test_001, TestSize.Level1)
820 {
821     CALL_TEST_DEBUG;
822     InputDeviceManager inputDevice;
823     ASSERT_NO_FATAL_FAILURE(inputDevice.InitSessionLostCallback());
824 }
825 
826 /**
827  * @tc.name: InitSessionLostCallback_Test_002
828  * @tc.desc: Test the function InitSessionLostCallback
829  * @tc.type: FUNC
830  * @tc.require:
831  */
832 HWTEST_F(InputDeviceManagerTest, InitSessionLostCallback_Test_002, TestSize.Level1)
833 {
834     CALL_TEST_DEBUG;
835     InputDeviceManager inputDevice;
836     inputDevice.sessionLostCallbackInitialized_ = true;
837     ASSERT_NO_FATAL_FAILURE(inputDevice.InitSessionLostCallback());
838 }
839 
840 /**
841  * @tc.name: InitSessionLostCallback_Test_003
842  * @tc.desc: Test the function InitSessionLostCallback
843  * @tc.type: FUNC
844  * @tc.require:
845  */
846 HWTEST_F(InputDeviceManagerTest, InitSessionLostCallback_Test_003, TestSize.Level1)
847 {
848     CALL_TEST_DEBUG;
849     InputDeviceManager inputDevice;
850     inputDevice.sessionLostCallbackInitialized_ = false;
851     ASSERT_NO_FATAL_FAILURE(inputDevice.InitSessionLostCallback());
852     EXPECT_FALSE(inputDevice.sessionLostCallbackInitialized_);
853 }
854 
855 /**
856  * @tc.name: OnSessionLost_Test_001
857  * @tc.desc: Test the function OnSessionLost
858  * @tc.type: FUNC
859  * @tc.require:
860  */
861 HWTEST_F(InputDeviceManagerTest, OnSessionLost_Test_001, TestSize.Level1)
862 {
863     CALL_TEST_DEBUG;
864     InputDeviceManager inputDevice;
865     std::string programName = "program";
866     int32_t moduleType = 1;
867     int32_t fd = 2;
868     int32_t uid = 3;
869     int32_t pid = 4;
870     std::shared_ptr<MockUDSSession> session = std::make_shared<MockUDSSession>
871         (programName, moduleType, fd, uid, pid);
872     ASSERT_NE(session, nullptr);
873     ASSERT_NO_FATAL_FAILURE(inputDevice.OnSessionLost(session));
874     session = nullptr;
875     ASSERT_NO_FATAL_FAILURE(inputDevice.OnSessionLost(session));
876 }
877 
878 
879 /**
880  * @tc.name: NotifyMessage_Test_001
881  * @tc.desc: Test the function NotifyMessage
882  * @tc.type: FUNC
883  * @tc.require:
884  */
885 HWTEST_F(InputDeviceManagerTest, NotifyMessage_Test_001, TestSize.Level1)
886 {
887     CALL_TEST_DEBUG;
888     InputDeviceManager inputDevice;
889     std::string programName = "program";
890     int32_t moduleType = 1;
891     int32_t fd = 2;
892     int32_t uid = 3;
893     int32_t pid = 4;
894     std::shared_ptr<MockUDSSession> mockSession = std::make_shared<MockUDSSession>
895         (programName, moduleType, fd, uid, pid);
896     EXPECT_CALL(*mockSession, SendMsg(testing::_)).WillRepeatedly(testing::Return(true));
897     int32_t result = inputDevice.NotifyMessage(mockSession, 1, "type");
898     EXPECT_EQ(result, RET_OK);
899 }
900 
901 /**
902  * @tc.name: NotifyMessage_Test_002
903  * @tc.desc: Test the function NotifyMessage
904  * @tc.type: FUNC
905  * @tc.require:
906  */
907 HWTEST_F(InputDeviceManagerTest, NotifyMessage_Test_002, TestSize.Level1)
908 {
909     CALL_TEST_DEBUG;
910     InputDeviceManager inputDevice;
911     std::string programName = "program";
912     int32_t moduleType = 1;
913     int32_t fd = 2;
914     int32_t uid = 3;
915     int32_t pid = 4;
916     std::shared_ptr<MockUDSSession> mockSession = std::make_shared<MockUDSSession>
917         (programName, moduleType, fd, uid, pid);
918     EXPECT_CALL(*mockSession, SendMsg(testing::_)).WillRepeatedly(testing::Return(false));
919     int32_t result = inputDevice.NotifyMessage(mockSession, 1, "type");
920     EXPECT_EQ(result, RET_OK);
921 }
922 
923 /**
924  * @tc.name: NotifyMessage_Test_003
925  * @tc.desc: Test the function NotifyMessage
926  * @tc.type: FUNC
927  * @tc.require:
928  */
929 HWTEST_F(InputDeviceManagerTest, NotifyMessage_Test_003, TestSize.Level1)
930 {
931     CALL_TEST_DEBUG;
932     InputDeviceManager inputDevice;
933     std::string programName = "program";
934     int32_t moduleType = 1;
935     int32_t fd = 2;
936     int32_t uid = 3;
937     int32_t pid = 4;
938     std::shared_ptr<MockUDSSession> mockSession = std::make_shared<MockUDSSession>
939         (programName, moduleType, fd, uid, pid);
940     EXPECT_CALL(*mockSession, SendMsg(testing::_)).WillRepeatedly(testing::Return(false));
941     SessionPtr nullSession = nullptr;
942     int32_t result = inputDevice.NotifyMessage(nullSession, 1, "type");
943     EXPECT_NE(result, RET_OK);
944 }
945 
946 /**
947  * @tc.name: GetInputDevice_Test_002
948  * @tc.desc: Test the function GetInputDevice
949  * @tc.type: FUNC
950  * @tc.require:
951  */
952 HWTEST_F(InputDeviceManagerTest, GetInputDevice_Test_002, TestSize.Level1)
953 {
954     CALL_TEST_DEBUG;
955     InputDeviceManager inputDevice;
956 
957     int32_t id = -1;
958     bool checked = true;
959     std::shared_ptr inputDeviceManager = inputDevice.GetInputDevice(id, checked);
960     EXPECT_EQ(inputDeviceManager, nullptr);
961     id = 1;
962     checked = false;
963     inputDeviceManager = inputDevice.GetInputDevice(id, checked);
964     EXPECT_EQ(inputDeviceManager, nullptr);
965     id = -1;
966     checked = false;
967     inputDeviceManager = inputDevice.GetInputDevice(id, checked);
968     EXPECT_EQ(inputDeviceManager, nullptr);
969 }
970 
971 /**
972  * @tc.name: GetInputDeviceIds_Test_002
973  * @tc.desc: Test the function GetInputDeviceIds
974  * @tc.type: FUNC
975  * @tc.require:
976  */
977 HWTEST_F(InputDeviceManagerTest, GetInputDeviceIds_Test_002, TestSize.Level1)
978 {
979     CALL_TEST_DEBUG;
980     InputDeviceManager manager;
981     std::vector<int32_t> expectedIds = {1, 2, 3};
982     std::vector<int32_t> actualIds = manager.GetInputDeviceIds();
983     ASSERT_NE(expectedIds, actualIds);
984 }
985 
986 /**
987  * @tc.name: SupportKeys_Test_002
988  * @tc.desc: Test the function SupportKeys
989  * @tc.type: FUNC
990  * @tc.require:
991  */
992 HWTEST_F(InputDeviceManagerTest, SupportKeys_Test_002, TestSize.Level1)
993 {
994     CALL_TEST_DEBUG;
995     InputDeviceManager inputDevice;
996     int32_t deviceId = 1;
997     int32_t COMMON_PARAMETER_ERROR = 401;
998     std::vector<int32_t> keyCodes = {1, 2, 3};
999     std::vector<bool> keystrokes{true};
1000     int32_t ret = inputDevice.SupportKeys(deviceId, keyCodes, keystrokes);
1001     EXPECT_EQ(ret, COMMON_PARAMETER_ERROR);
1002     EXPECT_NE(keystrokes.size(), keyCodes.size());
1003     EXPECT_TRUE(keystrokes[0]);
1004     EXPECT_FALSE(keystrokes[1]);
1005     EXPECT_FALSE(keystrokes[2]);
1006     deviceId = -1;
1007     keyCodes = {1, 2, 3};
1008     ret = inputDevice.SupportKeys(deviceId, keyCodes, keystrokes);
1009     EXPECT_EQ(ret, COMMON_PARAMETER_ERROR);
1010     EXPECT_FALSE(keystrokes.empty());
1011     deviceId = 100;
1012     keyCodes = {1, 2, 3};
1013     ret = inputDevice.SupportKeys(deviceId, keyCodes, keystrokes);
1014     EXPECT_EQ(ret, COMMON_PARAMETER_ERROR);
1015     EXPECT_FALSE(keystrokes.empty());
1016     deviceId = 1;
1017     keyCodes.clear();
1018     keystrokes.clear();
1019     ret = inputDevice.SupportKeys(deviceId, keyCodes, keystrokes);
1020     EXPECT_EQ(ret, COMMON_PARAMETER_ERROR);
1021     EXPECT_TRUE(keystrokes.empty());
1022 }
1023 
1024 /**
1025  * @tc.name: GetDeviceConfig_Test_002
1026  * @tc.desc: Test the function GetDeviceConfig
1027  * @tc.type: FUNC
1028  * @tc.require:
1029  */
1030 HWTEST_F(InputDeviceManagerTest, GetDeviceConfig_Test_002, TestSize.Level1)
1031 {
1032     CALL_TEST_DEBUG;
1033     InputDeviceManager inputDevice;
1034     int32_t deviceId = -1;
1035     int32_t keyboardType = 5;
1036     bool ret = inputDevice.GetDeviceConfig(deviceId, keyboardType);
1037     EXPECT_FALSE(ret);
1038     deviceId = 10;
1039     keyboardType = -3;
1040     ret = inputDevice.GetDeviceConfig(deviceId, keyboardType);
1041     EXPECT_FALSE(ret);
1042     deviceId = -8;
1043     keyboardType = -10;
1044     ret = inputDevice.GetDeviceConfig(deviceId, keyboardType);
1045     EXPECT_FALSE(ret);
1046 }
1047 
1048 /**
1049  * @tc.name: GetKeyboardBusMode_Test_002
1050  * @tc.desc: Test the function GetKeyboardBusMode
1051  * @tc.type: FUNC
1052  * @tc.require:
1053  */
1054 HWTEST_F(InputDeviceManagerTest, GetKeyboardBusMode_Test_002, TestSize.Level1)
1055 {
1056     CALL_TEST_DEBUG;
1057     InputDeviceManager inputDevice;
1058     int32_t deviceId = 1;
1059     int32_t ret = inputDevice.GetKeyboardBusMode(deviceId);
1060     EXPECT_NE(ret, 0);
1061     deviceId = 0;
1062     ret = inputDevice.GetKeyboardBusMode(deviceId);
1063     EXPECT_NE(ret, 0);
1064     deviceId = -5;
1065     ret = inputDevice.GetKeyboardBusMode(deviceId);
1066     EXPECT_NE(ret, 0);
1067     EXPECT_TRUE(ret);
1068 }
1069 
1070 /**
1071  * @tc.name: GetDeviceSupportKey_Test_002
1072  * @tc.desc: Test the function GetDeviceSupportKey
1073  * @tc.type: FUNC
1074  * @tc.require:
1075  */
1076 HWTEST_F(InputDeviceManagerTest, GetDeviceSupportKey_Test_002, TestSize.Level1)
1077 {
1078     CALL_TEST_DEBUG;
1079     InputDeviceManager inputDevice;
1080     int32_t deviceId = 1;
1081     int32_t keyboardType = -5;
1082     int32_t returnCode = 401;
1083     int32_t ret = inputDevice.GetDeviceSupportKey(deviceId, keyboardType);
1084     EXPECT_EQ(ret, returnCode);
1085     deviceId = -1;
1086     keyboardType = 2;
1087     ret = inputDevice.GetDeviceSupportKey(deviceId, keyboardType);
1088     EXPECT_EQ(ret, returnCode);
1089     deviceId = -1;
1090     keyboardType = -2;
1091     ret = inputDevice.GetDeviceSupportKey(deviceId, keyboardType);
1092     EXPECT_EQ(ret, returnCode);
1093 }
1094 
1095 /**
1096  * @tc.name: GetKeyboardType_Test_002
1097  * @tc.desc: Test the function GetKeyboardType
1098  * @tc.type: FUNC
1099  * @tc.require:
1100  */
1101 HWTEST_F(InputDeviceManagerTest, GetKeyboardType_Test_002, TestSize.Level1)
1102 {
1103     CALL_TEST_DEBUG;
1104     InputDeviceManager inputDevice;
1105     int32_t deviceId = 1;
1106     int32_t keyboardType = -100;
1107     int32_t returnCode = 401;
1108     int32_t ret = inputDevice.GetKeyboardType(deviceId, keyboardType);
1109     EXPECT_EQ(ret, returnCode);
1110     deviceId = -1;
1111     keyboardType = 1;
1112     ret = inputDevice.GetKeyboardType(deviceId, keyboardType);
1113     EXPECT_EQ(ret, returnCode);
1114     deviceId = -10;
1115     keyboardType = -5;
1116     ret = inputDevice.GetKeyboardType(deviceId, keyboardType);
1117     EXPECT_EQ(ret, returnCode);
1118 }
1119 
1120 /**
1121  * @tc.name: SetInputStatusChangeCallback_Test_001
1122  * @tc.desc: Test the function SetInputStatusChangeCallback
1123  * @tc.type: FUNC
1124  * @tc.require:
1125  */
1126 HWTEST_F(InputDeviceManagerTest, SetInputStatusChangeCallback_Test_001, TestSize.Level1)
1127 {
1128     CALL_TEST_DEBUG;
1129     InputDeviceManager inputDevice;
1130     using InputDeviceCallback = std::function<void(int, std::string, std::string)>;
__anonca95714e0202(int status, const std::string& deviceName, const std::string& deviceId) 1131     InputDeviceCallback callback = [](int status, const std::string& deviceName, const std::string& deviceId) {
1132     };
1133     ASSERT_NO_FATAL_FAILURE(inputDevice.SetInputStatusChangeCallback(callback));
1134 }
1135 
1136 /**
1137  * @tc.name: AddDevListener_Test_001
1138  * @tc.desc: Test the function AddDevListener
1139  * @tc.type: FUNC
1140  * @tc.require:
1141  */
1142 HWTEST_F(InputDeviceManagerTest, AddDevListener_Test_001, TestSize.Level1)
1143 {
1144     CALL_TEST_DEBUG;
1145     InputDeviceManager inputDevice;
1146     SessionPtr session = std::shared_ptr<OHOS::MMI::UDSSession>();
1147     ASSERT_NO_FATAL_FAILURE(inputDevice.AddDevListener(session));
1148 }
1149 
1150 /**
1151  * @tc.name: RemoveDevListener_Test_001
1152  * @tc.desc: Test the function RemoveDevListener
1153  * @tc.type: FUNC
1154  * @tc.require:
1155  */
1156 HWTEST_F(InputDeviceManagerTest, RemoveDevListener_Test_001, TestSize.Level1)
1157 {
1158     CALL_TEST_DEBUG;
1159     InputDeviceManager inputDevice;
1160     SessionPtr session = std::shared_ptr<OHOS::MMI::UDSSession>();
1161     ASSERT_NO_FATAL_FAILURE(inputDevice.RemoveDevListener(session));
1162 }
1163 
1164 /**
1165  * @tc.name: HasPointerDevice_Test_001
1166  * @tc.desc: Test the function HasPointerDevice
1167  * @tc.type: FUNC
1168  * @tc.require:
1169  */
1170 HWTEST_F(InputDeviceManagerTest, HasPointerDevice_Test_001, TestSize.Level1)
1171 {
1172     CALL_TEST_DEBUG;
1173     InputDeviceManager inputDevice;
1174     bool ret = inputDevice.HasPointerDevice();
1175     EXPECT_FALSE(ret);
1176     ret = inputDevice.HasTouchDevice();
1177     EXPECT_FALSE(ret);
1178 }
1179 
1180 /**
1181  * @tc.name: NotifyDevCallback_Test_001
1182  * @tc.desc: Test the function NotifyDevCallback
1183  * @tc.type: FUNC
1184  * @tc.require:
1185  */
1186 HWTEST_F(InputDeviceManagerTest, NotifyDevCallback_Test_001, TestSize.Level1)
1187 {
1188     CALL_TEST_DEBUG;
1189     InputDeviceManager inputDevice;
1190     int32_t deviceId = 1;
1191     InputDeviceManager::InputDeviceInfo inDevice;
1192     ASSERT_NO_FATAL_FAILURE(inputDevice.NotifyDevCallback(deviceId, inDevice));
1193 }
1194 
1195 /**
1196  * @tc.name: OnInputDeviceAdded_Test_001
1197  * @tc.desc: Test the function OnInputDeviceAdded
1198  * @tc.type: FUNC
1199  * @tc.require:
1200  */
1201 HWTEST_F(InputDeviceManagerTest, OnInputDeviceAdded_Test_001, TestSize.Level1)
1202 {
1203     CALL_TEST_DEBUG;
1204     InputDeviceManager inputDevice;
1205     libinput_device* inputDevices = nullptr;
1206     ASSERT_NO_FATAL_FAILURE(inputDevice.OnInputDeviceAdded(inputDevices));
1207 }
1208 
1209 /**
1210  * @tc.name: OnInputDeviceRemoved_Test_001
1211  * @tc.desc: Test the function OnInputDeviceRemoved
1212  * @tc.type: FUNC
1213  * @tc.require:
1214  */
1215 HWTEST_F(InputDeviceManagerTest, OnInputDeviceRemoved_Test_001, TestSize.Level1)
1216 {
1217     CALL_TEST_DEBUG;
1218     InputDeviceManager inputDevice;
1219     libinput_device* inputDevices = nullptr;
1220     ASSERT_NO_FATAL_FAILURE(inputDevice.OnInputDeviceRemoved(inputDevices));
1221 }
1222 
1223 /**
1224  * @tc.name: InputDeviceManagerTest_IsRemote
1225  * @tc.desc: Test Cover the else branch of if (device != inputDevice_.end())
1226  * @tc.type: FUNC
1227  * @tc.require:
1228  */
1229 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_IsRemote, TestSize.Level1)
1230 {
1231     CALL_TEST_DEBUG;
1232     InputDeviceManager inputDevice;
1233     int32_t id = 30;
1234     ASSERT_FALSE(inputDevice.IsRemote(id));
1235 }
1236 
1237 /**
1238  * @tc.name: InputDeviceManagerTest_IsRemote_001
1239  * @tc.desc: Test Cover the if (device != inputDevice_.end()) branch
1240  * @tc.type: FUNC
1241  * @tc.require:
1242  */
1243 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_IsRemote_001, TestSize.Level1)
1244 {
1245     CALL_TEST_DEBUG;
1246     InputDeviceManager inputDevice;
1247     InputDeviceManager::InputDeviceInfo inputDeviceInfo;
1248     int32_t id = 30;
1249     inputDeviceInfo.isRemote = true;
1250     inputDevice.inputDevice_.insert(std::make_pair(id, inputDeviceInfo));
1251     ASSERT_TRUE(inputDevice.IsRemote(id));
1252 }
1253 
1254 /**
1255  * @tc.name: InputDeviceManagerTest_NotifyDevCallback
1256  * @tc.desc: Test Cover the if (!inDevice.isTouchableDevice || (deviceId < 0)) branch
1257  * @tc.type: FUNC
1258  * @tc.require:
1259  */
1260 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_NotifyDevCallback, TestSize.Level1)
1261 {
1262     CALL_TEST_DEBUG;
1263     InputDeviceManager inputDevice;
1264     InputDeviceManager::InputDeviceInfo inDevice;
1265     int32_t deviceid = -1;
1266     inDevice.isTouchableDevice = false;
1267     ASSERT_NO_FATAL_FAILURE(inputDevice.NotifyDevCallback(deviceid, inDevice));
1268     inDevice.isTouchableDevice = true;
1269     ASSERT_NO_FATAL_FAILURE(inputDevice.NotifyDevCallback(deviceid, inDevice));
1270 }
1271 
1272 /**
1273  * @tc.name: InputDeviceManagerTest_NotifyDevCallback_001
1274  * @tc.desc: Test Cover the if (!inDevice.sysUid.empty()) branch
1275  * @tc.type: FUNC
1276  * @tc.require:
1277  */
1278 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_NotifyDevCallback_001, TestSize.Level1)
1279 {
1280     CALL_TEST_DEBUG;
1281     InputDeviceManager inputDevice;
1282     InputDeviceManager::InputDeviceInfo inDevice;
1283     int32_t deviceid = 1;
1284     inDevice.isTouchableDevice = true;
1285     inDevice.sysUid = "123456";
1286     using inputDeviceCallback = std::function<void(int32_t deviceId, std::string devName, std::string devStatus)>;
__anonca95714e0302(int32_t deviceId, std::string devName, std::string devStatus) 1287     inputDeviceCallback callback = [](int32_t deviceId, std::string devName, std::string devStatus) {};
1288     inputDevice.SetInputStatusChangeCallback(callback);
1289     ASSERT_NO_FATAL_FAILURE(inputDevice.NotifyDevCallback(deviceid, inDevice));
1290     inDevice.sysUid.clear();
1291     ASSERT_NO_FATAL_FAILURE(inputDevice.NotifyDevCallback(deviceid, inDevice));
1292 }
1293 
1294 /**
1295  * @tc.name: InputDeviceManagerTest_ScanPointerDevice
1296  * @tc.desc: Test Cover the if (it->second.isPointerDevice && it->second.enable) branch
1297  * @tc.type: FUNC
1298  * @tc.require:
1299  */
1300 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_ScanPointerDevice, TestSize.Level1)
1301 {
1302     CALL_TEST_DEBUG;
1303     InputDeviceManager inputDevice;
1304     InputDeviceManager::InputDeviceInfo inDevice;
1305     int32_t deviceId = 10;
1306     inDevice.isPointerDevice = false;
1307     inDevice.enable = false;
1308     inputDevice.inputDevice_.insert(std::make_pair(deviceId, inDevice));
1309     deviceId = 15;
1310     inDevice.isPointerDevice = true;
1311     inDevice.enable = true;
1312     inputDevice.inputDevice_.insert(std::make_pair(deviceId, inDevice));
1313     ASSERT_NO_FATAL_FAILURE(inputDevice.ScanPointerDevice());
1314 }
1315 
1316 /**
1317  * @tc.name: InputDeviceManagerTest_ScanPointerDevice_001
1318  * @tc.desc: Test Cover the if (!hasPointerDevice) branch
1319  * @tc.type: FUNC
1320  * @tc.require:
1321  */
1322 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_ScanPointerDevice_001, TestSize.Level1)
1323 {
1324     CALL_TEST_DEBUG;
1325     InputDeviceManager inputDevice;
1326     InputDeviceManager::InputDeviceInfo inDevice;
1327     int32_t deviceId = 10;
1328     inDevice.isPointerDevice = false;
1329     inDevice.enable = false;
1330     inputDevice.inputDevice_.insert(std::make_pair(deviceId, inDevice));
1331     ASSERT_NO_FATAL_FAILURE(inputDevice.ScanPointerDevice());
1332 }
1333 
1334 /**
1335  * @tc.name: InputDeviceManagerTest_OnEnableInputDevice
1336  * @tc.desc: Test Cover the if (enable) and if (keyboardType != KEYBOARD_TYPE_ALPHABETICKEYBOARD) and
1337  * <br> if (item.second.isPointerDevice && item.second.enable) branch
1338  * @tc.type: FUNC
1339  * @tc.require:
1340  */
1341 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnEnableInputDevice, TestSize.Level1)
1342 {
1343     CALL_TEST_DEBUG;
1344     InputDeviceManager::InputDeviceInfo inDevice;
1345     DeviceConfig deviceConfig;
1346     deviceConfig.keyboardType = KEYBOARD_TYPE_NONE;
1347     bool enable = true;
1348     int32_t deviceId = 10;
1349     inDevice.isRemote = true;
1350     inDevice.enable = false;
1351     inDevice.isPointerDevice = true;
1352     INPUT_DEV_MGR->inputDevice_.insert(std::make_pair(deviceId, inDevice));
1353     KeyRepeat->deviceConfig_.insert(std::make_pair(deviceId, deviceConfig));
1354     ASSERT_EQ(INPUT_DEV_MGR->OnEnableInputDevice(enable), RET_OK);
1355     INPUT_DEV_MGR->inputDevice_.clear();
1356     KeyRepeat->deviceConfig_.clear();
1357 }
1358 
1359 /**
1360  * @tc.name: InputDeviceManagerTest_OnEnableInputDevice_001
1361  * @tc.desc: Test Cover the else branch of the OnEnableInputDevice function
1362  * @tc.type: FUNC
1363  * @tc.require:
1364  */
1365 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnEnableInputDevice_001, TestSize.Level1)
1366 {
1367     CALL_TEST_DEBUG;
1368     InputDeviceManager::InputDeviceInfo inDevice;
1369     DeviceConfig deviceConfig;
1370     deviceConfig.keyboardType = KEYBOARD_TYPE_ALPHABETICKEYBOARD;
1371     bool enable = false;
1372     int32_t deviceId = 20;
1373     inDevice.isRemote = true;
1374     inDevice.enable = true;
1375     inDevice.isPointerDevice = false;
1376     INPUT_DEV_MGR->inputDevice_.insert(std::make_pair(deviceId, inDevice));
1377     KeyRepeat->deviceConfig_.insert(std::make_pair(deviceId, deviceConfig));
1378     deviceId = 30;
1379     inDevice.isRemote = false;
1380     inDevice.enable = false;
1381     INPUT_DEV_MGR->inputDevice_.insert(std::make_pair(deviceId, inDevice));
1382     ASSERT_EQ(INPUT_DEV_MGR->OnEnableInputDevice(enable), RET_OK);
1383     INPUT_DEV_MGR->inputDevice_.clear();
1384     KeyRepeat->deviceConfig_.clear();
1385 }
1386 
1387 /**
1388  * @tc.name: InputDeviceManagerTest_GetTouchPadIds_001
1389  * @tc.desc: Test GetTouchPadIds
1390  * @tc.type: FUNC
1391  * @tc.require:
1392  */
1393 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetTouchPadIds_001, TestSize.Level1)
1394 {
1395     CALL_TEST_DEBUG;
1396     InputDeviceManager inputDevice;
1397     InputDeviceManager::InputDeviceInfo inDevice;
1398     int32_t deviceId = 5;
1399     inDevice.isPointerDevice = false;
1400     inDevice.enable = false;
1401     inDevice.dhid = 2;
1402     inputDevice.inputDevice_.insert(std::make_pair(deviceId, inDevice));
1403     ASSERT_NO_FATAL_FAILURE(INPUT_DEV_MGR->GetTouchPadIds());
1404 }
1405 
1406 /**
1407  * @tc.name: InputDeviceManagerTest_GetTouchPadIds_002
1408  * @tc.desc: Test GetTouchPadIds
1409  * @tc.type: FUNC
1410  * @tc.require:
1411  */
1412 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetTouchPadIds_002, TestSize.Level1)
1413 {
1414     CALL_TEST_DEBUG;
1415     InputDeviceManager inputDevice;
1416     InputDeviceManager::InputDeviceInfo inDevice;
1417     int32_t deviceId = 3;
1418     inDevice.enable = false;
1419     inDevice.dhid = 2;
1420     inputDevice.inputDevice_.insert(std::make_pair(deviceId, inDevice));
1421     inputDevice.inputDevice_.clear();
1422     ASSERT_NO_FATAL_FAILURE(INPUT_DEV_MGR->GetTouchPadIds());
1423 }
1424 
1425 /**
1426  * @tc.name: InputDeviceManagerTest_IsMatchKeys_001
1427  * @tc.desc: Test IsMatchKeys
1428  * @tc.type: FUNC
1429  * @tc.require:
1430  */
1431 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_IsMatchKeys_001, TestSize.Level1)
1432 {
1433     CALL_TEST_DEBUG;
1434     struct libinput_device *device = nullptr;
1435     std::vector<int32_t> keyCodes;
1436     keyCodes.push_back(KeyEvent::KEYCODE_T);
1437     keyCodes.push_back(KeyEvent::KEYCODE_NUMPAD_1);
1438 
1439     bool ret1 = INPUT_DEV_MGR->IsMatchKeys(device, keyCodes);
1440     EXPECT_FALSE(ret1);
1441 }
1442 
1443 /**
1444  * @tc.name: InputDeviceManagerTest_OnInputDeviceAdded_Test_01
1445  * @tc.desc: Test the function OnInputDeviceAdded
1446  * @tc.type: FUNC
1447  * @tc.require:
1448  */
1449 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnInputDeviceAdded_Test_01, TestSize.Level1)
1450 {
1451     CALL_TEST_DEBUG;
1452     InputDeviceManager deviceMgr;
1453     int32_t deviceId = 3;
1454     struct libinput_device *inputDevice = nullptr;
1455 
1456     InputDeviceManager::InputDeviceInfo deviceInfo;
1457     deviceInfo.inputDeviceOrigin = nullptr;
1458     deviceMgr.inputDevice_.insert(std::make_pair(deviceId, deviceInfo));
1459     EXPECT_TRUE(deviceInfo.inputDeviceOrigin == inputDevice);
1460     ASSERT_NO_FATAL_FAILURE(deviceMgr.OnInputDeviceAdded(inputDevice));
1461 }
1462 
1463 /**
1464  * @tc.name: InputDeviceManagerTest_OnInputDeviceAdded_Test_02
1465  * @tc.desc: Test the function OnInputDeviceAdded
1466  * @tc.type: FUNC
1467  * @tc.require:
1468  */
1469 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_OnInputDeviceAdded_Test_02, TestSize.Level1)
1470 {
1471     CALL_TEST_DEBUG;
1472     InputDeviceManager deviceMgr;
1473     int32_t deviceId = 3;
1474     struct libinput_device *inputDevice = nullptr;
1475 
1476     InputDeviceManager::InputDeviceInfo deviceInfo;
1477     deviceInfo.isRemote = false;
1478     deviceInfo.isPointerDevice = true;
1479     deviceInfo.enable = true;
1480     deviceMgr.inputDevice_.insert(std::make_pair(deviceId, deviceInfo));
1481     ASSERT_NO_FATAL_FAILURE(deviceMgr.OnInputDeviceAdded(inputDevice));
1482 }
1483 
1484 /**
1485  * @tc.name: OnInputDeviceRemoved_Test_01
1486  * @tc.desc: Test the function OnInputDeviceRemoved
1487  * @tc.type: FUNC
1488  * @tc.require:
1489  */
1490 HWTEST_F(InputDeviceManagerTest, OnInputDeviceRemoved_Test_01, TestSize.Level1)
1491 {
1492     CALL_TEST_DEBUG;
1493     InputDeviceManager deviceMgr;
1494     int32_t deviceId = 5;
1495     struct libinput_device *inputDevice = nullptr;
1496 
1497     InputDeviceManager::InputDeviceInfo deviceInfo;
1498     deviceInfo.inputDeviceOrigin = nullptr;
1499     deviceMgr.inputDevice_.insert(std::make_pair(deviceId, deviceInfo));
1500     EXPECT_TRUE(deviceInfo.inputDeviceOrigin == inputDevice);
1501     ASSERT_NO_FATAL_FAILURE(deviceMgr.OnInputDeviceRemoved(inputDevice));
1502 }
1503 
1504 /**
1505  * @tc.name: OnInputDeviceRemoved_Test_02
1506  * @tc.desc: Test the function OnInputDeviceRemoved
1507  * @tc.type: FUNC
1508  * @tc.require:
1509  */
1510 HWTEST_F(InputDeviceManagerTest, OnInputDeviceRemoved_Test_02, TestSize.Level1)
1511 {
1512     CALL_TEST_DEBUG;
1513     InputDeviceManager deviceMgr;
1514     int32_t deviceId = 5;
1515     struct libinput_device *inputDevice = nullptr;
1516 
1517     InputDeviceManager::InputDeviceInfo deviceInfo;
1518     deviceInfo.isRemote = false;
1519     deviceInfo.isPointerDevice = true;
1520     deviceMgr.inputDevice_.insert(std::make_pair(deviceId, deviceInfo));
1521 
1522     std::string sysUid;
1523     EXPECT_TRUE(sysUid.empty());
1524     ASSERT_NO_FATAL_FAILURE(deviceMgr.OnInputDeviceRemoved(inputDevice));
1525 }
1526 
1527 /**
1528  * @tc.name: InputDeviceManagerTest_GetKeyboardDevice_Test_01
1529  * @tc.desc: Test the function GetKeyboardDevice
1530  * @tc.type: FUNC
1531  * @tc.require:
1532  */
1533 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetKeyboardDevice_Test_01, TestSize.Level1)
1534 {
1535     CALL_TEST_DEBUG;
1536     InputDeviceManager deviceMgr;
1537     struct libinput_device *device = nullptr;
1538     std::vector<int32_t> keyCodes;
1539     keyCodes.push_back(KeyEvent::KEYCODE_Q);
1540     keyCodes.push_back(KeyEvent::KEYCODE_NUMPAD_1);
1541 
1542     bool ret1 = INPUT_DEV_MGR->IsMatchKeys(device, keyCodes);
1543     EXPECT_FALSE(ret1);
1544     auto ret2 = deviceMgr.GetKeyboardDevice();
1545     EXPECT_EQ(ret2, nullptr);
1546 }
1547 
1548 /**
1549  * @tc.name: InputDeviceManagerTest_GetKeyboardDevice_Test_02
1550  * @tc.desc: Test the function GetKeyboardDevice
1551  * @tc.type: FUNC
1552  * @tc.require:
1553  */
1554 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetKeyboardDevice_Test_02, TestSize.Level1)
1555 {
1556     CALL_TEST_DEBUG;
1557     InputDeviceManager deviceMgr;
1558     struct libinput_device *device = nullptr;
1559     std::vector<int32_t> keyCodes;
1560     keyCodes.push_back(KeyEvent::KEYCODE_Q);
1561     keyCodes.push_back(KeyEvent::KEYCODE_NUMPAD_1);
1562     INPUT_DEV_MGR->inputDevice_.clear();
1563     bool ret1 = INPUT_DEV_MGR->IsMatchKeys(device, keyCodes);
1564     EXPECT_FALSE(ret1);
1565     auto ret2 = deviceMgr.GetKeyboardDevice();
1566     EXPECT_EQ(ret2, nullptr);
1567 }
1568 
1569 /**
1570  * @tc.name: InputDeviceManagerTest_GetDeviceSupportKey_Test_01
1571  * @tc.desc: Test the function GetDeviceSupportKey
1572  * @tc.type: FUNC
1573  * @tc.require:
1574  */
1575 HWTEST_F(InputDeviceManagerTest, InputDeviceManagerTest_GetDeviceSupportKey_Test_01, TestSize.Level1)
1576 {
1577     CALL_TEST_DEBUG;
1578     std::vector<int32_t> keyCodes;
1579     int32_t deviceId = 1;
1580     int32_t keyboardType = KEYBOARD_TYPE_REMOTECONTROL;
1581     std::vector<bool> supportKey;
1582     int32_t returnCode1 = 401;
1583 
1584     InputDeviceManager inputDevice;
1585     keyCodes.push_back(KeyEvent::KEYCODE_Q);
1586     keyCodes.push_back(KeyEvent::KEYCODE_HOME);
1587     keyCodes.push_back(KeyEvent::KEYCODE_CTRL_LEFT);
1588     keyCodes.push_back(KeyEvent::KEYCODE_F2);
1589 
1590     int32_t ret = INPUT_DEV_MGR->SupportKeys(deviceId, keyCodes, supportKey);
1591     EXPECT_NE(ret, RET_OK);
1592     int32_t ret2 = inputDevice.GetDeviceSupportKey(deviceId, keyboardType);
1593     EXPECT_EQ(ret2, returnCode1);
1594 }
1595 } // namespace MMI
1596 } // namespace OHOS
1597