tests: Move wl_pointer tests to their own file
authorAlexandros Frantzis <alexandros.frantzis@collabora.com>
Mon, 4 Dec 2017 13:34:03 +0000 (15:34 +0200)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Tue, 12 Dec 2017 10:17:08 +0000 (12:17 +0200)
Move wl_pointer tests from event-test.c to their own pointer-test.c
file. This move makes the test organization clearer and more consistent,
and will make addition of further pointer tests easier.

Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Makefile.am
tests/button-test.c [deleted file]
tests/event-test.c
tests/pointer-test.c [new file with mode: 0644]

index a7ec60b..7adc625 100644 (file)
@@ -1226,7 +1226,7 @@ weston_tests =                                    \
        bad_buffer.weston                       \
        keyboard.weston                         \
        event.weston                            \
-       button.weston                           \
+       pointer.weston                          \
        text.weston                             \
        presentation.weston                     \
        viewporter.weston                       \
@@ -1383,9 +1383,9 @@ event_weston_SOURCES = tests/event-test.c
 event_weston_CFLAGS = $(AM_CFLAGS) $(TEST_CLIENT_CFLAGS)
 event_weston_LDADD = libtest-client.la
 
-button_weston_SOURCES = tests/button-test.c
-button_weston_CFLAGS = $(AM_CFLAGS) $(TEST_CLIENT_CFLAGS)
-button_weston_LDADD = libtest-client.la
+pointer_weston_SOURCES = tests/pointer-test.c
+pointer_weston_CFLAGS = $(AM_CFLAGS) $(TEST_CLIENT_CFLAGS)
+pointer_weston_LDADD = libtest-client.la
 
 devices_weston_SOURCES = tests/devices-test.c
 devices_weston_CFLAGS = $(AM_CFLAGS) $(TEST_CLIENT_CFLAGS)
diff --git a/tests/button-test.c b/tests/button-test.c
deleted file mode 100644 (file)
index afa6320..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include "config.h"
-
-#include <linux/input.h>
-
-#include "weston-test-client-helper.h"
-
-TEST(simple_button_test)
-{
-       struct client *client;
-       struct pointer *pointer;
-
-       client = create_client_and_test_surface(100, 100, 100, 100);
-       assert(client);
-
-       pointer = client->input->pointer;
-
-       assert(pointer->button == 0);
-       assert(pointer->state == 0);
-
-       weston_test_move_pointer(client->test->weston_test, 150, 150);
-       client_roundtrip(client);
-       assert(pointer->x == 50);
-       assert(pointer->y == 50);
-
-       weston_test_send_button(client->test->weston_test, BTN_LEFT,
-                           WL_POINTER_BUTTON_STATE_PRESSED);
-       client_roundtrip(client);
-       assert(pointer->button == BTN_LEFT);
-       assert(pointer->state == WL_POINTER_BUTTON_STATE_PRESSED);
-
-       weston_test_send_button(client->test->weston_test, BTN_LEFT,
-                           WL_POINTER_BUTTON_STATE_RELEASED);
-       client_roundtrip(client);
-       assert(pointer->button == BTN_LEFT);
-       assert(pointer->state == WL_POINTER_BUTTON_STATE_RELEASED);
-}
index 64dd7a0..c1ba3ac 100644 (file)
 
 #include "weston-test-client-helper.h"
 
-static void
-check_pointer(struct client *client, int x, int y)
-{
-       int sx, sy;
-
-       /* check that the client got the global pointer update */
-       assert(client->test->pointer_x == x);
-       assert(client->test->pointer_y == y);
-
-       /* Does global pointer map onto the surface? */
-       if (surface_contains(client->surface, x, y)) {
-               /* check that the surface has the pointer focus */
-               assert(client->input->pointer->focus == client->surface);
-
-               /*
-                * check that the local surface pointer maps
-                * to the global pointer.
-                */
-               sx = client->input->pointer->x + client->surface->x;
-               sy = client->input->pointer->y + client->surface->y;
-               assert(sx == x);
-               assert(sy == y);
-       } else {
-               /*
-                * The global pointer does not map onto surface.  So
-                * check that it doesn't have the pointer focus.
-                */
-               assert(client->input->pointer->focus == NULL);
-       }
-}
-
-static void
-check_pointer_move(struct client *client, int x, int y)
-{
-       weston_test_move_pointer(client->test->weston_test, x, y);
-       client_roundtrip(client);
-       check_pointer(client, x, y);
-}
-
-TEST(test_pointer_top_left)
-{
-       struct client *client;
-       int x, y;
-
-       client = create_client_and_test_surface(46, 76, 111, 134);
-       assert(client);
-
-       /* move pointer outside top left */
-       x = client->surface->x - 1;
-       y = client->surface->y - 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer on top left */
-       x += 1; y += 1;
-       assert(surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer outside top left */
-       x -= 1; y -= 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-}
-
-TEST(test_pointer_bottom_left)
-{
-       struct client *client;
-       int x, y;
-
-       client = create_client_and_test_surface(99, 100, 100, 98);
-       assert(client);
-
-       /* move pointer outside bottom left */
-       x = client->surface->x - 1;
-       y = client->surface->y + client->surface->height;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer on bottom left */
-       x += 1; y -= 1;
-       assert(surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer outside bottom left */
-       x -= 1; y += 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-}
-
-TEST(test_pointer_top_right)
-{
-       struct client *client;
-       int x, y;
-
-       client = create_client_and_test_surface(48, 100, 67, 100);
-       assert(client);
-
-       /* move pointer outside top right */
-       x = client->surface->x + client->surface->width;
-       y = client->surface->y - 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer on top right */
-       x -= 1; y += 1;
-       assert(surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer outside top right */
-       x += 1; y -= 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-}
-
-TEST(test_pointer_bottom_right)
-{
-       struct client *client;
-       int x, y;
-
-       client = create_client_and_test_surface(100, 123, 100, 69);
-       assert(client);
-
-       /* move pointer outside bottom right */
-       x = client->surface->x + client->surface->width;
-       y = client->surface->y + client->surface->height;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer on bottom right */
-       x -= 1; y -= 1;
-       assert(surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer outside bottom right */
-       x += 1; y += 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-}
-
-TEST(test_pointer_top_center)
-{
-       struct client *client;
-       int x, y;
-
-       client = create_client_and_test_surface(100, 201, 100, 50);
-       assert(client);
-
-       /* move pointer outside top center */
-       x = client->surface->x + client->surface->width/2;
-       y = client->surface->y - 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer on top center */
-       y += 1;
-       assert(surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer outside top center */
-       y -= 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-}
-
-TEST(test_pointer_bottom_center)
-{
-       struct client *client;
-       int x, y;
-
-       client = create_client_and_test_surface(100, 45, 67, 100);
-       assert(client);
-
-       /* move pointer outside bottom center */
-       x = client->surface->x + client->surface->width/2;
-       y = client->surface->y + client->surface->height;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer on bottom center */
-       y -= 1;
-       assert(surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer outside bottom center */
-       y += 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-}
-
-TEST(test_pointer_left_center)
-{
-       struct client *client;
-       int x, y;
-
-       client = create_client_and_test_surface(167, 45, 78, 100);
-       assert(client);
-
-       /* move pointer outside left center */
-       x = client->surface->x - 1;
-       y = client->surface->y + client->surface->height/2;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer on left center */
-       x += 1;
-       assert(surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer outside left center */
-       x -= 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-}
-
-TEST(test_pointer_right_center)
-{
-       struct client *client;
-       int x, y;
-
-       client = create_client_and_test_surface(110, 37, 100, 46);
-       assert(client);
-
-       /* move pointer outside right center */
-       x = client->surface->x + client->surface->width;
-       y = client->surface->y + client->surface->height/2;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer on right center */
-       x -= 1;
-       assert(surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-
-       /* move pointer outside right center */
-       x += 1;
-       assert(!surface_contains(client->surface, x, y));
-       check_pointer_move(client, x, y);
-}
-
-TEST(test_pointer_surface_move)
-{
-       struct client *client;
-
-       client = create_client_and_test_surface(100, 100, 100, 100);
-       assert(client);
-
-       /* move pointer outside of client */
-       assert(!surface_contains(client->surface, 50, 50));
-       check_pointer_move(client, 50, 50);
-
-       /* move client center to pointer */
-       move_client(client, 0, 0);
-       assert(surface_contains(client->surface, 50, 50));
-       check_pointer(client, 50, 50);
-}
-
 static int
 output_contains_client(struct client *client)
 {
diff --git a/tests/pointer-test.c b/tests/pointer-test.c
new file mode 100644 (file)
index 0000000..d0b85f5
--- /dev/null
@@ -0,0 +1,318 @@
+/*
+ * Copyright © 2012 Intel Corporation
+ * Copyright © 2013 Collabora, Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include "config.h"
+
+#include <linux/input.h>
+
+#include "weston-test-client-helper.h"
+
+static void
+check_pointer(struct client *client, int x, int y)
+{
+       int sx, sy;
+
+       /* check that the client got the global pointer update */
+       assert(client->test->pointer_x == x);
+       assert(client->test->pointer_y == y);
+
+       /* Does global pointer map onto the surface? */
+       if (surface_contains(client->surface, x, y)) {
+               /* check that the surface has the pointer focus */
+               assert(client->input->pointer->focus == client->surface);
+
+               /*
+                * check that the local surface pointer maps
+                * to the global pointer.
+                */
+               sx = client->input->pointer->x + client->surface->x;
+               sy = client->input->pointer->y + client->surface->y;
+               assert(sx == x);
+               assert(sy == y);
+       } else {
+               /*
+                * The global pointer does not map onto surface.  So
+                * check that it doesn't have the pointer focus.
+                */
+               assert(client->input->pointer->focus == NULL);
+       }
+}
+
+static void
+check_pointer_move(struct client *client, int x, int y)
+{
+       weston_test_move_pointer(client->test->weston_test, x, y);
+       client_roundtrip(client);
+       check_pointer(client, x, y);
+}
+
+TEST(test_pointer_top_left)
+{
+       struct client *client;
+       int x, y;
+
+       client = create_client_and_test_surface(46, 76, 111, 134);
+       assert(client);
+
+       /* move pointer outside top left */
+       x = client->surface->x - 1;
+       y = client->surface->y - 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer on top left */
+       x += 1; y += 1;
+       assert(surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer outside top left */
+       x -= 1; y -= 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+}
+
+TEST(test_pointer_bottom_left)
+{
+       struct client *client;
+       int x, y;
+
+       client = create_client_and_test_surface(99, 100, 100, 98);
+       assert(client);
+
+       /* move pointer outside bottom left */
+       x = client->surface->x - 1;
+       y = client->surface->y + client->surface->height;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer on bottom left */
+       x += 1; y -= 1;
+       assert(surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer outside bottom left */
+       x -= 1; y += 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+}
+
+TEST(test_pointer_top_right)
+{
+       struct client *client;
+       int x, y;
+
+       client = create_client_and_test_surface(48, 100, 67, 100);
+       assert(client);
+
+       /* move pointer outside top right */
+       x = client->surface->x + client->surface->width;
+       y = client->surface->y - 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer on top right */
+       x -= 1; y += 1;
+       assert(surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer outside top right */
+       x += 1; y -= 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+}
+
+TEST(test_pointer_bottom_right)
+{
+       struct client *client;
+       int x, y;
+
+       client = create_client_and_test_surface(100, 123, 100, 69);
+       assert(client);
+
+       /* move pointer outside bottom right */
+       x = client->surface->x + client->surface->width;
+       y = client->surface->y + client->surface->height;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer on bottom right */
+       x -= 1; y -= 1;
+       assert(surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer outside bottom right */
+       x += 1; y += 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+}
+
+TEST(test_pointer_top_center)
+{
+       struct client *client;
+       int x, y;
+
+       client = create_client_and_test_surface(100, 201, 100, 50);
+       assert(client);
+
+       /* move pointer outside top center */
+       x = client->surface->x + client->surface->width/2;
+       y = client->surface->y - 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer on top center */
+       y += 1;
+       assert(surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer outside top center */
+       y -= 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+}
+
+TEST(test_pointer_bottom_center)
+{
+       struct client *client;
+       int x, y;
+
+       client = create_client_and_test_surface(100, 45, 67, 100);
+       assert(client);
+
+       /* move pointer outside bottom center */
+       x = client->surface->x + client->surface->width/2;
+       y = client->surface->y + client->surface->height;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer on bottom center */
+       y -= 1;
+       assert(surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer outside bottom center */
+       y += 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+}
+
+TEST(test_pointer_left_center)
+{
+       struct client *client;
+       int x, y;
+
+       client = create_client_and_test_surface(167, 45, 78, 100);
+       assert(client);
+
+       /* move pointer outside left center */
+       x = client->surface->x - 1;
+       y = client->surface->y + client->surface->height/2;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer on left center */
+       x += 1;
+       assert(surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer outside left center */
+       x -= 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+}
+
+TEST(test_pointer_right_center)
+{
+       struct client *client;
+       int x, y;
+
+       client = create_client_and_test_surface(110, 37, 100, 46);
+       assert(client);
+
+       /* move pointer outside right center */
+       x = client->surface->x + client->surface->width;
+       y = client->surface->y + client->surface->height/2;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer on right center */
+       x -= 1;
+       assert(surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+
+       /* move pointer outside right center */
+       x += 1;
+       assert(!surface_contains(client->surface, x, y));
+       check_pointer_move(client, x, y);
+}
+
+TEST(test_pointer_surface_move)
+{
+       struct client *client;
+
+       client = create_client_and_test_surface(100, 100, 100, 100);
+       assert(client);
+
+       /* move pointer outside of client */
+       assert(!surface_contains(client->surface, 50, 50));
+       check_pointer_move(client, 50, 50);
+
+       /* move client center to pointer */
+       move_client(client, 0, 0);
+       assert(surface_contains(client->surface, 50, 50));
+       check_pointer(client, 50, 50);
+}
+
+TEST(simple_pointer_button_test)
+{
+       struct client *client;
+       struct pointer *pointer;
+
+       client = create_client_and_test_surface(100, 100, 100, 100);
+       assert(client);
+
+       pointer = client->input->pointer;
+
+       assert(pointer->button == 0);
+       assert(pointer->state == 0);
+
+       weston_test_move_pointer(client->test->weston_test, 150, 150);
+       client_roundtrip(client);
+       assert(pointer->x == 50);
+       assert(pointer->y == 50);
+
+       weston_test_send_button(client->test->weston_test, BTN_LEFT,
+                           WL_POINTER_BUTTON_STATE_PRESSED);
+       client_roundtrip(client);
+       assert(pointer->button == BTN_LEFT);
+       assert(pointer->state == WL_POINTER_BUTTON_STATE_PRESSED);
+
+       weston_test_send_button(client->test->weston_test, BTN_LEFT,
+                           WL_POINTER_BUTTON_STATE_RELEASED);
+       client_roundtrip(client);
+       assert(pointer->button == BTN_LEFT);
+       assert(pointer->state == WL_POINTER_BUTTON_STATE_RELEASED);
+}