test: add litest_is_keyboard_event() helper function

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
Peter Hutterer 2015-05-05 15:43:08 +10:00
parent cbfbede748
commit fd301dfba2
3 changed files with 38 additions and 31 deletions

View file

@ -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);

View file

@ -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,

View file

@ -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);