summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2014-11-17 12:01:41 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2014-11-18 09:04:29 +1000
commit1fc31fba9231f01db004d34c651c9863dd8a4711 (patch)
treed8d55f57311c0319967fd15c57c946e5286ad3be
parentcf4adee09b0da4bfb2df2988d46ac95f90eeac6b (diff)
downloadlibevdev-1fc31fba9231f01db004d34c651c9863dd8a4711.tar.gz
test: add test for setting absinfo on invalid devices
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--test/test-libevdev-has-event.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/test-libevdev-has-event.c b/test/test-libevdev-has-event.c
index 3ac41f1..857ef41 100644
--- a/test/test-libevdev-has-event.c
+++ b/test/test-libevdev-has-event.c
@@ -961,6 +961,44 @@ START_TEST(test_device_kernel_change_axis_invalid)
}
END_TEST
+START_TEST(test_device_kernel_set_abs_invalid_fd)
+{
+ struct uinput_device* uidev;
+ struct libevdev *dev;
+ struct input_absinfo abs[2];
+ struct input_absinfo a;
+ int rc;
+
+ libevdev_set_log_function(test_logfunc_ignore_error, NULL);
+
+ memset(abs, 0, sizeof(abs));
+ abs[0].value = ABS_X;
+ abs[0].maximum = 1000;
+
+ abs[1].value = ABS_Y;
+ abs[1].maximum = 1000;
+
+ dev = libevdev_new();
+ rc = libevdev_kernel_set_abs_info(dev, ABS_X, &a);
+ ck_assert_int_eq(rc, -EBADF);
+ libevdev_free(dev);
+
+ test_create_abs_device(&uidev, &dev,
+ 2, abs,
+ EV_SYN,
+ -1);
+
+ libevdev_change_fd(dev, -2);
+ rc = libevdev_kernel_set_abs_info(dev, ABS_X, &a);
+ ck_assert_int_eq(rc, -EBADF);
+
+ libevdev_set_log_function(test_logfunc_abort_on_error, NULL);
+
+ uinput_device_free(uidev);
+ libevdev_free(dev);
+}
+END_TEST
+
START_TEST(test_led_valid)
{
struct uinput_device* uidev;
@@ -1153,6 +1191,7 @@ libevdev_has_event_test(void)
tcase_add_test(tc, test_device_disable_bit_invalid);
tcase_add_test(tc, test_device_kernel_change_axis);
tcase_add_test(tc, test_device_kernel_change_axis_invalid);
+ tcase_add_test(tc, test_device_kernel_set_abs_invalid_fd);
suite_add_tcase(s, tc);
tc = tcase_create("led manipulation");