summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-05-13 21:32:11 -0400
committerMatthias Clasen <mclasen@redhat.com>2023-05-13 21:56:29 -0400
commitcea15fc63efc073845f81f000cef87b42e72f1de (patch)
tree21ff347d4249cb9ef687f328b2059f60c7d90524
parentf99fbab24ffebbcafa0e4eafc181fddc5d861ce9 (diff)
downloadgtk+-cea15fc63efc073845f81f000cef87b42e72f1de.tar.gz
Improve gdk test coverage
Add tests for GdkToplevvelLayout and GdkPopupLayout.
-rw-r--r--testsuite/gdk/meson.build2
-rw-r--r--testsuite/gdk/popuplayout.c63
-rw-r--r--testsuite/gdk/toplevellayout.c53
3 files changed, 118 insertions, 0 deletions
diff --git a/testsuite/gdk/meson.build b/testsuite/gdk/meson.build
index 13ed1ff31c..157c9d4daa 100644
--- a/testsuite/gdk/meson.build
+++ b/testsuite/gdk/meson.build
@@ -24,6 +24,8 @@ tests = [
{ 'name': 'rgba' },
{ 'name': 'seat' },
{ 'name': 'texture-threads' },
+ { 'name': 'toplevellayout' },
+ { 'name': 'popuplayout' },
]
foreach t : tests
diff --git a/testsuite/gdk/popuplayout.c b/testsuite/gdk/popuplayout.c
new file mode 100644
index 0000000000..e48ce47caa
--- /dev/null
+++ b/testsuite/gdk/popuplayout.c
@@ -0,0 +1,63 @@
+#include <stdlib.h>
+#include <gtk/gtk.h>
+
+static void
+test_popup_layout_basic (void)
+{
+ GdkPopupLayout *layout;
+ GdkPopupLayout *layout2;
+ GdkRectangle anchor = { 0, 0, 20, 20 };
+ const GdkRectangle *rect;
+ int dx, dy;
+ int l, r, t, b;
+
+ layout = gdk_popup_layout_new (&anchor, GDK_GRAVITY_SOUTH, GDK_GRAVITY_NORTH);
+
+ rect = gdk_popup_layout_get_anchor_rect (layout);
+ g_assert_true (gdk_rectangle_equal (&anchor, rect));
+
+ layout2 = gdk_popup_layout_copy (layout);
+
+ gdk_popup_layout_ref (layout2);
+ g_assert_true (gdk_popup_layout_equal (layout, layout2));
+ gdk_popup_layout_unref (layout2);
+
+ gdk_popup_layout_set_offset (layout, 10, 10);
+ g_assert_false (gdk_popup_layout_equal (layout, layout2));
+ gdk_popup_layout_get_offset (layout, &dx, &dy);
+ g_assert_true (dx == 10 && dy == 10);
+
+ gdk_popup_layout_set_shadow_width (layout, 1, 2, 3, 4);
+ gdk_popup_layout_get_shadow_width (layout, &l, &r, &t, &b);
+ g_assert_true (l == 1 && r == 2 && t == 3 && b == 4);
+
+ anchor.x = 1;
+ anchor.y = 2;
+ gdk_popup_layout_set_anchor_rect (layout, &anchor);
+ rect = gdk_popup_layout_get_anchor_rect (layout);
+ g_assert_true (gdk_rectangle_equal (&anchor, rect));
+
+ gdk_popup_layout_set_rect_anchor (layout, GDK_GRAVITY_NORTH_WEST);
+ g_assert_true (gdk_popup_layout_get_rect_anchor (layout) == GDK_GRAVITY_NORTH_WEST);
+
+ gdk_popup_layout_set_surface_anchor (layout, GDK_GRAVITY_SOUTH_EAST);
+ g_assert_true (gdk_popup_layout_get_surface_anchor (layout) == GDK_GRAVITY_SOUTH_EAST);
+
+ gdk_popup_layout_set_anchor_hints (layout, GDK_ANCHOR_FLIP_X | GDK_ANCHOR_RESIZE_Y);
+ g_assert_true (gdk_popup_layout_get_anchor_hints (layout) == (GDK_ANCHOR_FLIP_X | GDK_ANCHOR_RESIZE_Y));
+
+ gdk_popup_layout_unref (layout2);
+ gdk_popup_layout_unref (layout);
+}
+
+int
+main (int argc, char *argv[])
+{
+ (g_test_init) (&argc, &argv, NULL);
+
+ gtk_init ();
+
+ g_test_add_func ("/popuplayout/basic", test_popup_layout_basic);
+
+ return g_test_run ();
+}
diff --git a/testsuite/gdk/toplevellayout.c b/testsuite/gdk/toplevellayout.c
new file mode 100644
index 0000000000..512e6f2910
--- /dev/null
+++ b/testsuite/gdk/toplevellayout.c
@@ -0,0 +1,53 @@
+#include <stdlib.h>
+#include <gtk/gtk.h>
+
+static void
+test_toplevel_layout_basic (void)
+{
+ GdkToplevelLayout *layout;
+ GdkToplevelLayout *layout2;
+ gboolean max;
+ gboolean full;
+ GdkMonitor *monitor;
+
+ layout = gdk_toplevel_layout_new ();
+
+ g_assert_false (gdk_toplevel_layout_get_maximized (layout, &max));
+ g_assert_false (gdk_toplevel_layout_get_fullscreen (layout, &full));
+
+ gdk_toplevel_layout_set_maximized (layout, TRUE);
+ g_assert_true (gdk_toplevel_layout_get_maximized (layout, &max));
+ g_assert_true (max);
+
+ layout2 = gdk_toplevel_layout_copy (layout);
+ gdk_toplevel_layout_ref (layout2);
+ g_assert_true (gdk_toplevel_layout_equal (layout, layout2));
+ gdk_toplevel_layout_unref (layout2);
+
+ gdk_toplevel_layout_set_maximized (layout, FALSE);
+ g_assert_false (gdk_toplevel_layout_equal (layout, layout2));
+
+ monitor = g_list_model_get_item (gdk_display_get_monitors (gdk_display_get_default ()), 0);
+ gdk_toplevel_layout_set_fullscreen (layout, TRUE, monitor);
+
+ g_assert_true (gdk_toplevel_layout_get_fullscreen (layout, &full));
+ g_assert_true (full);
+ g_assert_true (monitor == gdk_toplevel_layout_get_fullscreen_monitor (layout));
+
+ g_object_unref (monitor);
+
+ gdk_toplevel_layout_unref (layout2);
+ gdk_toplevel_layout_unref (layout);
+}
+
+int
+main (int argc, char *argv[])
+{
+ (g_test_init) (&argc, &argv, NULL);
+
+ gtk_init ();
+
+ g_test_add_func ("/toplevellayout/basic", test_toplevel_layout_basic);
+
+ return g_test_run ();
+}