test: add litest_assert_empty_queue helper function

Checks if the queue is empty and prints informatino about any events before
failing.

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 2014-06-06 10:58:11 +10:00
parent fc51daff73
commit e0ce8a67ea
3 changed files with 64 additions and 7 deletions

View file

@ -737,6 +737,67 @@ litest_drain_events(struct libinput *li)
}
}
static void
litest_print_event(struct libinput_event *event)
{
struct libinput_event_pointer *p;
struct libinput_device *dev;
enum libinput_event_type type;
double x, y;
dev = libinput_event_get_device(event);
type = libinput_event_get_type(event);
fprintf(stderr,
"device %s type %d ",
libinput_device_get_sysname(dev),
type);
switch (type) {
case LIBINPUT_EVENT_POINTER_MOTION:
p = libinput_event_get_pointer_event(event);
x = libinput_event_pointer_get_dx(p);
y = libinput_event_pointer_get_dy(p);
fprintf(stderr, "motion: %.2f/%.2f", x, y);
break;
case LIBINPUT_EVENT_POINTER_MOTION_ABSOLUTE:
p = libinput_event_get_pointer_event(event);
x = libinput_event_pointer_get_absolute_x(p);
y = libinput_event_pointer_get_absolute_y(p);
fprintf(stderr, "motion: %.2f/%.2f", x, y);
break;
case LIBINPUT_EVENT_POINTER_BUTTON:
p = libinput_event_get_pointer_event(event);
fprintf(stderr,
"button: %d state %d",
libinput_event_pointer_get_button(p),
libinput_event_pointer_get_button_state(p));
break;
default:
break;
}
fprintf(stderr, "\n");
}
void
litest_assert_empty_queue(struct libinput *li)
{
bool empty_queue = true;
struct libinput_event *event;
libinput_dispatch(li);
while ((event = libinput_get_event(li))) {
empty_queue = false;
fprintf(stderr,
"Unexpected event: ");
litest_print_event(event);
libinput_event_destroy(event);
libinput_dispatch(li);
}
ck_assert(empty_queue);
}
struct libevdev_uinput *
litest_create_uinput_device_from_description(const char *name,
const struct input_id *id,

View file

@ -123,6 +123,7 @@ void litest_keyboard_key(struct litest_device *d,
unsigned int key,
bool is_press);
void litest_drain_events(struct libinput *li);
void litest_assert_empty_queue(struct libinput *li);
struct libevdev_uinput * litest_create_uinput_device(const char *name,
struct input_id *id,

View file

@ -182,9 +182,7 @@ START_TEST(touchpad_1fg_tap_n_drag)
assert_button_event(li, BTN_LEFT,
LIBINPUT_BUTTON_STATE_RELEASED);
libinput_dispatch(li);
event = libinput_get_event(li);
ck_assert(event == NULL);
litest_assert_empty_queue(li);
}
END_TEST
@ -192,7 +190,6 @@ START_TEST(touchpad_2fg_tap)
{
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
struct libinput_event *event;
litest_drain_events(dev->libinput);
@ -209,9 +206,7 @@ START_TEST(touchpad_2fg_tap)
assert_button_event(li, BTN_RIGHT,
LIBINPUT_BUTTON_STATE_RELEASED);
libinput_dispatch(li);
event = libinput_get_event(li);
ck_assert(event == NULL);
litest_assert_empty_queue(li);
}
END_TEST