---
 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))) {
+               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);
+       }
+}
+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

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to