[gtk+/gtk-3-8] Add window sizing tests
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-8] Add window sizing tests
- Date: Wed, 8 May 2013 14:23:12 +0000 (UTC)
commit 52decc32fe5cac34e81ecc6546f93a5299575225
Author: Matthias Clasen <mclasen redhat com>
Date: Wed May 8 10:20:35 2013 -0400
Add window sizing tests
These are copied from master
gtk/tests/Makefile.am | 4 +
gtk/tests/window.c | 309 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 313 insertions(+), 0 deletions(-)
---
diff --git a/gtk/tests/Makefile.am b/gtk/tests/Makefile.am
index b28105d..a1246ce 100644
--- a/gtk/tests/Makefile.am
+++ b/gtk/tests/Makefile.am
@@ -156,6 +156,10 @@ keyhash_CFLAGS = -DGTK_COMPILATION \
-DGTK_DATA_PREFIX=\"$(prefix)\" \
-DGTK_SYSCONFDIR=\"$(sysconfdir)\"
+TEST_PROGS += window
+window_SOURCES = window.c
+window_LDADD = $(progs_ldadd)
+
EXTRA_DIST += \
file-chooser-test-dir/empty \
file-chooser-test-dir/text.txt
diff --git a/gtk/tests/window.c b/gtk/tests/window.c
new file mode 100644
index 0000000..1f4d42c
--- /dev/null
+++ b/gtk/tests/window.c
@@ -0,0 +1,309 @@
+#include <gtk/gtk.h>
+
+static gboolean interactive = FALSE;
+
+static gboolean
+stop_main (gpointer data)
+{
+ gtk_main_quit ();
+
+ return G_SOURCE_REMOVE;
+}
+
+static gboolean
+on_draw (GtkWidget *widget, cairo_t *cr)
+{
+ gint i, j;
+
+ for (i = 0; 20 * i < gtk_widget_get_allocated_width (widget); i++)
+ {
+ for (j = 0; 20 * j < gtk_widget_get_allocated_height (widget); j++)
+ {
+ if ((i + j) % 2 == 1)
+ cairo_set_source_rgb (cr, 1., 1., 1.);
+ else
+ cairo_set_source_rgb (cr, 0., 0., 0.);
+
+ cairo_rectangle (cr, 20. * i, 20. *j, 20., 20.);
+ cairo_fill (cr);
+ }
+ }
+
+ return FALSE;
+}
+
+static gboolean
+on_keypress (GtkWidget *widget)
+{
+ gtk_main_quit ();
+
+ return TRUE;
+}
+
+static void
+test_default_size (void)
+{
+ GtkWidget *window;
+ GtkWidget *box;
+ gint w, h;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ g_signal_connect (window, "draw", G_CALLBACK (on_draw), NULL);
+ if (interactive)
+ g_signal_connect (window, "key-press-event", G_CALLBACK (on_keypress), NULL);
+
+ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ gtk_container_add (GTK_CONTAINER (window), box);
+
+ gtk_window_get_default_size (GTK_WINDOW (window), &w, &h);
+ g_assert_cmpint (w, ==, -1);
+ g_assert_cmpint (h, ==, -1);
+
+ gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);
+
+ gtk_window_get_default_size (GTK_WINDOW (window), &w, &h);
+ g_assert_cmpint (w, ==, 300);
+ g_assert_cmpint (h, ==, 300);
+
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+ g_assert_cmpint (w, ==, 300);
+ g_assert_cmpint (h, ==, 300);
+
+ gtk_widget_show_all (window);
+
+ if (!interactive)
+ g_timeout_add (200, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+ g_assert_cmpint (w, ==, 300);
+ g_assert_cmpint (h, ==, 300);
+
+ g_assert_cmpint (gtk_widget_get_allocated_width (window), ==, 300);
+ g_assert_cmpint (gtk_widget_get_allocated_height (window), ==, 300);
+
+ g_assert_cmpint (gtk_widget_get_allocated_width (box), ==, 300);
+ g_assert_cmpint (gtk_widget_get_allocated_height (box), ==, 300);
+
+ gtk_widget_destroy (window);
+}
+
+static void
+test_resize (void)
+{
+ GtkWidget *window;
+ GtkWidget *box;
+ gint w, h;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ g_signal_connect (window, "draw", G_CALLBACK (on_draw), NULL);
+ if (interactive)
+ g_signal_connect (window, "key-press-event", G_CALLBACK (on_keypress), NULL);
+
+ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ gtk_container_add (GTK_CONTAINER (window), box);
+
+ gtk_window_resize (GTK_WINDOW (window), 1, 1);
+
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+ g_assert_cmpint (w, ==, 1);
+ g_assert_cmpint (h, ==, 1);
+
+ gtk_window_resize (GTK_WINDOW (window), 400, 200);
+
+ gtk_widget_show_all (window);
+
+ if (!interactive)
+ g_timeout_add (200, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+ g_assert_cmpint (w, ==, 400);
+ g_assert_cmpint (h, ==, 200);
+
+ gtk_window_resize (GTK_WINDOW (window), 200, 400);
+
+ if (!interactive)
+ g_timeout_add (200, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+ g_assert_cmpint (w, ==, 200);
+ g_assert_cmpint (h, ==, 400);
+
+ gtk_widget_destroy (window);
+}
+
+static void
+test_resize_popup (void)
+{
+ GtkWidget *window;
+ gint x, y, w, h;
+
+ window = gtk_window_new (GTK_WINDOW_POPUP);
+ gtk_window_set_screen (GTK_WINDOW (window), gdk_screen_get_default ());
+ gtk_window_resize (GTK_WINDOW (window), 1, 1);
+ gtk_window_move (GTK_WINDOW (window), -99, -99);
+
+ gtk_window_get_position (GTK_WINDOW (window), &x, &y);
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+ g_assert_cmpint (x, ==, -99);
+ g_assert_cmpint (y, ==, -99);
+ g_assert_cmpint (w, ==, 1);
+ g_assert_cmpint (h, ==, 1);
+
+ gtk_widget_show (window);
+
+ g_timeout_add (200, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_position (GTK_WINDOW (window), &x, &y);
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+ g_assert_cmpint (x, ==, -99);
+ g_assert_cmpint (y, ==, -99);
+ g_assert_cmpint (w, ==, 1);
+ g_assert_cmpint (h, ==, 1);
+
+ gtk_widget_destroy (window);
+}
+
+static void
+test_show_hide (void)
+{
+ GtkWidget *window;
+ gint w, h, w1, h1;
+
+ g_test_bug ("696882");
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_widget_show (window);
+
+ g_timeout_add (100, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+
+ gtk_widget_hide (window);
+
+ g_timeout_add (100, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w1, &h1);
+ g_assert_cmpint (w, ==, w1);
+ g_assert_cmpint (h, ==, h1);
+
+ gtk_widget_show (window);
+
+ g_timeout_add (100, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w1, &h1);
+ g_assert_cmpint (w, ==, w1);
+ g_assert_cmpint (h, ==, h1);
+
+ gtk_widget_destroy (window);
+}
+
+static void
+test_show_hide2 (void)
+{
+ GtkWidget *window;
+ gint x, y, w, h, w1, h1;
+
+ g_test_bug ("696882");
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_widget_show (window);
+
+ g_timeout_add (100, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_position (GTK_WINDOW (window), &x, &y);
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+ gtk_widget_hide (window);
+
+ g_timeout_add (100, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w1, &h1);
+ g_assert_cmpint (w, ==, w1);
+ g_assert_cmpint (h, ==, h1);
+
+ gtk_window_move (GTK_WINDOW (window), x, y);
+ gtk_widget_show (window);
+
+ g_timeout_add (100, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w1, &h1);
+ g_assert_cmpint (w, ==, w1);
+ g_assert_cmpint (h, ==, h1);
+
+ gtk_widget_destroy (window);
+}
+
+static void
+test_show_hide3 (void)
+{
+ GtkWidget *window;
+ gint x, y, w, h, w1, h1;
+
+ g_test_bug ("696882");
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
+
+ gtk_widget_show (window);
+
+ g_timeout_add (100, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_position (GTK_WINDOW (window), &x, &y);
+ gtk_window_get_size (GTK_WINDOW (window), &w, &h);
+ gtk_widget_hide (window);
+
+ g_timeout_add (100, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w1, &h1);
+ g_assert_cmpint (w, ==, w1);
+ g_assert_cmpint (h, ==, h1);
+
+ gtk_window_move (GTK_WINDOW (window), x, y);
+ gtk_widget_show (window);
+
+ g_timeout_add (100, stop_main, NULL);
+ gtk_main ();
+
+ gtk_window_get_size (GTK_WINDOW (window), &w1, &h1);
+ g_assert_cmpint (w, ==, w1);
+ g_assert_cmpint (h, ==, h1);
+
+ gtk_widget_destroy (window);
+}
+
+int
+main (int argc, char *argv[])
+{
+ gint i;
+
+ gtk_test_init (&argc, &argv);
+ g_test_bug_base ("http://bugzilla.gnome.org/");
+
+ for (i = 0; i < argc; i++)
+ {
+ if (g_strcmp0 (argv[i], "--interactive") == 0)
+ interactive = TRUE;
+ }
+
+ g_test_add_func ("/window/default-size", test_default_size);
+ g_test_add_func ("/window/resize", test_resize);
+ g_test_add_func ("/window/show-hide", test_show_hide);
+ g_test_add_func ("/window/show-hide2", test_show_hide2);
+ g_test_add_func ("/window/show-hide3", test_show_hide3);
+ g_test_add_func ("/window/resize-popup", test_resize_popup);
+
+ return g_test_run ();
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]