[PATCH libinput] test: add another hover test
Hans de Goede
hdegoede at redhat.com
Fri Jan 9 03:39:23 PST 2015
Hi,
On 07-01-15 01:18, Peter Hutterer wrote:
> Release one touch point at the same time as a fake touch.
>
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
> I'll squash it in with the other tests before merging but for easier review
> it's separate here. This tests for the scenario Hans pointed out with one
> touch ending as we switch to hover.
Thanks for adding this, one small comment inline, with that fixed:
Reviewed-by: Hans de Goede <hdegoede at redhat.com>
>
> test/touchpad.c | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 69 insertions(+)
>
> diff --git a/test/touchpad.c b/test/touchpad.c
> index bd85a06..f104c1c 100644
> --- a/test/touchpad.c
> +++ b/test/touchpad.c
> @@ -2424,6 +2424,74 @@ START_TEST(touchpad_hover_down_hover_down)
> }
> END_TEST
>
> +START_TEST(touchpad_hover_down_up)
> +{
> + struct litest_device *dev = litest_current_device();
> + struct libinput *li = dev->libinput;
> + int i;
> + int x = 1400,
> + y = 1400;
> +
> + litest_drain_events(li);
> +
> + /* hover two fingers, then touch */
> + hover_start(dev, 0, x, y);
> + litest_event(dev, EV_KEY, BTN_TOOL_FINGER, 1);
> + litest_event(dev, EV_SYN, SYN_REPORT, 0);
> + litest_assert_empty_queue(li);
> +
> + hover_start(dev, 1, x, y);
> + litest_event(dev, EV_KEY, BTN_TOOL_FINGER, 0);
> + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 1);
> + litest_event(dev, EV_SYN, SYN_REPORT, 0);
> + litest_assert_empty_queue(li);
> +
> + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0);
> + litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 1);
> + litest_event(dev, EV_KEY, BTN_TOUCH, 1);
> + litest_event(dev, EV_SYN, SYN_REPORT, 0);
> +
> + litest_assert_empty_queue(li);
> +
> + /* hover first finger, end second in same frame */
> + litest_event(dev, EV_ABS, ABS_MT_SLOT, 1);
> + litest_event(dev, EV_ABS, ABS_MT_TRACKING_ID, -1);
> + litest_event(dev, EV_KEY, BTN_TOOL_DOUBLETAP, 0);
Double tap already is 0, no need to release it again.
> + litest_event(dev, EV_KEY, BTN_TOOL_TRIPLETAP, 0);
> + litest_event(dev, EV_KEY, BTN_TOOL_FINGER, 1);
> + litest_event(dev, EV_KEY, BTN_TOUCH, 0);
> + litest_event(dev, EV_SYN, SYN_REPORT, 0);
> +
> + litest_assert_empty_queue(li);
> +
> + litest_event(dev, EV_KEY, BTN_TOUCH, 1);
> + litest_event(dev, EV_SYN, SYN_REPORT, 0);
> + libinput_dispatch(li);
> +
> + /* now move the finger */
> + for (i = 0; i < 10; i++) {
> + litest_event(dev, EV_ABS, ABS_MT_SLOT, 0);
> + litest_event(dev, EV_ABS, ABS_MT_POSITION_X, x);
> + litest_event(dev, EV_ABS, ABS_MT_POSITION_Y, y);
> + litest_event(dev, EV_ABS, ABS_X, x);
> + litest_event(dev, EV_ABS, ABS_Y, y);
> + litest_event(dev, EV_SYN, SYN_REPORT, 0);
> + x -= 100;
> + y -= 100;
> + }
> +
> + litest_assert_only_typed_events(li,
> + LIBINPUT_EVENT_POINTER_MOTION);
> +
> + litest_event(dev, EV_ABS, ABS_MT_SLOT, 0);
> + litest_event(dev, EV_ABS, ABS_MT_TRACKING_ID, -1);
> + litest_event(dev, EV_KEY, BTN_TOOL_FINGER, 0);
> + litest_event(dev, EV_KEY, BTN_TOUCH, 0);
> + litest_event(dev, EV_SYN, SYN_REPORT, 0);
> + libinput_dispatch(li);
> +}
> +END_TEST
> +
> START_TEST(touchpad_hover_2fg_noevent)
> {
> struct litest_device *dev = litest_current_device();
> @@ -2609,6 +2677,7 @@ int main(int argc, char **argv) {
> * ignore the semi-mt capability (it doesn't matter for the tests */
> litest_add_for_device("touchpad:hover", touchpad_hover_noevent, LITEST_SYNAPTICS_HOVER_SEMI_MT);
> litest_add_for_device("touchpad:hover", touchpad_hover_down, LITEST_SYNAPTICS_HOVER_SEMI_MT);
> + litest_add_for_device("touchpad:hover", touchpad_hover_down_up, LITEST_SYNAPTICS_HOVER_SEMI_MT);
> litest_add_for_device("touchpad:hover", touchpad_hover_down_hover_down, LITEST_SYNAPTICS_HOVER_SEMI_MT);
> litest_add_for_device("touchpad:hover", touchpad_hover_2fg_noevent, LITEST_SYNAPTICS_HOVER_SEMI_MT);
> litest_add_for_device("touchpad:hover", touchpad_hover_2fg_1fg_down, LITEST_SYNAPTICS_HOVER_SEMI_MT);
>
Regards,
Hans
More information about the wayland-devel
mailing list