From: Niclas Zeising Date: Tue, 11 Aug 2020 21:50:53 +0000 (+0200) Subject: tests: Add FreeBSD specific tests X-Git-Tag: libevdev-1.9.901~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=419402312246de14cd491dbf2f45e8d4efd99294;p=platform%2Fupstream%2Flibevdev.git 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 --- diff --git a/test/test-uinput.c b/test/test-uinput.c index 01710f2..de4688b 100644 --- a/test/test-uinput.c +++ b/test/test-uinput.c @@ -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);