[PATCH libinput 21/23] test: Add motion event test for tablets
Peter Hutterer
peter.hutterer at who-t.net
Sun Jun 15 22:37:35 PDT 2014
On Thu, Jun 12, 2014 at 11:28:42PM -0400, Stephen Chandler Paul wrote:
> Based off the patch originally written by Carlos Garnacho
>
> Signed-off-by: Stephen Chandler Paul <thatslyude at gmail.com>
> ---
> test/tablet.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 64 insertions(+), 1 deletion(-)
>
> diff --git a/test/tablet.c b/test/tablet.c
> index 9c5397f..80a70c8 100644
> --- a/test/tablet.c
> +++ b/test/tablet.c
> @@ -130,7 +130,8 @@ START_TEST(proximity_in_out)
> int has_changed;
> double value;
>
> - has_changed = libinput_event_tablet_axis_has_changed(
> + has_changed =
> + libinput_event_tablet_axis_has_changed(
> tablet_event, a);
> value = libinput_event_tablet_get_axis_value(
> tablet_event, a);
drop this hunk please.
> @@ -219,11 +220,73 @@ START_TEST(proximity_out_clear_buttons)
> }
> END_TEST
>
> +START_TEST(motion)
> +{
> + struct litest_device *dev = litest_current_device();
> + struct libinput *li = dev->libinput;
> + struct libinput_event_tablet *tablet_event;
> + struct libinput_event *event;
> + double x1, x2, y1, y2;
> + bool have_motion = false;
> + enum libinput_event_type type;
> + struct axis_replacement axes[] = {
> + { ABS_DISTANCE, 10 },
> + { -1, -1 }
> + };
> +
> + litest_drain_events(dev->libinput);
> +
> + litest_tablet_proximity_in(dev, 10, 10, axes);
> + libinput_dispatch(li);
> +
> + while ((event = libinput_get_event(li))) {
> + tablet_event = libinput_event_get_tablet_event(event);
> + type = libinput_event_get_type(event);
> +
> + if (type == LIBINPUT_EVENT_TABLET_AXIS &&
> + libinput_event_tablet_axis_has_changed(tablet_event,
> + LIBINPUT_TABLET_AXIS_X) &&
> + libinput_event_tablet_axis_has_changed(tablet_event,
> + LIBINPUT_TABLET_AXIS_Y)) {
> + x1 = libinput_event_tablet_get_axis_value(
> + tablet_event, LIBINPUT_TABLET_AXIS_X);
> + y1 = libinput_event_tablet_get_axis_value(
> + tablet_event, LIBINPUT_TABLET_AXIS_Y);
> +
> + have_motion = true;
> + }
> +
> + libinput_event_destroy(event);
> + }
> + ck_assert(have_motion);
wrap the below in a loop to run it a number of times, making sure that
x2/y2 keep increasing. Or event better, increase one, decrease the other to
avoid accidental bugs where we assign x to y.
Cheers,
Peter
> +
> + litest_tablet_motion(dev, 20, 20, axes);
> + libinput_dispatch(li);
> +
> + while ((event = libinput_get_event(li))) {
> + tablet_event = libinput_event_get_tablet_event(event);
> + type = libinput_event_get_type(event);
> +
> + if (type == LIBINPUT_EVENT_TABLET_AXIS) {
> + x2 = libinput_event_tablet_get_axis_value(
> + tablet_event, LIBINPUT_TABLET_AXIS_X);
> + y2 = libinput_event_tablet_get_axis_value(
> + tablet_event, LIBINPUT_TABLET_AXIS_Y);
> + }
> +
> + libinput_event_destroy(event);
> + }
> + litest_assert_double_lt(x1, x2);
> + litest_assert_double_lt(y1, y2);
> +}
> +END_TEST
> +
> int
> main(int argc, char **argv)
> {
> litest_add("tablet:proximity-out-clear-buttons", proximity_out_clear_buttons, LITEST_TABLET, LITEST_ANY);
> litest_add("tablet:proximity-in-out", proximity_in_out, LITEST_TABLET, LITEST_ANY);
> + litest_add("tablet:motion", motion, LITEST_TABLET, LITEST_ANY);
>
> return litest_run(argc, argv);
> }
> --
> 1.8.5.5
>
More information about the wayland-devel
mailing list