Add tests for seat apis
authorMatthias Clasen <mclasen@redhat.com>
Mon, 28 Mar 2016 23:22:36 +0000 (19:22 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 28 Mar 2016 23:22:36 +0000 (19:22 -0400)
These are just some basic sanity tests.

testsuite/gdk/Makefile.am
testsuite/gdk/seat.c [new file with mode: 0644]

index 63b7f8b6a9c09933118afb3ed02b8a283541555a..beb3cac33f385cc8baa28253ba6e778469320875 100644 (file)
@@ -23,6 +23,7 @@ TEST_PROGS +=                                 \
        encoding                        \
        keysyms                         \
        rgba                            \
+       seat                            \
        visual                          \
        $(NULL)
 
diff --git a/testsuite/gdk/seat.c b/testsuite/gdk/seat.c
new file mode 100644 (file)
index 0000000..326b70d
--- /dev/null
@@ -0,0 +1,120 @@
+#include <gdk/gdk.h>
+
+static void
+test_list_seats (void)
+{
+  GdkDisplay *display;
+  GdkSeat *seat0, *seat;
+  GList *list, *l;
+  gboolean found_default;
+
+  display = gdk_display_get_default ();
+  seat0 = gdk_display_get_default_seat (display);
+
+  g_assert_true (GDK_IS_SEAT (seat0));
+
+  found_default = FALSE;
+  list = gdk_display_list_seats (display);
+  for (l = list; l; l = l->next)
+    {
+      seat = l->data;
+
+      g_assert_true (GDK_IS_SEAT (seat));
+      g_assert (gdk_seat_get_display (seat) == display);
+
+      if (seat == seat0)
+        found_default = TRUE;
+    }
+  g_list_free (list);
+
+  g_assert_true (found_default);
+}
+
+static void
+test_default_seat (void)
+{
+  GdkDisplay *display;
+  GdkSeat *seat0;
+  GdkSeatCapabilities caps;
+  GdkDevice *pointer0, *keyboard0, *device;
+  GList *slaves, *l;
+
+  display = gdk_display_get_default ();
+  seat0 = gdk_display_get_default_seat (display);
+
+  g_assert_true (GDK_IS_SEAT (seat0));
+
+  caps = gdk_seat_get_capabilities (seat0);
+
+  g_assert (caps != GDK_SEAT_CAPABILITY_NONE);
+
+  pointer0 = gdk_seat_get_pointer (seat0);
+  slaves = gdk_seat_get_slaves (seat0, GDK_SEAT_CAPABILITY_POINTER);
+
+  if ((caps & GDK_SEAT_CAPABILITY_POINTER) != 0)
+    {
+      g_assert_nonnull (pointer0);
+      g_assert (gdk_device_get_device_type (pointer0) == GDK_DEVICE_TYPE_MASTER);
+      g_assert (gdk_device_get_display (pointer0) == display);
+      g_assert (gdk_device_get_seat (pointer0) == seat0);
+
+      g_assert_nonnull (slaves);
+      for (l = slaves; l; l = l->next)
+        {
+          device = l->data;
+          g_assert (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_SLAVE);
+          g_assert (gdk_device_get_display (device) == display);
+          g_assert (gdk_device_get_seat (device) == seat0);
+        }
+      g_list_free (slaves);
+    }
+  else
+    {
+      g_assert_null (pointer0);
+      g_assert_null (slaves);
+    }
+
+  keyboard0 = gdk_seat_get_keyboard (seat0);
+  slaves = gdk_seat_get_slaves (seat0, GDK_SEAT_CAPABILITY_KEYBOARD);
+
+  if ((caps & GDK_SEAT_CAPABILITY_KEYBOARD) != 0)
+    {
+      g_assert_nonnull (keyboard0);
+      g_assert (gdk_device_get_device_type (keyboard0) == GDK_DEVICE_TYPE_MASTER);
+      g_assert (gdk_device_get_display (keyboard0) == display);
+      g_assert (gdk_device_get_seat (keyboard0) == seat0);
+      g_assert (gdk_device_get_source (keyboard0) == GDK_SOURCE_KEYBOARD);
+
+      g_assert_nonnull (slaves);
+      for (l = slaves; l; l = l->next)
+        {
+          device = l->data;
+          g_assert (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_SLAVE);
+          g_assert (gdk_device_get_display (device) == display);
+          g_assert (gdk_device_get_seat (device) == seat0);
+          g_assert (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD);
+        }
+      g_list_free (slaves);
+    }
+  else
+    {
+      g_assert_null (keyboard0);
+      g_assert_null (slaves);
+    }
+
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  gdk_init (NULL, NULL);
+
+  g_test_bug_base ("http://bugzilla.gnome.org/");
+
+  g_test_add_func ("/seat/list", test_list_seats);
+  g_test_add_func ("/seat/default", test_default_seat);
+
+  return g_test_run ();
+}