diff options
Diffstat (limited to 'drivers/input/tests/input_test.c')
| -rw-r--r-- | drivers/input/tests/input_test.c | 38 | 
1 files changed, 35 insertions, 3 deletions
diff --git a/drivers/input/tests/input_test.c b/drivers/input/tests/input_test.c index e5a6c1ad2167..2fa5b725ae0a 100644 --- a/drivers/input/tests/input_test.c +++ b/drivers/input/tests/input_test.c @@ -43,8 +43,8 @@ static void input_test_exit(struct kunit *test)  {  	struct input_dev *input_dev = test->priv; -	input_unregister_device(input_dev); -	input_free_device(input_dev); +	if (input_dev) +		input_unregister_device(input_dev);  }  static void input_test_poll(struct input_dev *input) { } @@ -87,7 +87,7 @@ static void input_test_timestamp(struct kunit *test)  static void input_test_match_device_id(struct kunit *test)  {  	struct input_dev *input_dev = test->priv; -	struct input_device_id id; +	struct input_device_id id = { 0 };  	/*  	 * Must match when the input device bus, vendor, product, version @@ -130,10 +130,42 @@ static void input_test_match_device_id(struct kunit *test)  	KUNIT_ASSERT_FALSE(test, input_match_device_id(input_dev, &id));  } +static void input_test_grab(struct kunit *test) +{ +	struct input_dev *input_dev = test->priv; +	struct input_handle test_handle; +	struct input_handler handler; +	struct input_handle handle; +	struct input_device_id id; +	int res; + +	handler.name = "handler"; +	handler.id_table = &id; + +	handle.dev = input_get_device(input_dev); +	handle.name = dev_name(&input_dev->dev); +	handle.handler = &handler; +	res = input_grab_device(&handle); +	KUNIT_ASSERT_TRUE(test, res == 0); + +	test_handle.dev = input_get_device(input_dev); +	test_handle.name = dev_name(&input_dev->dev); +	test_handle.handler = &handler; +	res = input_grab_device(&test_handle); +	KUNIT_ASSERT_EQ(test, res, -EBUSY); + +	input_release_device(&handle); +	input_put_device(input_dev); +	res = input_grab_device(&test_handle); +	KUNIT_ASSERT_TRUE(test, res == 0); +	input_put_device(input_dev); +} +  static struct kunit_case input_tests[] = {  	KUNIT_CASE(input_test_polling),  	KUNIT_CASE(input_test_timestamp),  	KUNIT_CASE(input_test_match_device_id), +	KUNIT_CASE(input_test_grab),  	{ /* sentinel */ }  };  |