Add a test to check that we can destroy and create the test seat. Since
after test seat destruction the test client releases any associated
input resources, this test also checks that libweston properly handles
release requests for inert input resources.

Signed-off-by: Alexandros Frantzis <alexandros.frant...@collabora.com>
---
Changes in v2:
 - Add assertions for client->input state.

 tests/devices-test.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/tests/devices-test.c b/tests/devices-test.c
index a6ec6eaf..147a2791 100644
--- a/tests/devices-test.c
+++ b/tests/devices-test.c
@@ -322,3 +322,25 @@ TEST(seats_have_names)
                assert(input->seat_name);
        }
 }
+
+TEST(seat_destroy_and_recreate)
+{
+       struct client *cl = create_client_and_test_surface(100, 100, 100, 100);
+
+       weston_test_device_release(cl->test->weston_test, "seat");
+       /* Roundtrip to receive and handle the seat global removal event */
+       client_roundtrip(cl);
+
+       assert(!cl->input);
+
+       weston_test_device_add(cl->test->weston_test, "seat");
+       /* First roundtrip to send request and receive new seat global */
+       client_roundtrip(cl);
+       /* Second roundtrip to handle seat events and set up input devices */
+       client_roundtrip(cl);
+
+       assert(cl->input);
+       assert(cl->input->pointer);
+       assert(cl->input->keyboard);
+       assert(cl->input->touch);
+}
-- 
2.14.1

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to