From 96e0d9db72c4f8291bc58167fa77b2919fad217a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 28 Apr 2013 17:50:01 -0400 Subject: [PATCH] Some window size test tweaks Draw a checkerboard pattern, and add an interactive mode that waits for events before moving on. This makes it easier to see when a size is wrong. --- gtk/tests/window.c | 83 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 13 deletions(-) diff --git a/gtk/tests/window.c b/gtk/tests/window.c index b24947112a..9aa631cfb5 100644 --- a/gtk/tests/window.c +++ b/gtk/tests/window.c @@ -1,5 +1,7 @@ #include +static gboolean interactive = FALSE; + static gboolean stop_main (gpointer data) { @@ -8,6 +10,36 @@ stop_main (gpointer data) 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) { @@ -16,33 +48,42 @@ test_default_size (void) 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 (w == -1 && h == -1); + 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 (w == 300 && h == 300); + g_assert_cmpint (w, ==, 300); + g_assert_cmpint (h, ==, 300); gtk_window_get_size (GTK_WINDOW (window), &w, &h); - g_assert (w == 300 && h == 300); + g_assert_cmpint (w, ==, 300); + g_assert_cmpint (h, ==, 300); gtk_widget_show_all (window); - g_timeout_add (1000, stop_main, NULL); + if (!interactive) + g_timeout_add (200, stop_main, NULL); gtk_main (); gtk_window_get_size (GTK_WINDOW (window), &w, &h); - g_assert (w == 300 && h == 300); + g_assert_cmpint (w, ==, 300); + g_assert_cmpint (h, ==, 300); - g_assert (gtk_widget_get_allocated_width (window) == 300); - g_assert (gtk_widget_get_allocated_height (window) == 300); + g_assert_cmpint (gtk_widget_get_allocated_width (window), ==, 300); + g_assert_cmpint (gtk_widget_get_allocated_height (window), ==, 300); - g_assert (gtk_widget_get_allocated_width (box) == 300); - g_assert (gtk_widget_get_allocated_height (box) == 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); } @@ -55,6 +96,10 @@ test_resize (void) 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); @@ -62,19 +107,23 @@ test_resize (void) gtk_widget_show_all (window); - g_timeout_add (1000, stop_main, NULL); + if (!interactive) + g_timeout_add (200, stop_main, NULL); gtk_main (); gtk_window_get_size (GTK_WINDOW (window), &w, &h); - g_assert (w == 400 && h == 200); + g_assert_cmpint (w, ==, 400); + g_assert_cmpint (h, ==, 200); gtk_window_resize (GTK_WINDOW (window), 200, 400); - g_timeout_add (1000, stop_main, NULL); + if (!interactive) + g_timeout_add (200, stop_main, NULL); gtk_main (); gtk_window_get_size (GTK_WINDOW (window), &w, &h); - g_assert (w == 200 && h == 400); + g_assert_cmpint (w, ==, 200); + g_assert_cmpint (h, ==, 400); gtk_widget_destroy (window); } @@ -82,8 +131,16 @@ test_resize (void) int main (int argc, char *argv[]) { + gint i; + gtk_test_init (&argc, &argv); + 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);