summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/gestures.c824
-rw-r--r--test/litest-selftest.c4
-rw-r--r--test/litest.c4
-rw-r--r--test/litest.h10
-rw-r--r--test/touchpad-tap.c106
-rw-r--r--test/touchpad.c10
6 files changed, 862 insertions, 96 deletions
diff --git a/test/gestures.c b/test/gestures.c
index 9fc73b97..3f7ee832 100644
--- a/test/gestures.c
+++ b/test/gestures.c
@@ -34,7 +34,7 @@ START_TEST(gestures_cap)
struct litest_device *dev = litest_current_device();
struct libinput_device *device = dev->libinput_device;
- if (litest_is_synaptics_semi_mt(dev))
+ if (libevdev_has_property(dev->evdev, INPUT_PROP_SEMI_MT))
ck_assert(!libinput_device_has_capability(device,
LIBINPUT_DEVICE_CAP_GESTURE));
else
@@ -82,13 +82,13 @@ START_TEST(gestures_swipe_3fg)
litest_drain_events(li);
litest_touch_down(dev, 0, 40, 40);
- litest_touch_down(dev, 1, 40, 50);
- litest_touch_down(dev, 2, 40, 60);
+ 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,
- 40, 50,
- 40, 60,
+ 50, 40,
+ 60, 40,
dir_x, dir_y,
10, 2);
libinput_dispatch(li);
@@ -110,7 +110,6 @@ START_TEST(gestures_swipe_3fg)
dx = libinput_event_gesture_get_dx(gevent);
dy = libinput_event_gesture_get_dy(gevent);
- debug_trace("delta: %.2f/%.2f\n", dx, dy);
if (dir_x == 0.0)
ck_assert(dx == 0.0);
else if (dir_x < 0.0)
@@ -157,6 +156,345 @@ START_TEST(gestures_swipe_3fg)
}
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[8][2] = {
+ { 0, 30 },
+ { 30, 30 },
+ { 30, 0 },
+ { 30, -30 },
+ { 0, -30 },
+ { -30, -30 },
+ { -30, 0 },
+ { -30, 30 },
+ };
+
+ if (libevdev_get_num_slots(dev->evdev) > 2 ||
+ !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, 2);
+ 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_4fg)
+{
+ 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[8][2] = {
+ { 0, 3 },
+ { 3, 3 },
+ { 3, 0 },
+ { 3, -3 },
+ { 0, -3 },
+ { -3, -3 },
+ { -3, 0 },
+ { -3, 3 },
+ };
+ int i;
+
+ if (libevdev_get_num_slots(dev->evdev) < 4)
+ 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);
+ litest_touch_down(dev, 3, 70, 40);
+ libinput_dispatch(li);
+
+ for (i = 0; i < 8; i++) {
+ litest_push_event_frame(dev);
+
+ dir_x += cardinals[cardinal][0];
+ dir_y += cardinals[cardinal][1];
+
+ litest_touch_move(dev,
+ 0,
+ 40 + dir_x,
+ 40 + dir_y);
+ litest_touch_move(dev,
+ 1,
+ 50 + dir_x,
+ 40 + dir_y);
+ litest_touch_move(dev,
+ 2,
+ 60 + dir_x,
+ 40 + dir_y);
+ litest_touch_move(dev,
+ 3,
+ 70 + dir_x,
+ 40 + dir_y);
+ litest_pop_event_frame(dev);
+ libinput_dispatch(li);
+ }
+
+ 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);
+ litest_touch_up(dev, 2);
+ litest_touch_up(dev, 3);
+ 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_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[8][2] = {
+ { 0, 30 },
+ { 30, 30 },
+ { 30, 0 },
+ { 30, -30 },
+ { 0, -30 },
+ { -30, -30 },
+ { -30, 0 },
+ { -30, 30 },
+ };
+
+ if (libevdev_get_num_slots(dev->evdev) > 2 ||
+ !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, 2);
+ 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)
{
struct litest_device *dev = litest_current_device();
@@ -180,7 +518,9 @@ START_TEST(gestures_pinch)
{ -30, 30 },
};
- if (libevdev_get_num_slots(dev->evdev) < 3)
+ if (libevdev_get_num_slots(dev->evdev) < 2 ||
+ !libinput_device_has_capability(dev->libinput_device,
+ LIBINPUT_DEVICE_CAP_GESTURE))
return;
dir_x = cardinals[cardinal][0];
@@ -195,13 +535,13 @@ START_TEST(gestures_pinch)
for (i = 0; i < 8; i++) {
litest_push_event_frame(dev);
if (dir_x > 0.0)
- dir_x -= 3;
+ dir_x -= 2;
else if (dir_x < 0.0)
- dir_x += 3;
+ dir_x += 2;
if (dir_y > 0.0)
- dir_y -= 3;
+ dir_y -= 2;
else if (dir_y < 0.0)
- dir_y += 3;
+ dir_y += 2;
litest_touch_move(dev,
0,
50 + dir_x,
@@ -256,7 +596,7 @@ START_TEST(gestures_pinch)
}
END_TEST
-START_TEST(gestures_spread)
+START_TEST(gestures_pinch_3fg)
{
struct litest_device *dev = litest_current_device();
struct libinput *li = dev->libinput;
@@ -269,14 +609,14 @@ START_TEST(gestures_spread)
double scale, oldscale;
double angle;
int cardinals[8][2] = {
- { 0, 1 },
- { 1, 1 },
- { 1, 0 },
- { 1, -1 },
- { 0, -1 },
- { -1, -1 },
- { -1, 0 },
- { -1, 1 },
+ { 0, 30 },
+ { 30, 30 },
+ { 30, 0 },
+ { 30, -30 },
+ { 0, -30 },
+ { -30, -30 },
+ { -30, 0 },
+ { -30, 30 },
};
if (libevdev_get_num_slots(dev->evdev) < 3)
@@ -289,6 +629,432 @@ START_TEST(gestures_spread)
litest_touch_down(dev, 0, 50 + dir_x, 50 + dir_y);
litest_touch_down(dev, 1, 50 - dir_x, 50 - dir_y);
+ litest_touch_down(dev, 2, 51 - dir_x, 51 - dir_y);
+ libinput_dispatch(li);
+
+ for (i = 0; i < 8; i++) {
+ litest_push_event_frame(dev);
+ if (dir_x > 0.0)
+ dir_x -= 2;
+ else if (dir_x < 0.0)
+ dir_x += 2;
+ if (dir_y > 0.0)
+ dir_y -= 2;
+ else if (dir_y < 0.0)
+ dir_y += 2;
+ litest_touch_move(dev,
+ 0,
+ 50 + dir_x,
+ 50 + dir_y);
+ litest_touch_move(dev,
+ 1,
+ 50 - dir_x,
+ 50 - dir_y);
+ litest_touch_move(dev,
+ 2,
+ 51 - dir_x,
+ 51 - dir_y);
+ litest_pop_event_frame(dev);
+ libinput_dispatch(li);
+ }
+
+ event = libinput_get_event(li);
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_BEGIN,
+ 3);
+ dx = libinput_event_gesture_get_dx(gevent);
+ dy = libinput_event_gesture_get_dy(gevent);
+ scale = libinput_event_gesture_get_scale(gevent);
+ ck_assert(dx == 0.0);
+ ck_assert(dy == 0.0);
+ ck_assert(scale == 1.0);
+
+ libinput_event_destroy(event);
+
+ while ((event = libinput_get_event(li)) != NULL) {
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_UPDATE,
+ 3);
+
+ oldscale = scale;
+ scale = libinput_event_gesture_get_scale(gevent);
+
+ ck_assert(scale < oldscale);
+
+ angle = libinput_event_gesture_get_angle_delta(gevent);
+ ck_assert_double_le(fabs(angle), 1.0);
+
+ libinput_event_destroy(event);
+ libinput_dispatch(li);
+ }
+
+ litest_touch_up(dev, 0);
+ litest_touch_up(dev, 1);
+ litest_touch_up(dev, 2);
+ libinput_dispatch(li);
+ event = libinput_get_event(li);
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_END,
+ 3);
+ ck_assert(!libinput_event_gesture_get_cancelled(gevent));
+ libinput_event_destroy(event);
+}
+END_TEST
+
+START_TEST(gestures_pinch_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 i;
+ double scale, oldscale;
+ double angle;
+ int cardinals[8][2] = {
+ { 0, 30 },
+ { 30, 30 },
+ { 30, 0 },
+ { 30, -30 },
+ { 0, -30 },
+ { -30, -30 },
+ { -30, 0 },
+ { -30, 30 },
+ };
+
+ if (libevdev_get_num_slots(dev->evdev) > 2 ||
+ !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, 50 + dir_x, 50 + dir_y);
+ litest_touch_down(dev, 1, 50 - dir_x, 50 - dir_y);
+ 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);
+
+ for (i = 0; i < 8; i++) {
+ litest_push_event_frame(dev);
+ if (dir_x > 0.0)
+ dir_x -= 2;
+ else if (dir_x < 0.0)
+ dir_x += 2;
+ if (dir_y > 0.0)
+ dir_y -= 2;
+ else if (dir_y < 0.0)
+ dir_y += 2;
+ litest_touch_move(dev,
+ 0,
+ 50 + dir_x,
+ 50 + dir_y);
+ litest_touch_move(dev,
+ 1,
+ 50 - dir_x,
+ 50 - dir_y);
+ litest_pop_event_frame(dev);
+ libinput_dispatch(li);
+ }
+
+ event = libinput_get_event(li);
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_BEGIN,
+ 3);
+ dx = libinput_event_gesture_get_dx(gevent);
+ dy = libinput_event_gesture_get_dy(gevent);
+ scale = libinput_event_gesture_get_scale(gevent);
+ ck_assert(dx == 0.0);
+ ck_assert(dy == 0.0);
+ ck_assert(scale == 1.0);
+
+ libinput_event_destroy(event);
+
+ while ((event = libinput_get_event(li)) != NULL) {
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_UPDATE,
+ 3);
+
+ oldscale = scale;
+ scale = libinput_event_gesture_get_scale(gevent);
+
+ ck_assert(scale < oldscale);
+
+ angle = libinput_event_gesture_get_angle_delta(gevent);
+ ck_assert_double_le(fabs(angle), 1.0);
+
+ libinput_event_destroy(event);
+ libinput_dispatch(li);
+ }
+
+ 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_PINCH_END,
+ 3);
+ ck_assert(!libinput_event_gesture_get_cancelled(gevent));
+ libinput_event_destroy(event);
+}
+END_TEST
+
+START_TEST(gestures_pinch_4fg)
+{
+ 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;
+ double angle;
+ int cardinals[8][2] = {
+ { 0, 30 },
+ { 30, 30 },
+ { 30, 0 },
+ { 30, -30 },
+ { 0, -30 },
+ { -30, -30 },
+ { -30, 0 },
+ { -30, 30 },
+ };
+
+ if (libevdev_get_num_slots(dev->evdev) < 4)
+ return;
+
+ dir_x = cardinals[cardinal][0];
+ dir_y = cardinals[cardinal][1];
+
+ litest_drain_events(li);
+
+ litest_touch_down(dev, 0, 50 + dir_x, 50 + dir_y);
+ litest_touch_down(dev, 1, 50 - dir_x, 50 - dir_y);
+ litest_touch_down(dev, 2, 51 - dir_x, 51 - dir_y);
+ litest_touch_down(dev, 3, 52 - dir_x, 52 - dir_y);
+ libinput_dispatch(li);
+
+ for (i = 0; i < 8; i++) {
+ litest_push_event_frame(dev);
+ if (dir_x > 0.0)
+ dir_x -= 2;
+ else if (dir_x < 0.0)
+ dir_x += 2;
+ if (dir_y > 0.0)
+ dir_y -= 2;
+ else if (dir_y < 0.0)
+ dir_y += 2;
+ litest_touch_move(dev,
+ 0,
+ 50 + dir_x,
+ 50 + dir_y);
+ litest_touch_move(dev,
+ 1,
+ 50 - dir_x,
+ 50 - dir_y);
+ litest_touch_move(dev,
+ 2,
+ 51 - dir_x,
+ 51 - dir_y);
+ litest_touch_move(dev,
+ 3,
+ 52 - dir_x,
+ 52 - dir_y);
+ litest_pop_event_frame(dev);
+ libinput_dispatch(li);
+ }
+
+ event = libinput_get_event(li);
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_BEGIN,
+ 4);
+ dx = libinput_event_gesture_get_dx(gevent);
+ dy = libinput_event_gesture_get_dy(gevent);
+ scale = libinput_event_gesture_get_scale(gevent);
+ ck_assert(dx == 0.0);
+ ck_assert(dy == 0.0);
+ ck_assert(scale == 1.0);
+
+ libinput_event_destroy(event);
+
+ while ((event = libinput_get_event(li)) != NULL) {
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_UPDATE,
+ 4);
+
+ oldscale = scale;
+ scale = libinput_event_gesture_get_scale(gevent);
+
+ ck_assert(scale < oldscale);
+
+ angle = libinput_event_gesture_get_angle_delta(gevent);
+ ck_assert_double_le(fabs(angle), 1.0);
+
+ libinput_event_destroy(event);
+ libinput_dispatch(li);
+ }
+
+ litest_touch_up(dev, 0);
+ litest_touch_up(dev, 1);
+ litest_touch_up(dev, 2);
+ litest_touch_up(dev, 3);
+ libinput_dispatch(li);
+ event = libinput_get_event(li);
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_END,
+ 4);
+ ck_assert(!libinput_event_gesture_get_cancelled(gevent));
+ libinput_event_destroy(event);
+}
+END_TEST
+
+START_TEST(gestures_pinch_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 i;
+ double scale, oldscale;
+ double angle;
+ int cardinals[8][2] = {
+ { 0, 30 },
+ { 30, 30 },
+ { 30, 0 },
+ { 30, -30 },
+ { 0, -30 },
+ { -30, -30 },
+ { -30, 0 },
+ { -30, 30 },
+ };
+
+ if (libevdev_get_num_slots(dev->evdev) > 2 ||
+ !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, 50 + dir_x, 50 + dir_y);
+ litest_touch_down(dev, 1, 50 - dir_x, 50 - dir_y);
+ 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);
+
+ for (i = 0; i < 8; i++) {
+ litest_push_event_frame(dev);
+ if (dir_x > 0.0)
+ dir_x -= 2;
+ else if (dir_x < 0.0)
+ dir_x += 2;
+ if (dir_y > 0.0)
+ dir_y -= 2;
+ else if (dir_y < 0.0)
+ dir_y += 2;
+ litest_touch_move(dev,
+ 0,
+ 50 + dir_x,
+ 50 + dir_y);
+ litest_touch_move(dev,
+ 1,
+ 50 - dir_x,
+ 50 - dir_y);
+ litest_pop_event_frame(dev);
+ libinput_dispatch(li);
+ }
+
+ event = libinput_get_event(li);
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_BEGIN,
+ 4);
+ dx = libinput_event_gesture_get_dx(gevent);
+ dy = libinput_event_gesture_get_dy(gevent);
+ scale = libinput_event_gesture_get_scale(gevent);
+ ck_assert(dx == 0.0);
+ ck_assert(dy == 0.0);
+ ck_assert(scale == 1.0);
+
+ libinput_event_destroy(event);
+
+ while ((event = libinput_get_event(li)) != NULL) {
+ gevent = litest_is_gesture_event(event,
+ LIBINPUT_EVENT_GESTURE_PINCH_UPDATE,
+ 4);
+
+ oldscale = scale;
+ scale = libinput_event_gesture_get_scale(gevent);
+
+ ck_assert(scale < oldscale);
+
+ angle = libinput_event_gesture_get_angle_delta(gevent);
+ ck_assert_double_le(fabs(angle), 1.0);
+
+ libinput_event_destroy(event);
+ libinput_dispatch(li);
+ }
+
+ 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_PINCH_END,
+ 4);
+ ck_assert(!libinput_event_gesture_get_cancelled(gevent));
+ libinput_event_destroy(event);
+}
+END_TEST
+
+START_TEST(gestures_spread)
+{
+ 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;
+ double angle;
+ int cardinals[8][2] = {
+ { 0, 30 },
+ { 30, 30 },
+ { 30, 0 },
+ { 30, -30 },
+ { 0, -30 },
+ { -30, -30 },
+ { -30, 0 },
+ { -30, 30 },
+ };
+
+ if (libevdev_get_num_slots(dev->evdev) < 2 ||
+ !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, 50 + dir_x, 50 + dir_y);
+ litest_touch_down(dev, 1, 50 - dir_x, 50 - dir_y);
libinput_dispatch(li);
for (i = 0; i < 15; i++) {
@@ -366,18 +1132,17 @@ START_TEST(gestures_time_usec)
litest_drain_events(li);
litest_touch_down(dev, 0, 40, 40);
- litest_touch_down(dev, 1, 40, 50);
- litest_touch_down(dev, 2, 40, 60);
+ 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,
- 40, 50,
- 40, 60,
+ 50, 40,
+ 60, 40,
0, 30,
4, 2);
- litest_wait_for_event(li);
-
+ libinput_dispatch(li);
event = libinput_get_event(li);
gevent = litest_is_gesture_event(event,
LIBINPUT_EVENT_GESTURE_SWIPE_BEGIN,
@@ -398,7 +1163,14 @@ litest_setup_tests(void)
litest_add("gestures:cap", gestures_nocap, LITEST_ANY, LITEST_TOUCHPAD);
litest_add_ranged("gestures:swipe", gestures_swipe_3fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
+ litest_add_ranged("gestures:swipe", gestures_swipe_3fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
+ litest_add_ranged("gestures:swipe", gestures_swipe_4fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
+ litest_add_ranged("gestures:swipe", gestures_swipe_4fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
litest_add_ranged("gestures:pinch", gestures_pinch, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
+ litest_add_ranged("gestures:pinch", gestures_pinch_3fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
+ litest_add_ranged("gestures:pinch", gestures_pinch_3fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
+ litest_add_ranged("gestures:pinch", gestures_pinch_4fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
+ litest_add_ranged("gestures:pinch", gestures_pinch_4fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
litest_add_ranged("gestures:pinch", gestures_spread, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &cardinals);
litest_add("gesture:time", gestures_time_usec, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
diff --git a/test/litest-selftest.c b/test/litest-selftest.c
index 5016514d..47d5ef13 100644
--- a/test/litest-selftest.c
+++ b/test/litest-selftest.c
@@ -169,8 +169,8 @@ START_TEST(litest_ptr_eq_notrigger)
int v = 10;
int *a = &v;
int *b = &v;
- int c = NULL;
- int d = NULL;
+ int *c = NULL;
+ int *d = NULL;
litest_assert_ptr_eq(a, b);
litest_assert_ptr_eq(c, d);
diff --git a/test/litest.c b/test/litest.c
index 3da187cf..99bed061 100644
--- a/test/litest.c
+++ b/test/litest.c
@@ -1588,18 +1588,22 @@ litest_touch_move_two_touches(struct litest_device *d,
int steps, int sleep_ms)
{
for (int i = 0; i < steps - 1; i++) {
+ litest_push_event_frame(d);
litest_touch_move(d, 0, x0 + dx / steps * i,
y0 + dy / steps * i);
litest_touch_move(d, 1, x1 + dx / steps * i,
y1 + dy / steps * i);
+ litest_pop_event_frame(d);
if (sleep_ms) {
libinput_dispatch(d->libinput);
msleep(sleep_ms);
}
libinput_dispatch(d->libinput);
}
+ litest_push_event_frame(d);
litest_touch_move(d, 0, x0 + dx, y0 + dy);
litest_touch_move(d, 1, x1 + dx, y1 + dy);
+ litest_pop_event_frame(d);
}
void
diff --git a/test/litest.h b/test/litest.h
index a272fe3e..99f654af 100644
--- a/test/litest.h
+++ b/test/litest.h
@@ -596,16 +596,6 @@ litest_enable_buttonareas(struct litest_device *dev)
litest_assert_int_eq(status, expected);
}
-static inline int
-litest_is_synaptics_semi_mt(struct litest_device *dev)
-{
- struct libevdev *evdev = dev->evdev;
-
- return libevdev_has_property(evdev, INPUT_PROP_SEMI_MT) &&
- libevdev_get_id_vendor(evdev) == 0x2 &&
- libevdev_get_id_product(evdev) == 0x7;
-}
-
static inline void
litest_enable_drag_lock(struct libinput_device *device)
{
diff --git a/test/touchpad-tap.c b/test/touchpad-tap.c
index 4450ec35..7f23671f 100644
--- a/test/touchpad-tap.c
+++ b/test/touchpad-tap.c
@@ -241,7 +241,7 @@ START_TEST(touchpad_1fg_multitap_n_drag_2fg)
int range = _i,
ntaps;
- if (litest_is_synaptics_semi_mt(dev))
+ if (libevdev_has_property(dev->evdev, INPUT_PROP_SEMI_MT))
return;
litest_enable_tap(dev->libinput_device);
@@ -1782,60 +1782,60 @@ litest_setup_tests(void)
{
struct range multitap_range = {3, 8};
- litest_add("touchpad:tap", touchpad_1fg_tap, LITEST_TOUCHPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_1fg_doubletap, LITEST_TOUCHPAD, LITEST_ANY);
- litest_add_ranged("touchpad:tap", touchpad_1fg_multitap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
- litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
- litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_tap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
- litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_move, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
- litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_2fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &multitap_range);
- litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY, &multitap_range);
- litest_add("touchpad:tap", touchpad_1fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_draglock, LITEST_TOUCHPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_draglock_tap, LITEST_TOUCHPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_draglock_timeout, LITEST_TOUCHPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_2fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_2fg_tap_n_drag_3fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_APPLE_CLICKPAD);
- litest_add("touchpad:tap", touchpad_2fg_tap_n_drag_3fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_2fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
- litest_add("touchpad:tap", touchpad_2fg_tap_inverted, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_2fg_tap_n_hold_first, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_2fg_tap_n_hold_second, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_2fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
- litest_add("touchpad:tap", touchpad_1fg_tap_click, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_CLICKPAD);
- litest_add("touchpad:tap", touchpad_2fg_tap_click, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_SINGLE_TOUCH|LITEST_CLICKPAD);
-
- litest_add("touchpad:tap", touchpad_2fg_tap_click_apple, LITEST_APPLE_CLICKPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_no_2fg_tap_after_move, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
- litest_add("touchpad:tap", touchpad_no_2fg_tap_after_timeout, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
- litest_add("touchpad:tap", touchpad_no_first_fg_tap_after_move, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_no_first_fg_tap_after_move, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_3fg_tap_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_3fg_tap_btntool_inverted, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_3fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_3fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
- litest_add("touchpad:tap", touchpad_4fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
- litest_add("touchpad:tap", touchpad_4fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
- litest_add("touchpad:tap", touchpad_5fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
- litest_add("touchpad:tap", touchpad_5fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
+ litest_add("tap:1fg", touchpad_1fg_tap, LITEST_TOUCHPAD, LITEST_ANY);
+ litest_add("tap:1fg", touchpad_1fg_doubletap, LITEST_TOUCHPAD, LITEST_ANY);
+ litest_add_ranged("tap:1fg", touchpad_1fg_multitap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
+ litest_add_ranged("tap:1fg", touchpad_1fg_multitap_n_drag_timeout, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
+ litest_add_ranged("tap:1fg", touchpad_1fg_multitap_n_drag_tap, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
+ litest_add_ranged("tap:1fg", touchpad_1fg_multitap_n_drag_move, LITEST_TOUCHPAD, LITEST_ANY, &multitap_range);
+ litest_add_ranged("tap:1fg", touchpad_1fg_multitap_n_drag_2fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH, &multitap_range);
+ litest_add_ranged("tap:1fg", touchpad_1fg_multitap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY, &multitap_range);
+ litest_add("tap:1fg", touchpad_1fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_ANY);
+ litest_add("tap:1fg", touchpad_1fg_tap_n_drag_draglock, LITEST_TOUCHPAD, LITEST_ANY);
+ litest_add("tap:1fg", touchpad_1fg_tap_n_drag_draglock_tap, LITEST_TOUCHPAD, LITEST_ANY);
+ litest_add("tap:1fg", touchpad_1fg_tap_n_drag_draglock_timeout, LITEST_TOUCHPAD, LITEST_ANY);
+ litest_add("tap:2fg", touchpad_2fg_tap_n_drag, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:2fg", touchpad_2fg_tap_n_drag_3fg_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_APPLE_CLICKPAD);
+ litest_add("tap:2fg", touchpad_2fg_tap_n_drag_3fg, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:2fg", touchpad_2fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
+ litest_add("tap:2fg", touchpad_2fg_tap_inverted, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:2fg", touchpad_2fg_tap_n_hold_first, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:2fg", touchpad_2fg_tap_n_hold_second, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:2fg", touchpad_2fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
+ litest_add("tap:2fg", touchpad_1fg_tap_click, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_CLICKPAD);
+ litest_add("tap:2fg", touchpad_2fg_tap_click, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_SINGLE_TOUCH|LITEST_CLICKPAD);
+
+ litest_add("tap:2fg", touchpad_2fg_tap_click_apple, LITEST_APPLE_CLICKPAD, LITEST_ANY);
+ litest_add("tap:2fg", touchpad_no_2fg_tap_after_move, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
+ litest_add("tap:2fg", touchpad_no_2fg_tap_after_timeout, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
+ litest_add("tap:2fg", touchpad_no_first_fg_tap_after_move, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:2fg", touchpad_no_first_fg_tap_after_move, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:3fg", touchpad_3fg_tap_btntool, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:3fg", touchpad_3fg_tap_btntool_inverted, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:3fg", touchpad_3fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:3fg", touchpad_3fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH);
+ litest_add("tap:4fg", touchpad_4fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
+ litest_add("tap:4fg", touchpad_4fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
+ litest_add("tap:5fg", touchpad_5fg_tap, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
+ litest_add("tap:5fg", touchpad_5fg_tap_quickrelease, LITEST_TOUCHPAD, LITEST_SINGLE_TOUCH|LITEST_SEMI_MT);
/* Real buttons don't interfere with tapping, so don't run those for
pads with buttons */
- litest_add("touchpad:tap", touchpad_1fg_double_tap_click, LITEST_CLICKPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY);
- litest_add_ranged("touchpad:tap", touchpad_1fg_multitap_n_drag_tap_click, LITEST_CLICKPAD, LITEST_ANY, &multitap_range);
- litest_add("touchpad:tap", touchpad_1fg_tap_n_drag_draglock_tap_click, LITEST_CLICKPAD, LITEST_ANY);
-
- litest_add("touchpad:tap", touchpad_tap_default_disabled, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_tap_default_enabled, LITEST_TOUCHPAD, LITEST_BUTTON);
- litest_add("touchpad:tap", touchpad_tap_invalid, LITEST_TOUCHPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_tap_is_available, LITEST_TOUCHPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_tap_is_not_available, LITEST_ANY, LITEST_TOUCHPAD);
-
- litest_add("touchpad:tap", clickpad_1fg_tap_click, LITEST_CLICKPAD, LITEST_ANY);
- litest_add("touchpad:tap", clickpad_2fg_tap_click, LITEST_CLICKPAD, LITEST_SINGLE_TOUCH|LITEST_APPLE_CLICKPAD);
-
- litest_add("touchpad:tap", touchpad_drag_lock_default_disabled, LITEST_TOUCHPAD, LITEST_ANY);
- litest_add("touchpad:tap", touchpad_drag_lock_default_unavailable, LITEST_ANY, LITEST_TOUCHPAD);
+ litest_add("tap:1fg", touchpad_1fg_double_tap_click, LITEST_CLICKPAD, LITEST_ANY);
+ litest_add("tap:1fg", touchpad_1fg_tap_n_drag_click, LITEST_CLICKPAD, LITEST_ANY);
+ litest_add_ranged("tap:1fg", touchpad_1fg_multitap_n_drag_tap_click, LITEST_CLICKPAD, LITEST_ANY, &multitap_range);
+ litest_add("tap:1fg", touchpad_1fg_tap_n_drag_draglock_tap_click, LITEST_CLICKPAD, LITEST_ANY);
+
+ litest_add("tap:config", touchpad_tap_default_disabled, LITEST_TOUCHPAD|LITEST_BUTTON, LITEST_ANY);
+ litest_add("tap:config", touchpad_tap_default_enabled, LITEST_TOUCHPAD, LITEST_BUTTON);
+ litest_add("tap:config", touchpad_tap_invalid, LITEST_TOUCHPAD, LITEST_ANY);
+ litest_add("tap:config", touchpad_tap_is_available, LITEST_TOUCHPAD, LITEST_ANY);
+ litest_add("tap:config", touchpad_tap_is_not_available, LITEST_ANY, LITEST_TOUCHPAD);
+
+ litest_add("tap:1fg", clickpad_1fg_tap_click, LITEST_CLICKPAD, LITEST_ANY);
+ litest_add("tap:2fg", clickpad_2fg_tap_click, LITEST_CLICKPAD, LITEST_SINGLE_TOUCH|LITEST_APPLE_CLICKPAD);
+
+ litest_add("tap:draglock", touchpad_drag_lock_default_disabled, LITEST_TOUCHPAD, LITEST_ANY);
+ litest_add("tap:draglock", touchpad_drag_lock_default_unavailable, LITEST_ANY, LITEST_TOUCHPAD);
}
diff --git a/test/touchpad.c b/test/touchpad.c
index 4eb94187..c1765493 100644
--- a/test/touchpad.c
+++ b/test/touchpad.c
@@ -289,11 +289,11 @@ START_TEST(touchpad_2fg_scroll_semi_mt)
litest_touch_down(dev, 0, 20, 20);
litest_touch_down(dev, 1, 30, 20);
libinput_dispatch(li);
- litest_touch_move_to(dev, 1, 30, 20, 30, 70, 10, 5);
-
- litest_assert_empty_queue(li);
-
- litest_touch_move_to(dev, 0, 20, 20, 20, 70, 10, 5);
+ litest_touch_move_two_touches(dev,
+ 20, 20,
+ 30, 20,
+ 30, 40,
+ 10, 1);
litest_assert_only_typed_events(li, LIBINPUT_EVENT_POINTER_AXIS);
}