diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2017-08-28 12:03:54 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2017-08-28 14:25:17 +1000 |
commit | 32a671edcf35c6a5450fd850411ec6384588f397 (patch) | |
tree | 634d6697ee78ef3e1f69fbd7e167cc7f74967208 /test/test-touch.c | |
parent | 7d97bb008789448cdd80eceac0d4072ce05e4006 (diff) |
test: add a test for removing a touch device with a finger still down
https://bugs.freedesktop.org/show_bug.cgi?id=102385
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'test/test-touch.c')
-rw-r--r-- | test/test-touch.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/test-touch.c b/test/test-touch.c index c9f78d11..b3a6d0a0 100644 --- a/test/test-touch.c +++ b/test/test-touch.c @@ -911,6 +911,40 @@ START_TEST(touch_fuzz) } END_TEST +START_TEST(touch_release_on_unplug) +{ + struct litest_device *dev; + struct libinput *li; + struct libinput_event *ev; + + li = litest_create_context(); + dev = litest_add_device(li, LITEST_GENERIC_MULTITOUCH_SCREEN); + litest_drain_events(li); + + litest_touch_down(dev, 0, 50, 50); + litest_touch_move_to(dev, 0, 50, 50, 70, 70, 10, 1); + litest_drain_events(li); + + /* Touch is still down when device is removed, espect a release */ + litest_delete_device(dev); + libinput_dispatch(li); + + ev = libinput_get_event(li); + litest_is_touch_event(ev, LIBINPUT_EVENT_TOUCH_UP); + libinput_event_destroy(ev); + + ev = libinput_get_event(li); + litest_is_touch_event(ev, LIBINPUT_EVENT_TOUCH_FRAME); + libinput_event_destroy(ev); + + ev = libinput_get_event(li); + litest_assert_event_type(ev, LIBINPUT_EVENT_DEVICE_REMOVED); + libinput_event_destroy(ev); + + libinput_unref(li); +} +END_TEST + void litest_setup_tests_touch(void) { @@ -944,4 +978,6 @@ litest_setup_tests_touch(void) litest_add("touch:time", touch_time_usec, LITEST_TOUCH, LITEST_TOUCHPAD); litest_add_for_device("touch:fuzz", touch_fuzz, LITEST_MULTITOUCH_FUZZ_SCREEN); + + litest_add_no_device("touch:release", touch_release_on_unplug); } |