diff --git a/test/keyboard.c b/test/keyboard.c index 508362bb..03d62ddd 100644 --- a/test/keyboard.c +++ b/test/keyboard.c @@ -61,11 +61,9 @@ START_TEST(keyboard_seat_key_count) continue; } - kev = libinput_event_get_keyboard_event(ev); - ck_assert_notnull(kev); - ck_assert_int_eq(libinput_event_keyboard_get_key(kev), KEY_A); - ck_assert_int_eq(libinput_event_keyboard_get_key_state(kev), - LIBINPUT_KEY_STATE_PRESSED); + kev = litest_is_keyboard_event(ev, + KEY_A, + LIBINPUT_KEY_STATE_PRESSED); ++expected_key_button_count; seat_key_count = @@ -175,31 +173,6 @@ START_TEST(keyboard_ignore_no_pressed_release) } END_TEST -static void -test_key_event(struct litest_device *dev, unsigned int key, int state) -{ - struct libinput *li = dev->libinput; - struct libinput_event *event; - struct libinput_event_keyboard *kevent; - - litest_event(dev, EV_KEY, key, state); - litest_event(dev, EV_SYN, SYN_REPORT, 0); - - libinput_dispatch(li); - - event = libinput_get_event(li); - ck_assert(event != NULL); - ck_assert_int_eq(libinput_event_get_type(event), LIBINPUT_EVENT_KEYBOARD_KEY); - - kevent = libinput_event_get_keyboard_event(event); - ck_assert(kevent != NULL); - ck_assert_int_eq(libinput_event_keyboard_get_key(kevent), key); - ck_assert_int_eq(libinput_event_keyboard_get_key_state(kevent), - state ? LIBINPUT_KEY_STATE_PRESSED : - LIBINPUT_KEY_STATE_RELEASED); - libinput_event_destroy(event); -} - START_TEST(keyboard_key_auto_release) { struct libinput *libinput; @@ -244,7 +217,17 @@ START_TEST(keyboard_key_auto_release) /* Send pressed events, without releasing */ for (i = 0; i < ARRAY_LENGTH(keys); ++i) { - test_key_event(dev, keys[i].code, 1); + key = keys[i].code; + litest_event(dev, EV_KEY, key, 1); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + + libinput_dispatch(libinput); + + event = libinput_get_event(libinput); + kevent = litest_is_keyboard_event(event, + key, + LIBINPUT_KEY_STATE_PRESSED); + libinput_event_destroy(event); } litest_drain_events(libinput); diff --git a/test/litest.c b/test/litest.c index 6506af08..c24a3061 100644 --- a/test/litest.c +++ b/test/litest.c @@ -1558,6 +1558,26 @@ litest_is_touch_event(struct libinput_event *event, return touch; } +struct libinput_event_keyboard * +litest_is_keyboard_event(struct libinput_event *event, + unsigned int key, + enum libinput_key_state state) +{ + struct libinput_event_keyboard *kevent; + enum libinput_event_type type = LIBINPUT_EVENT_KEYBOARD_KEY; + + ck_assert_notnull(event); + ck_assert_int_eq(libinput_event_get_type(event), type); + + kevent = libinput_event_get_keyboard_event(event); + ck_assert_notnull(kevent); + + ck_assert_int_eq(libinput_event_keyboard_get_key(kevent), key); + ck_assert_int_eq(libinput_event_keyboard_get_key_state(kevent), + state); + return kevent; +} + void litest_assert_scroll(struct libinput *li, enum libinput_pointer_axis axis, diff --git a/test/litest.h b/test/litest.h index ebe2bea3..664b49ac 100644 --- a/test/litest.h +++ b/test/litest.h @@ -209,6 +209,10 @@ struct libinput_event_pointer * litest_is_motion_event( struct libinput_event_touch * litest_is_touch_event( struct libinput_event *event, enum libinput_event_type type); +struct libinput_event_keyboard * litest_is_keyboard_event( + struct libinput_event *event, + unsigned int key, + enum libinput_key_state state); void litest_assert_button_event(struct libinput *li, unsigned int button, enum libinput_button_state state);