[PATCH libinput 8/8] tablet: Add tests for axes on proximity events

Peter Hutterer peter.hutterer at who-t.net
Tue Feb 17 15:22:21 PST 2015


On Mon, Feb 16, 2015 at 10:48:46PM -0500, Stephen Chandler Paul wrote:
> ---
>  test/tablet.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 77 insertions(+)
> 
> diff --git a/test/tablet.c b/test/tablet.c
> index 8074e4e..bf78e12 100644
> --- a/test/tablet.c
> +++ b/test/tablet.c
> @@ -154,6 +154,82 @@ START_TEST(proximity_out_clear_buttons)
>  }
>  END_TEST
>  
> +START_TEST(proximity_has_axes)
> +{
> +	struct litest_device *dev = litest_current_device();
> +	struct libinput *li = dev->libinput;
> +	struct libinput_event_tablet *tablet_event;
> +	struct libinput_event *event;
> +	struct libinput_tool *tool;
> +	double x, y,
> +	       distance;
> +
> +	struct axis_replacement axes[] = {
> +		{ ABS_DISTANCE, 10 },
> +		{ ABS_TILT_X, 10 },
> +		{ ABS_TILT_Y, 10 },
> +		{ -1, -1}
> +	};
> +
> +	litest_drain_events(dev->libinput);
> +
> +	litest_tablet_proximity_in(dev, 10, 10, axes);
> +
> +	litest_wait_for_event_of_type(li, LIBINPUT_EVENT_TABLET_PROXIMITY, -1);
> +
> +	while ((event = libinput_get_event(li))) {

we only expect one event here, so you can drop the loop and finish with a
litest_assert_empty_queue().

> +		tablet_event = libinput_event_get_tablet_event(event);
> +		tool = libinput_event_tablet_get_tool(tablet_event);
> +
> +		ck_assert(libinput_event_tablet_axis_has_changed(
> +				tablet_event, LIBINPUT_TABLET_AXIS_X));
> +		ck_assert(libinput_event_tablet_axis_has_changed(
> +				tablet_event, LIBINPUT_TABLET_AXIS_Y));
> +
> +		x = libinput_event_tablet_get_axis_value(tablet_event,
> +							 LIBINPUT_TABLET_AXIS_X);
> +		y = libinput_event_tablet_get_axis_value(tablet_event,
> +							 LIBINPUT_TABLET_AXIS_Y);
> +
> +		litest_assert_double_ne(x, 0);
> +		litest_assert_double_ne(y, 0);
> +
> +		if (libinput_tool_has_axis(tool, LIBINPUT_TABLET_AXIS_DISTANCE)) {
> +			ck_assert(libinput_event_tablet_axis_has_changed(
> +					tablet_event,
> +					LIBINPUT_TABLET_AXIS_DISTANCE));
> +
> +			distance = libinput_event_tablet_get_axis_value(
> +					tablet_event,
> +					LIBINPUT_TABLET_AXIS_DISTANCE);
> +			litest_assert_double_ne(distance, 0);
> +		}
> +
> +		if (libinput_tool_has_axis(tool, LIBINPUT_TABLET_AXIS_TILT_X) &&
> +		    libinput_tool_has_axis(tool, LIBINPUT_TABLET_AXIS_TILT_Y)) {
> +			ck_assert(libinput_event_tablet_axis_has_changed(
> +					tablet_event,
> +					LIBINPUT_TABLET_AXIS_TILT_X));
> +			ck_assert(libinput_event_tablet_axis_has_changed(
> +					tablet_event,
> +					LIBINPUT_TABLET_AXIS_TILT_Y));
> +
> +			x = libinput_event_tablet_get_axis_value(
> +				tablet_event,
> +				LIBINPUT_TABLET_AXIS_TILT_X);
> +			y = libinput_event_tablet_get_axis_value(
> +				tablet_event,
> +				LIBINPUT_TABLET_AXIS_TILT_Y);
> +
> +			litest_assert_double_ne(x, 0);
> +			litest_assert_double_ne(y, 0);
> +		}
> +
> +		libinput_event_destroy(event);
> +	}

and we should add a check that all axes are present (and marked as not
changed) in the proximity out event

pls send an updated version for this patch, I've merged all the others
locally and will push them asap.

Cheers,
   Peter

> +}
> +END_TEST
> +
>  START_TEST(motion)
>  {
>  	struct litest_device *dev = litest_current_device();
> @@ -983,6 +1059,7 @@ main(int argc, char **argv)
>  	litest_add_no_device("tablet:tool_serial", tools_without_serials);
>  	litest_add("tablet:proximity", proximity_out_clear_buttons, LITEST_TABLET, LITEST_ANY);
>  	litest_add("tablet:proximity", proximity_in_out, LITEST_TABLET, LITEST_ANY);
> +	litest_add("tablet:proximity", proximity_has_axes, LITEST_TABLET, LITEST_ANY);
>  	litest_add("tablet:proximity", bad_distance_events, LITEST_TABLET | LITEST_DISTANCE, LITEST_ANY);
>  	litest_add("tablet:motion", motion, LITEST_TABLET, LITEST_ANY);
>  	litest_add("tablet:motion", motion_event_state, LITEST_TABLET, LITEST_ANY);
> -- 
> 1.9.5
> 


More information about the wayland-devel mailing list