tablet: tighten the test for tablet button releases on proximity out

Make sure we check the expected sequence more stringent and change the x/y
coordinates on prox in so the kernel doesn't filter them.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2019-04-08 10:17:23 +10:00
parent 2cdda41a3b
commit f45a8c9ed7

View file

@ -1050,19 +1050,20 @@ START_TEST(proximity_out_clear_buttons)
struct libinput_event_tablet_tool *tablet_event;
struct libinput_event *event;
uint32_t button;
struct axis_replacement axes[] = {
{ ABS_DISTANCE, 10 },
{ ABS_PRESSURE, 0 },
{ -1, -1 }
};
bool have_proximity = false;
double x = 50, y = 50;
litest_drain_events(li);
/* Test that proximity out events send button releases for any currently
* pressed stylus buttons
*/
for (button = BTN_TOUCH + 1; button <= BTN_STYLUS2; button++) {
for (button = BTN_STYLUS; button <= BTN_STYLUS2; button++) {
bool button_released = false;
uint32_t event_button = 0;
enum libinput_button_state state;
@ -1070,7 +1071,9 @@ START_TEST(proximity_out_clear_buttons)
if (!libevdev_has_event_code(dev->evdev, EV_KEY, button))
continue;
litest_tablet_proximity_in(dev, 10, 10, axes);
litest_tablet_proximity_in(dev, x++, y++, axes);
litest_drain_events(li);
litest_event(dev, EV_KEY, button, 1);
litest_event(dev, EV_SYN, SYN_REPORT, 0);
litest_tablet_proximity_out(dev);
@ -1079,9 +1082,17 @@ START_TEST(proximity_out_clear_buttons)
litest_timeout_tablet_proxout();
libinput_dispatch(li);
while ((event = libinput_get_event(li))) {
event = libinput_get_event(li);
ck_assert_notnull(event);
do {
tablet_event = libinput_event_get_tablet_tool_event(event);
if (libinput_event_get_type(event) ==
LIBINPUT_EVENT_TABLET_TOOL_PROXIMITY) {
have_proximity = true;
break;
}
if (libinput_event_get_type(event) ==
LIBINPUT_EVENT_TABLET_TOOL_BUTTON) {
@ -1094,15 +1105,15 @@ START_TEST(proximity_out_clear_buttons)
}
libinput_event_destroy(event);
}
} while ((event = libinput_get_event(li)));
ck_assert_msg(button_released,
"Button %s (%d) was not released.",
libevdev_event_code_get_name(EV_KEY, button),
event_button);
litest_assert(have_proximity);
litest_assert_empty_queue(li);
}
litest_assert_empty_queue(li);
}
END_TEST