diff options
author | José Expósito <jose.exposito89@gmail.com> | 2021-05-27 19:20:11 +0200 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2021-06-09 01:18:58 +0000 |
commit | c99b24e5a36c7fc6d702a1bb692ef6b5e9c1cc29 (patch) | |
tree | 2d8aeda78751a0f0bbf63483d3b2f6cbb91482f5 /test | |
parent | 8a180b52d63087646236e69b12446cab5962285a (diff) |
tests: move existing gesture tests to functions to be able to reuse them
Signed-off-by: José Expósito <jose.exposito89@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/test-gestures.c | 676 |
1 files changed, 359 insertions, 317 deletions
diff --git a/test/test-gestures.c b/test/test-gestures.c index 21f53baf..85edcea3 100644 --- a/test/test-gestures.c +++ b/test/test-gestures.c @@ -34,38 +34,14 @@ enum cardinal { N, NE, E, SE, S, SW, W, NW, NCARDINALS }; -START_TEST(gestures_cap) -{ - struct litest_device *dev = litest_current_device(); - struct libinput_device *device = dev->libinput_device; - - if (libevdev_has_property(dev->evdev, INPUT_PROP_SEMI_MT)) - ck_assert(!libinput_device_has_capability(device, - LIBINPUT_DEVICE_CAP_GESTURE)); - else - ck_assert(libinput_device_has_capability(device, - LIBINPUT_DEVICE_CAP_GESTURE)); -} -END_TEST - -START_TEST(gestures_nocap) -{ - struct litest_device *dev = litest_current_device(); - struct libinput_device *device = dev->libinput_device; - - ck_assert(!libinput_device_has_capability(device, - LIBINPUT_DEVICE_CAP_GESTURE)); -} -END_TEST - -START_TEST(gestures_swipe_3fg) +static void +test_gesture_swipe_3fg(int cardinal) { struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; struct libinput_event *event; struct libinput_event_gesture *gevent; double dx, dy; - int cardinal = _i; /* ranged test */ double dir_x, dir_y; int cardinals[NCARDINALS][2] = { { 0, 30 }, @@ -155,169 +131,15 @@ START_TEST(gestures_swipe_3fg) ck_assert(!libinput_event_gesture_get_cancelled(gevent)); libinput_event_destroy(event); } -END_TEST - -START_TEST(gestures_swipe_3fg_btntool) -{ - struct litest_device *dev = litest_current_device(); - struct libinput *li = dev->libinput; - struct libinput_event *event; - struct libinput_event_gesture *gevent; - double dx, dy; - int cardinal = _i; /* ranged test */ - double dir_x, dir_y; - int cardinals[NCARDINALS][2] = { - { 0, 30 }, - { 30, 30 }, - { 30, 0 }, - { 30, -30 }, - { 0, -30 }, - { -30, -30 }, - { -30, 0 }, - { -30, 30 }, - }; - - if (litest_slot_count(dev) > 2 || - !libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_TRIPLETAP) || - !libinput_device_has_capability(dev->libinput_device, - LIBINPUT_DEVICE_CAP_GESTURE)) - return; - - dir_x = cardinals[cardinal][0]; - dir_y = cardinals[cardinal][1]; - - litest_drain_events(li); - - litest_touch_down(dev, 0, 40, 40); - litest_touch_down(dev, 1, 50, 40); - litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); - litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 1); - litest_event(dev, EV_SYN, SYN_REPORT, 0); - - libinput_dispatch(li); - litest_touch_move_two_touches(dev, 40, 40, 50, 40, dir_x, dir_y, 10); - libinput_dispatch(li); - - event = libinput_get_event(li); - gevent = litest_is_gesture_event(event, - LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN, - 3); - dx = libinput_event_gesture_get_dx(gevent); - dy = libinput_event_gesture_get_dy(gevent); - ck_assert(dx == 0.0); - ck_assert(dy == 0.0); - libinput_event_destroy(event); - - while ((event = libinput_get_event(li)) != NULL) { - gevent = litest_is_gesture_event(event, - LIBINPUT_EVENT_GESTURE_SWIPE_UPDATE, - 3); - - dx = libinput_event_gesture_get_dx(gevent); - dy = libinput_event_gesture_get_dy(gevent); - if (dir_x == 0.0) - ck_assert(dx == 0.0); - else if (dir_x < 0.0) - ck_assert(dx < 0.0); - else if (dir_x > 0.0) - ck_assert(dx > 0.0); - - if (dir_y == 0.0) - ck_assert(dy == 0.0); - else if (dir_y < 0.0) - ck_assert(dy < 0.0); - else if (dir_y > 0.0) - ck_assert(dy > 0.0); - - dx = libinput_event_gesture_get_dx_unaccelerated(gevent); - dy = libinput_event_gesture_get_dy_unaccelerated(gevent); - if (dir_x == 0.0) - ck_assert(dx == 0.0); - else if (dir_x < 0.0) - ck_assert(dx < 0.0); - else if (dir_x > 0.0) - ck_assert(dx > 0.0); - - if (dir_y == 0.0) - ck_assert(dy == 0.0); - else if (dir_y < 0.0) - ck_assert(dy < 0.0); - else if (dir_y > 0.0) - ck_assert(dy > 0.0); - - libinput_event_destroy(event); - } - - litest_touch_up(dev, 0); - litest_touch_up(dev, 1); - libinput_dispatch(li); - event = libinput_get_event(li); - gevent = litest_is_gesture_event(event, - LIBINPUT_EVENT_GESTURE_SWIPE_END, - 3); - ck_assert(!libinput_event_gesture_get_cancelled(gevent)); - libinput_event_destroy(event); -} -END_TEST - -START_TEST(gestures_swipe_3fg_btntool_pinch_like) -{ - struct litest_device *dev = litest_current_device(); - struct libinput *li = dev->libinput; - struct libinput_event *event; - struct libinput_event_gesture *gevent; - - if (litest_slot_count(dev) > 2 || - !libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_TRIPLETAP) || - !libinput_device_has_capability(dev->libinput_device, - LIBINPUT_DEVICE_CAP_GESTURE)) - return; - - litest_drain_events(li); - - /* Technically a pinch position + pinch movement, but expect swipe - * for nfingers > nslots */ - litest_touch_down(dev, 0, 20, 60); - litest_touch_down(dev, 1, 50, 20); - litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); - litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 1); - litest_event(dev, EV_SYN, SYN_REPORT, 0); - - libinput_dispatch(li); - litest_touch_move_to(dev, 0, 20, 60, 10, 80, 20); - libinput_dispatch(li); - - event = libinput_get_event(li); - litest_is_gesture_event(event, LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN, 3); - libinput_event_destroy(event); - - while ((event = libinput_get_event(li)) != NULL) { - litest_is_gesture_event(event, - LIBINPUT_EVENT_GESTURE_SWIPE_UPDATE, - 3); - libinput_event_destroy(event); - } - - litest_touch_up(dev, 0); - litest_touch_up(dev, 1); - libinput_dispatch(li); - event = libinput_get_event(li); - gevent = litest_is_gesture_event(event, - LIBINPUT_EVENT_GESTURE_SWIPE_END, - 3); - ck_assert(!libinput_event_gesture_get_cancelled(gevent)); - libinput_event_destroy(event); -} -END_TEST -START_TEST(gestures_swipe_4fg) +static void +test_gesture_swipe_4fg(int cardinal) { struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; struct libinput_event *event; struct libinput_event_gesture *gevent; double dx, dy; - int cardinal = _i; /* ranged test */ double dir_x, dir_y; int cardinals[NCARDINALS][2] = { { 0, 3 }, @@ -435,119 +257,15 @@ START_TEST(gestures_swipe_4fg) ck_assert(!libinput_event_gesture_get_cancelled(gevent)); libinput_event_destroy(event); } -END_TEST - -START_TEST(gestures_swipe_4fg_btntool) -{ - struct litest_device *dev = litest_current_device(); - struct libinput *li = dev->libinput; - struct libinput_event *event; - struct libinput_event_gesture *gevent; - double dx, dy; - int cardinal = _i; /* ranged test */ - double dir_x, dir_y; - int cardinals[NCARDINALS][2] = { - { 0, 30 }, - { 30, 30 }, - { 30, 0 }, - { 30, -30 }, - { 0, -30 }, - { -30, -30 }, - { -30, 0 }, - { -30, 30 }, - }; - - if (litest_slot_count(dev) > 2 || - !libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_QUADTAP) || - !libinput_device_has_capability(dev->libinput_device, - LIBINPUT_DEVICE_CAP_GESTURE)) - return; - - dir_x = cardinals[cardinal][0]; - dir_y = cardinals[cardinal][1]; - - litest_drain_events(li); - - litest_touch_down(dev, 0, 40, 40); - litest_touch_down(dev, 1, 50, 40); - litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); - litest_event(dev, EV_KEY, BTN_TOOL_QUADTAP, 1); - litest_event(dev, EV_SYN, SYN_REPORT, 0); - - libinput_dispatch(li); - litest_touch_move_two_touches(dev, 40, 40, 50, 40, dir_x, dir_y, 10); - libinput_dispatch(li); - - event = libinput_get_event(li); - gevent = litest_is_gesture_event(event, - LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN, - 4); - dx = libinput_event_gesture_get_dx(gevent); - dy = libinput_event_gesture_get_dy(gevent); - ck_assert(dx == 0.0); - ck_assert(dy == 0.0); - libinput_event_destroy(event); - - while ((event = libinput_get_event(li)) != NULL) { - gevent = litest_is_gesture_event(event, - LIBINPUT_EVENT_GESTURE_SWIPE_UPDATE, - 4); - - dx = libinput_event_gesture_get_dx(gevent); - dy = libinput_event_gesture_get_dy(gevent); - if (dir_x == 0.0) - ck_assert(dx == 0.0); - else if (dir_x < 0.0) - ck_assert(dx < 0.0); - else if (dir_x > 0.0) - ck_assert(dx > 0.0); - - if (dir_y == 0.0) - ck_assert(dy == 0.0); - else if (dir_y < 0.0) - ck_assert(dy < 0.0); - else if (dir_y > 0.0) - ck_assert(dy > 0.0); - - dx = libinput_event_gesture_get_dx_unaccelerated(gevent); - dy = libinput_event_gesture_get_dy_unaccelerated(gevent); - if (dir_x == 0.0) - ck_assert(dx == 0.0); - else if (dir_x < 0.0) - ck_assert(dx < 0.0); - else if (dir_x > 0.0) - ck_assert(dx > 0.0); - - if (dir_y == 0.0) - ck_assert(dy == 0.0); - else if (dir_y < 0.0) - ck_assert(dy < 0.0); - else if (dir_y > 0.0) - ck_assert(dy > 0.0); - - libinput_event_destroy(event); - } - - litest_touch_up(dev, 0); - litest_touch_up(dev, 1); - libinput_dispatch(li); - event = libinput_get_event(li); - gevent = litest_is_gesture_event(event, - LIBINPUT_EVENT_GESTURE_SWIPE_END, - 4); - ck_assert(!libinput_event_gesture_get_cancelled(gevent)); - libinput_event_destroy(event); -} -END_TEST -START_TEST(gestures_pinch) +static void +test_gesture_pinch_2fg(int cardinal) { struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; struct libinput_event *event; struct libinput_event_gesture *gevent; double dx, dy; - int cardinal = _i; /* ranged test */ double dir_x, dir_y; int i; double scale, oldscale; @@ -650,16 +368,15 @@ START_TEST(gestures_pinch) ck_assert(!libinput_event_gesture_get_cancelled(gevent)); libinput_event_destroy(event); } -END_TEST -START_TEST(gestures_pinch_3fg) +static void +test_gesture_pinch_3fg(int cardinal) { struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; struct libinput_event *event; struct libinput_event_gesture *gevent; double dx, dy; - int cardinal = _i; /* ranged test */ double dir_x, dir_y; int i; double scale, oldscale; @@ -755,16 +472,15 @@ START_TEST(gestures_pinch_3fg) ck_assert(!libinput_event_gesture_get_cancelled(gevent)); libinput_event_destroy(event); } -END_TEST -START_TEST(gestures_pinch_4fg) +static void +test_gesture_pinch_4fg(int cardinal) { struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; struct libinput_event *event; struct libinput_event_gesture *gevent; double dx, dy; - int cardinal = _i; /* ranged test */ double dir_x, dir_y; int i; double scale, oldscale; @@ -866,16 +582,15 @@ START_TEST(gestures_pinch_4fg) ck_assert(!libinput_event_gesture_get_cancelled(gevent)); libinput_event_destroy(event); } -END_TEST -START_TEST(gestures_spread) +static void +test_gesture_spread(int cardinal) { struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; struct libinput_event *event; struct libinput_event_gesture *gevent; double dx, dy; - int cardinal = _i; /* ranged test */ double dir_x, dir_y; int i; double scale, oldscale; @@ -976,63 +691,390 @@ START_TEST(gestures_spread) ck_assert(!libinput_event_gesture_get_cancelled(gevent)); libinput_event_destroy(event); } + +static void +test_gesture_3fg_buttonarea_scroll(void) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + + if (litest_slot_count(dev) < 3) + return; + + litest_enable_buttonareas(dev); + litest_enable_2fg_scroll(dev); + litest_drain_events(li); + + litest_touch_down(dev, 0, 40, 20); + litest_touch_down(dev, 1, 30, 20); + /* third finger in btnarea */ + litest_touch_down(dev, 2, 50, 99); + libinput_dispatch(li); + litest_touch_move_two_touches(dev, 40, 20, 30, 20, 0, 40, 10); + + litest_touch_up(dev, 0); + litest_touch_up(dev, 1); + libinput_dispatch(li); + litest_assert_scroll(li, LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL, 4); +} + +START_TEST(gestures_cap) +{ + struct litest_device *dev = litest_current_device(); + struct libinput_device *device = dev->libinput_device; + + if (libevdev_has_property(dev->evdev, INPUT_PROP_SEMI_MT)) + ck_assert(!libinput_device_has_capability(device, + LIBINPUT_DEVICE_CAP_GESTURE)); + else + ck_assert(libinput_device_has_capability(device, + LIBINPUT_DEVICE_CAP_GESTURE)); +} END_TEST -START_TEST(gestures_time_usec) +START_TEST(gestures_nocap) +{ + struct litest_device *dev = litest_current_device(); + struct libinput_device *device = dev->libinput_device; + + ck_assert(!libinput_device_has_capability(device, + LIBINPUT_DEVICE_CAP_GESTURE)); +} +END_TEST + +START_TEST(gestures_swipe_3fg) +{ + int cardinal = _i; /* ranged test */ + test_gesture_swipe_3fg(cardinal); +} +END_TEST + +START_TEST(gestures_swipe_3fg_btntool) { struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; struct libinput_event *event; struct libinput_event_gesture *gevent; - uint64_t time_usec; + double dx, dy; + int cardinal = _i; /* ranged test */ + double dir_x, dir_y; + int cardinals[NCARDINALS][2] = { + { 0, 30 }, + { 30, 30 }, + { 30, 0 }, + { 30, -30 }, + { 0, -30 }, + { -30, -30 }, + { -30, 0 }, + { -30, 30 }, + }; - if (litest_slot_count(dev) < 3) + if (litest_slot_count(dev) > 2 || + !libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_TRIPLETAP) || + !libinput_device_has_capability(dev->libinput_device, + LIBINPUT_DEVICE_CAP_GESTURE)) return; + dir_x = cardinals[cardinal][0]; + dir_y = cardinals[cardinal][1]; + litest_drain_events(li); litest_touch_down(dev, 0, 40, 40); litest_touch_down(dev, 1, 50, 40); - litest_touch_down(dev, 2, 60, 40); - libinput_dispatch(li); - litest_touch_move_three_touches(dev, 40, 40, 50, 40, 60, 40, 0, 30, - 30); + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); + litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 1); + litest_event(dev, EV_SYN, SYN_REPORT, 0); libinput_dispatch(li); + litest_touch_move_two_touches(dev, 40, 40, 50, 40, dir_x, dir_y, 10); + libinput_dispatch(li); + event = libinput_get_event(li); gevent = litest_is_gesture_event(event, LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN, 3); - time_usec = libinput_event_gesture_get_time_usec(gevent); - ck_assert_int_eq(libinput_event_gesture_get_time(gevent), - (uint32_t) (time_usec / 1000)); + dx = libinput_event_gesture_get_dx(gevent); + dy = libinput_event_gesture_get_dy(gevent); + ck_assert(dx == 0.0); + ck_assert(dy == 0.0); + libinput_event_destroy(event); + + while ((event = libinput_get_event(li)) != NULL) { + gevent = litest_is_gesture_event(event, + LIBINPUT_EVENT_GESTURE_SWIPE_UPDATE, + 3); + + dx = libinput_event_gesture_get_dx(gevent); + dy = libinput_event_gesture_get_dy(gevent); + if (dir_x == 0.0) + ck_assert(dx == 0.0); + else if (dir_x < 0.0) + ck_assert(dx < 0.0); + else if (dir_x > 0.0) + ck_assert(dx > 0.0); + + if (dir_y == 0.0) + ck_assert(dy == 0.0); + else if (dir_y < 0.0) + ck_assert(dy < 0.0); + else if (dir_y > 0.0) + ck_assert(dy > 0.0); + + dx = libinput_event_gesture_get_dx_unaccelerated(gevent); + dy = libinput_event_gesture_get_dy_unaccelerated(gevent); + if (dir_x == 0.0) + ck_assert(dx == 0.0); + else if (dir_x < 0.0) + ck_assert(dx < 0.0); + else if (dir_x > 0.0) + ck_assert(dx > 0.0); + + if (dir_y == 0.0) + ck_assert(dy == 0.0); + else if (dir_y < 0.0) + ck_assert(dy < 0.0); + else if (dir_y > 0.0) + ck_assert(dy > 0.0); + + libinput_event_destroy(event); + } + + litest_touch_up(dev, 0); + litest_touch_up(dev, 1); + libinput_dispatch(li); + event = libinput_get_event(li); + gevent = litest_is_gesture_event(event, + LIBINPUT_EVENT_GESTURE_SWIPE_END, + 3); + ck_assert(!libinput_event_gesture_get_cancelled(gevent)); libinput_event_destroy(event); } END_TEST -START_TEST(gestures_3fg_buttonarea_scroll) +START_TEST(gestures_swipe_3fg_btntool_pinch_like) { struct litest_device *dev = litest_current_device(); struct libinput *li = dev->libinput; + struct libinput_event *event; + struct libinput_event_gesture *gevent; - if (litest_slot_count(dev) < 3) + if (litest_slot_count(dev) > 2 || + !libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_TRIPLETAP) || + !libinput_device_has_capability(dev->libinput_device, + LIBINPUT_DEVICE_CAP_GESTURE)) return; - litest_enable_buttonareas(dev); - litest_enable_2fg_scroll(dev); litest_drain_events(li); - litest_touch_down(dev, 0, 40, 20); - litest_touch_down(dev, 1, 30, 20); - /* third finger in btnarea */ - litest_touch_down(dev, 2, 50, 99); + /* Technically a pinch position + pinch movement, but expect swipe + * for nfingers > nslots */ + litest_touch_down(dev, 0, 20, 60); + litest_touch_down(dev, 1, 50, 20); + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); + litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 1); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + + libinput_dispatch(li); + litest_touch_move_to(dev, 0, 20, 60, 10, 80, 20); libinput_dispatch(li); - litest_touch_move_two_touches(dev, 40, 20, 30, 20, 0, 40, 10); + + event = libinput_get_event(li); + litest_is_gesture_event(event, LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN, 3); + libinput_event_destroy(event); + + while ((event = libinput_get_event(li)) != NULL) { + litest_is_gesture_event(event, + LIBINPUT_EVENT_GESTURE_SWIPE_UPDATE, + 3); + libinput_event_destroy(event); + } litest_touch_up(dev, 0); litest_touch_up(dev, 1); libinput_dispatch(li); - litest_assert_scroll(li, LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL, 4); + event = libinput_get_event(li); + gevent = litest_is_gesture_event(event, + LIBINPUT_EVENT_GESTURE_SWIPE_END, + 3); + ck_assert(!libinput_event_gesture_get_cancelled(gevent)); + libinput_event_destroy(event); +} +END_TEST + +START_TEST(gestures_swipe_4fg) +{ + int cardinal = _i; /* ranged test */ + test_gesture_swipe_4fg(cardinal); +} +END_TEST + +START_TEST(gestures_swipe_4fg_btntool) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + struct libinput_event *event; + struct libinput_event_gesture *gevent; + double dx, dy; + int cardinal = _i; /* ranged test */ + double dir_x, dir_y; + int cardinals[NCARDINALS][2] = { + { 0, 30 }, + { 30, 30 }, + { 30, 0 }, + { 30, -30 }, + { 0, -30 }, + { -30, -30 }, + { -30, 0 }, + { -30, 30 }, + }; + + if (litest_slot_count(dev) > 2 || + !libevdev_has_event_code(dev->evdev, EV_KEY, BTN_TOOL_QUADTAP) || + !libinput_device_has_capability(dev->libinput_device, + LIBINPUT_DEVICE_CAP_GESTURE)) + return; + + dir_x = cardinals[cardinal][0]; + dir_y = cardinals[cardinal][1]; + + litest_drain_events(li); + + litest_touch_down(dev, 0, 40, 40); + litest_touch_down(dev, 1, 50, 40); + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0); + litest_event(dev, EV_KEY, BTN_TOOL_QUADTAP, 1); + litest_event(dev, EV_SYN, SYN_REPORT, 0); + + libinput_dispatch(li); + litest_touch_move_two_touches(dev, 40, 40, 50, 40, dir_x, dir_y, 10); + libinput_dispatch(li); + + event = libinput_get_event(li); + gevent = litest_is_gesture_event(event, + LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN, + 4); + dx = libinput_event_gesture_get_dx(gevent); + dy = libinput_event_gesture_get_dy(gevent); + ck_assert(dx == 0.0); + ck_assert(dy == 0.0); + libinput_event_destroy(event); + + while ((event = libinput_get_event(li)) != NULL) { + gevent = litest_is_gesture_event(event, + LIBINPUT_EVENT_GESTURE_SWIPE_UPDATE, + 4); + + dx = libinput_event_gesture_get_dx(gevent); + dy = libinput_event_gesture_get_dy(gevent); + if (dir_x == 0.0) + ck_assert(dx == 0.0); + else if (dir_x < 0.0) + ck_assert(dx < 0.0); + else if (dir_x > 0.0) + ck_assert(dx > 0.0); + + if (dir_y == 0.0) + ck_assert(dy == 0.0); + else if (dir_y < 0.0) + ck_assert(dy < 0.0); + else if (dir_y > 0.0) + ck_assert(dy > 0.0); + + dx = libinput_event_gesture_get_dx_unaccelerated(gevent); + dy = libinput_event_gesture_get_dy_unaccelerated(gevent); + if (dir_x == 0.0) + ck_assert(dx == 0.0); + else if (dir_x < 0.0) + ck_assert(dx < 0.0); + else if (dir_x > 0.0) + ck_assert(dx > 0.0); + + if (dir_y == 0.0) + ck_assert(dy == 0.0); + else if (dir_y < 0.0) + ck_assert(dy < 0.0); + else if (dir_y > 0.0) + ck_assert(dy > 0.0); + + libinput_event_destroy(event); + } + + litest_touch_up(dev, 0); + litest_touch_up(dev, 1); + libinput_dispatch(li); + event = libinput_get_event(li); + gevent = litest_is_gesture_event(event, + LIBINPUT_EVENT_GESTURE_SWIPE_END, + 4); + ck_assert(!libinput_event_gesture_get_cancelled(gevent)); + libinput_event_destroy(event); +} +END_TEST + +START_TEST(gestures_pinch) +{ + int cardinal = _i; /* ranged test */ + test_gesture_pinch_2fg(cardinal); +} +END_TEST + +START_TEST(gestures_pinch_3fg) +{ + int cardinal = _i; /* ranged test */ + test_gesture_pinch_3fg(cardinal); +} +END_TEST + +START_TEST(gestures_pinch_4fg) +{ + int cardinal = _i; /* ranged test */ + test_gesture_pinch_4fg(cardinal); +} +END_TEST + +START_TEST(gestures_spread) +{ + int cardinal = _i; /* ranged test */ + test_gesture_spread(cardinal); +} +END_TEST + +START_TEST(gestures_time_usec) +{ + struct litest_device *dev = litest_current_device(); + struct libinput *li = dev->libinput; + struct libinput_event *event; + struct libinput_event_gesture *gevent; + uint64_t time_usec; + + if (litest_slot_count(dev) < 3) + return; + + litest_drain_events(li); + + litest_touch_down(dev, 0, 40, 40); + litest_touch_down(dev, 1, 50, 40); + litest_touch_down(dev, 2, 60, 40); + libinput_dispatch(li); + litest_touch_move_three_touches(dev, 40, 40, 50, 40, 60, 40, 0, 30, + 30); + + libinput_dispatch(li); + event = libinput_get_event(li); + gevent = litest_is_gesture_event(event, + LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN, + 3); + time_usec = libinput_event_gesture_get_time_usec(gevent); + ck_assert_int_eq(libinput_event_gesture_get_time(gevent), + (uint32_t) (time_usec / 1000)); + libinput_event_destroy(event); +} +END_TEST + +START_TEST(gestures_3fg_buttonarea_scroll) +{ + test_gesture_3fg_buttonarea_scroll(); } END_TEST |