test: add litest_assert_empty_queue helper function
authorPeter Hutterer <peter.hutterer@who-t.net>
Fri, 6 Jun 2014 00:58:11 +0000 (10:58 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 12 Jun 2014 00:29:26 +0000 (10:29 +1000)
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>
test/litest.c
test/litest.h
test/touchpad.c

index 1f1bf7bc0fd2f82bab9664be287b736bacfe3d7f..571cf763d277e19dbd457c6cfbe95e1f0fcfaf62 100644 (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,
index 32e1cb0401249e9b4054ae2496da25f7466fd287..170c87cf04dcb4fe39488de7bba723b327e4e6b7 100644 (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,
index 9c95309d3164b732f7ac686a58432cc8f59bf715..ec412d3e4cf6966d4572e66487a1163798cb0a9f 100644 (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