diff options
Diffstat (limited to 'test/test-libevdev-has-event.c')
-rw-r--r-- | test/test-libevdev-has-event.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/test-libevdev-has-event.c b/test/test-libevdev-has-event.c index 72eba2c..a769f25 100644 --- a/test/test-libevdev-has-event.c +++ b/test/test-libevdev-has-event.c @@ -465,6 +465,53 @@ START_TEST(test_device_disable_bit_invalid) } END_TEST +START_TEST(test_device_enable_kernel_bit) +{ + struct uinput_device* uidev; + struct libevdev *dev, *dev2; + struct input_absinfo abs; + int rc; + + rc = test_create_device(&uidev, &dev, + EV_ABS, ABS_X, + -1); + ck_assert_msg(rc == 0, "Failed to create device: %s", strerror(-rc)); + + ck_assert(!libevdev_has_event_code(dev, EV_ABS, ABS_Y)); + ck_assert(!libevdev_has_event_type(dev, EV_REL)); + ck_assert(!libevdev_has_event_code(dev, EV_REL, REL_X)); + + abs.value = 0; + abs.minimum = 0; + abs.maximum = 100; + abs.fuzz = 1; + abs.flat = 2; + abs.resolution = 3; + + ck_assert_int_eq(libevdev_kernel_enable_event_code(dev, EV_ABS, ABS_Y, &abs), 0); + ck_assert(libevdev_has_event_code(dev, EV_ABS, ABS_Y)); + + ck_assert_msg(libevdev_kernel_enable_event_type(dev, EV_REL), 0); + ck_assert(libevdev_has_event_type(dev, EV_REL)); + ck_assert(!libevdev_has_event_code(dev, EV_REL, REL_X)); + + ck_assert_int_eq(libevdev_kernel_enable_event_code(dev, EV_REL, REL_X, NULL), 0); + ck_assert(libevdev_has_event_code(dev, EV_REL, REL_X)); + + /* make sure kernel device is unchanged */ + rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev2); + ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc)); + ck_assert(libevdev_has_event_code(dev2, EV_ABS, ABS_X)); + ck_assert(libevdev_has_event_code(dev2, EV_ABS, ABS_Y)); + ck_assert(libevdev_has_event_type(dev2, EV_REL)); + ck_assert(libevdev_has_event_code(dev2, EV_REL, REL_X)); + libevdev_free(dev2); + + uinput_device_free(uidev); + libevdev_free(dev); +} +END_TEST + Suite * libevdev_has_event_test(void) { @@ -503,6 +550,7 @@ libevdev_has_event_test(void) tcase_add_test(tc, test_device_enable_bit_invalid); tcase_add_test(tc, test_device_disable_bit); tcase_add_test(tc, test_device_disable_bit_invalid); + tcase_add_test(tc, test_device_enable_kernel_bit); suite_add_tcase(s, tc); return s; |