test: add litest_assert_event_type_not_one_of
authorPeter Hutterer <peter.hutterer@who-t.net>
Mon, 14 Oct 2024 08:58:24 +0000 (18:58 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Tue, 15 Oct 2024 02:44:27 +0000 (12:44 +1000)
Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1059>

test/litest.c
test/litest.h
test/test-touchpad-tap.c

index c7d5dcbe9cbf56f2ffba1849fa033c3861d3fd88..22cf92a6068fdcb5bf836fe74fc0f02845e643b9 100644 (file)
@@ -3410,6 +3410,40 @@ litest_assert_event_type(struct libinput_event *event,
        litest_assert_event_type_is_one_of(event, want);
 }
 
+#define litest_assert_event_type_not_one_of(...) \
+    _litest_assert_event_type_not_one_of(__VA_ARGS__, -1)
+
+void
+_litest_assert_event_type_not_one_of(struct libinput_event *event, ...)
+{
+       va_list args;
+       enum libinput_event_type not_expected_type;
+       enum libinput_event_type actual_type = libinput_event_get_type(event);
+       bool match = false;
+
+       va_start(args, event);
+       not_expected_type = va_arg(args, int);
+       while ((int)not_expected_type != -1 && !match) {
+               match = (actual_type == not_expected_type);
+               not_expected_type = va_arg(args, int);
+       }
+       va_end(args);
+
+       if (!match)
+               return;
+
+       fprintf(stderr,
+               "FAILED EVENT TYPE: %s: have %s (%d) but didn't want that\n",
+               libinput_device_get_name(libinput_event_get_device(event)),
+               litest_event_get_type_str(event),
+               libinput_event_get_type(event));
+
+       fprintf(stderr, "\nWrong event is: ");
+       litest_print_event(event);
+       litest_backtrace();
+       abort();
+}
+
 void
 _litest_assert_empty_queue(struct libinput *li,
                           const char *func,
index 8c457c0f6b425d83b393d91eac353c2da9e4d8c8..842e0a6e5b4eb797570a571629d68b83e6991b15 100644 (file)
@@ -798,6 +798,12 @@ void
 litest_assert_event_type(struct libinput_event *event,
                         enum libinput_event_type want);
 
+#define litest_assert_event_type_not_one_of(...) \
+    _litest_assert_event_type_not_one_of(__VA_ARGS__, -1)
+
+void
+_litest_assert_event_type_not_one_of(struct libinput_event *event, ...);
+
 #define litest_assert_empty_queue(li_) \
        _litest_assert_empty_queue(li_, __func__, __LINE__)
 
index 87de1baa6410fe575cb4ce99829094ec2c594ab9..48791e3fa0ef9f5ee797fcc60c637c8aefe7d271 100644 (file)
@@ -2699,8 +2699,7 @@ START_TEST(touchpad_no_first_fg_tap_after_move)
        litest_dispatch(dev->libinput);
 
        while ((event = libinput_get_event(li))) {
-               ck_assert_int_ne(libinput_event_get_type(event),
-                                LIBINPUT_EVENT_POINTER_BUTTON);
+               litest_assert_event_type_not_one_of(event, LIBINPUT_EVENT_POINTER_BUTTON);
                libinput_event_destroy(event);
        }
 }