test: fix the tip one axis test

Only worked because of axis smoothing mangling the coordinates - x is not
supposed to change where we're moving along a vertical line. And the same for
y and horizontal lines.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2020-10-08 12:44:10 +10:00
parent 546b7623a3
commit b121c350db

View file

@ -635,19 +635,42 @@ START_TEST(tip_up_motion_one_axis)
};
unsigned int axis = _i; /* ranged test */
double x, y, last_x, last_y;
double start_x = 20,
start_y = 20;
litest_tablet_proximity_in(dev, 10, 10, axes);
litest_drain_events(li);
switch (axis) {
case ABS_X:
start_x = 15;
start_y = 20;
break;
case ABS_Y:
start_x = 20;
start_y = 15;
break;
default:
abort();
}
/* enough events to get the history going */
/* generate enough events to fill the history and move alonge the
* current axis to avoid axis smoothing interference */
litest_tablet_proximity_in(dev, start_x, start_y, axes);
litest_axis_set_value(axes, ABS_PRESSURE, 20);
for (int i = 1; i < 10; i++) {
for (int i = 0; i < 5; i++) {
litest_push_event_frame(dev);
litest_tablet_motion(dev, 10 + i, 10 + i, axes);
litest_tablet_motion(dev, start_x, start_y, axes);
litest_event(dev, EV_KEY, BTN_TOUCH, 1);
litest_event(dev, EV_SYN, SYN_REPORT, 0);
litest_pop_event_frame(dev);
switch (axis) {
case ABS_X:
start_x++;
break;
case ABS_Y:
start_y++;
break;
}
}
litest_drain_events(li);
@ -670,8 +693,6 @@ START_TEST(tip_up_motion_one_axis)
case ABS_Y:
litest_tablet_motion(dev, 20, 40, axes);
break;
default:
abort();
}
litest_event(dev, EV_KEY, BTN_TOUCH, 0);
litest_pop_event_frame(dev);
@ -682,12 +703,24 @@ START_TEST(tip_up_motion_one_axis)
LIBINPUT_EVENT_TABLET_TOOL_TIP);
ck_assert_int_eq(libinput_event_tablet_tool_get_tip_state(tablet_event),
LIBINPUT_TABLET_TOOL_TIP_UP);
ck_assert(libinput_event_tablet_tool_x_has_changed(tablet_event));
ck_assert(libinput_event_tablet_tool_y_has_changed(tablet_event));
x = libinput_event_tablet_tool_get_x(tablet_event);
y = libinput_event_tablet_tool_get_y(tablet_event);
ck_assert_double_ne(last_x, x);
ck_assert_double_ne(last_y, y);
switch(axis) {
case ABS_X:
ck_assert(libinput_event_tablet_tool_x_has_changed(tablet_event));
ck_assert(!libinput_event_tablet_tool_y_has_changed(tablet_event));
ck_assert_double_ne(last_x, x);
ck_assert_double_eq(last_y, y);
break;
case ABS_Y:
ck_assert(!libinput_event_tablet_tool_x_has_changed(tablet_event));
ck_assert(libinput_event_tablet_tool_y_has_changed(tablet_event));
ck_assert_double_eq(last_x, x);
ck_assert_double_ne(last_y, y);
break;
}
libinput_event_destroy(event);
litest_assert_empty_queue(li);