END_TEST START_TEST(test_event_type_max) { ck_assert_int_eq(libevdev_event_type_get_max(EV_ABS), ABS_MAX); ck_assert_int_eq(libevdev_event_type_get_max(EV_REL), REL_MAX); ck_assert_int_eq(libevdev_event_type_get_max(EV_KEY), KEY_MAX); ck_assert_int_eq(libevdev_event_type_get_max(EV_MAX - 1), -1); ck_assert_int_eq(libevdev_event_type_get_max(EV_MAX + 1), -1); }
END_TEST START_TEST(test_event_code) { struct input_event ev; int i = 0; ev.type = EV_REL; ev.code = REL_Y; ck_assert_int_eq(libevdev_event_is_code(&ev, EV_REL, REL_Y), 1); for (i = 0; i < EV_CNT; i++) { int j; if (i == ev.type || i == EV_SYN) continue; for (j = 0; j < libevdev_event_type_get_max(i); i++) { ck_assert_int_eq(libevdev_event_is_code(&ev, i, j), 0); } } ck_assert_int_eq(libevdev_event_is_code(&ev, EV_MAX + 1, ev.code), 0); ck_assert_int_eq(libevdev_event_is_code(&ev, EV_REL, REL_MAX + 1), 0); ev.type = EV_SYN; ev.code = SYN_REPORT; ck_assert_int_eq(libevdev_event_is_code(&ev, EV_SYN, SYN_REPORT), 1); ck_assert_int_eq(libevdev_event_is_code(&ev, EV_SYN, SYN_DROPPED), 0); }
END_TEST START_TEST(test_uinput_create_device_from_fd) { struct libevdev *dev, *dev2; struct libevdev_uinput *uidev; int fd, fd2; unsigned int type, code; int rc; const char *devnode; 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); ck_assert(uidev != NULL); ck_assert_int_eq(libevdev_uinput_get_fd(uidev), fd); devnode = libevdev_uinput_get_devnode(uidev); ck_assert(devnode != NULL); fd2 = open(devnode, O_RDONLY); ck_assert_int_gt(fd2, -1); rc = libevdev_new_from_fd(fd2, &dev2); ck_assert_int_eq(rc, 0); for (type = 0; type < EV_CNT; type++) { int max = libevdev_event_type_get_max(type); if (max == -1) continue; for (code = 0; code < max; code++) { ck_assert_int_eq(libevdev_has_event_code(dev, type, code), libevdev_has_event_code(dev2, type, code)); } } libevdev_free(dev); libevdev_free(dev2); libevdev_uinput_destroy(uidev); close(fd); close(fd2); }