mirror of
https://gitlab.freedesktop.org/libevdev/libevdev.git
synced 2025-12-25 21:00:07 +01:00
tests: Add FreeBSD specific tests
Add two FreeBSD specific tests: test_uinput_check_devnode_bsd checks that libevdev_uinput_get_devnode() returns something sensible. This is modelled on the Linux test test_uinput_check_syspath_name, but uses devnode instead of syspath, since reeBSD doesn't have sysfs. test_uinput_check_syspath_bsd checks that libevdev_uinput_get_syspath() always returns NULL. Signed-off-by: Niclas Zeising <zeising@daemonic.se>
This commit is contained in:
parent
0af8c4054d
commit
4194023122
1 changed files with 94 additions and 0 deletions
|
|
@ -164,6 +164,93 @@ START_TEST(test_uinput_create_device_from_fd)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
START_TEST(test_uinput_check_devnode_bsd)
|
||||
{
|
||||
struct libevdev *dev;
|
||||
struct libevdev_uinput *uidev, *uidev2;
|
||||
const char *devnode, *devnode2;
|
||||
int fd, fd2;
|
||||
int rc;
|
||||
|
||||
dev = libevdev_new();
|
||||
ck_assert(dev != NULL);
|
||||
libevdev_set_name(dev, TEST_DEVICE_NAME);
|
||||
libevdev_enable_event_type(dev, EV_SYN);
|
||||
libevdev_enable_event_type(dev, EV_REL);
|
||||
libevdev_enable_event_code(dev, EV_REL, REL_X, NULL);
|
||||
libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL);
|
||||
|
||||
fd = open(UINPUT_NODE, O_RDWR);
|
||||
ck_assert_int_gt(fd, -1);
|
||||
fd2 = open(UINPUT_NODE, O_RDWR);
|
||||
ck_assert_int_gt(fd2, -1);
|
||||
|
||||
rc = libevdev_uinput_create_from_device(dev, fd, &uidev);
|
||||
ck_assert_int_eq(rc, 0);
|
||||
|
||||
/* create a second one */
|
||||
libevdev_set_name(dev, TEST_DEVICE_NAME " 2");
|
||||
rc = libevdev_uinput_create_from_device(dev, fd2, &uidev2);
|
||||
ck_assert_int_eq(rc, 0);
|
||||
|
||||
devnode = libevdev_uinput_get_devnode(uidev);
|
||||
ck_assert(devnode != NULL);
|
||||
|
||||
/* get syspath twice returns same pointer */
|
||||
devnode2 = libevdev_uinput_get_devnode(uidev);
|
||||
ck_assert(devnode == devnode2);
|
||||
|
||||
/* second dev has different devnode */
|
||||
devnode2 = libevdev_uinput_get_devnode(uidev2);
|
||||
ck_assert(strcmp(devnode, devnode2) != 0);
|
||||
|
||||
libevdev_uinput_destroy(uidev2);
|
||||
libevdev_uinput_destroy(uidev);
|
||||
|
||||
close(fd2);
|
||||
close(fd);
|
||||
|
||||
libevdev_free(dev);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_uinput_check_syspath_bsd)
|
||||
{
|
||||
struct libevdev *dev;
|
||||
struct libevdev_uinput *uidev;
|
||||
const char *syspath;
|
||||
int fd;
|
||||
int rc;
|
||||
|
||||
dev = libevdev_new();
|
||||
ck_assert(dev != NULL);
|
||||
libevdev_set_name(dev, TEST_DEVICE_NAME);
|
||||
libevdev_enable_event_type(dev, EV_SYN);
|
||||
libevdev_enable_event_type(dev, EV_REL);
|
||||
libevdev_enable_event_code(dev, EV_REL, REL_X, NULL);
|
||||
libevdev_enable_event_code(dev, EV_REL, REL_Y, NULL);
|
||||
|
||||
fd = open(UINPUT_NODE, O_RDWR);
|
||||
ck_assert_int_gt(fd, -1);
|
||||
|
||||
rc = libevdev_uinput_create_from_device(dev, fd, &uidev);
|
||||
ck_assert_int_eq(rc, 0);
|
||||
|
||||
syspath = libevdev_uinput_get_syspath(uidev);
|
||||
/* FreeBSD should always return NULL for libevdev_unput_get_syspath() */
|
||||
ck_assert(syspath == NULL);
|
||||
|
||||
libevdev_uinput_destroy(uidev);
|
||||
|
||||
close(fd);
|
||||
|
||||
libevdev_free(dev);
|
||||
}
|
||||
END_TEST
|
||||
|
||||
#else /* !__FreeBSD__ */
|
||||
|
||||
START_TEST(test_uinput_check_syspath_time)
|
||||
{
|
||||
struct libevdev *dev;
|
||||
|
|
@ -269,6 +356,8 @@ START_TEST(test_uinput_check_syspath_name)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
#endif /* __FreeBSD __ */
|
||||
|
||||
START_TEST(test_uinput_events)
|
||||
{
|
||||
struct libevdev *dev;
|
||||
|
|
@ -375,8 +464,13 @@ TEST_SUITE_ROOT_PRIVILEGES(uinput_suite)
|
|||
add_test(s, test_uinput_create_device);
|
||||
add_test(s, test_uinput_create_device_invalid);
|
||||
add_test(s, test_uinput_create_device_from_fd);
|
||||
#ifdef __FreeBSD__
|
||||
add_test(s, test_uinput_check_devnode_bsd);
|
||||
add_test(s, test_uinput_check_syspath_bsd);
|
||||
#else
|
||||
add_test(s, test_uinput_check_syspath_time);
|
||||
add_test(s, test_uinput_check_syspath_name);
|
||||
#endif
|
||||
|
||||
add_test(s, test_uinput_events);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue