summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2016-03-03 13:04:58 +0100
committerTimm Bäder <mail@baedert.org>2016-03-03 18:54:08 +0100
commit1c544e4237eaf67657260f49aec0bf2118e69767 (patch)
treeedf59aec20246f5ca711ca1a5afe6d284fd4c3c0 /testsuite
parent8b6603bbd65fd8939c9d9337a90b1e8ed746ba65 (diff)
downloadgtk+-1c544e4237eaf67657260f49aec0bf2118e69767.tar.gz
Add GtkRevealer sizing tests
https://bugzilla.gnome.org/show_bug.cgi?id=762996
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/gtk/Makefile.am1
-rw-r--r--testsuite/gtk/revealer-size.c153
2 files changed, 154 insertions, 0 deletions
diff --git a/testsuite/gtk/Makefile.am b/testsuite/gtk/Makefile.am
index b6a7450c06..5fc1cf167d 100644
--- a/testsuite/gtk/Makefile.am
+++ b/testsuite/gtk/Makefile.am
@@ -73,6 +73,7 @@ TEST_PROGS += \
typename \
window \
displayclose \
+ revealer-size \
$(NULL)
if OS_UNIX
diff --git a/testsuite/gtk/revealer-size.c b/testsuite/gtk/revealer-size.c
new file mode 100644
index 0000000000..6c7cffcf01
--- /dev/null
+++ b/testsuite/gtk/revealer-size.c
@@ -0,0 +1,153 @@
+#include <gtk/gtk.h>
+
+const int KEEP_HEIGHT = 1 << 0;
+const int KEEP_WIDTH = 1 << 1;
+
+static void
+keep_size (int direction,
+ guint transition_type,
+ gboolean animations)
+{
+ gboolean animations_before;
+ int min_height, min_width;
+ int min_child_width, min_child_height;
+ GtkRevealer *revealer = gtk_revealer_new ();
+ GtkWidget *child = gtk_button_new_with_label ("Some Text!");
+ GtkSettings *settings = gtk_settings_get_default ();
+
+ g_object_get (settings, "gtk-enable-animations", &animations_before, NULL);
+ g_object_set (settings, "gtk-enable-animations", animations, NULL);
+
+ gtk_container_add (GTK_CONTAINER (revealer), child);
+ gtk_widget_show_all (GTK_WIDGET (revealer));
+
+ gtk_revealer_set_transition_type (revealer, transition_type);
+
+ gtk_revealer_set_reveal_child (revealer, TRUE);
+
+ gtk_widget_get_preferred_width (GTK_WIDGET (child), &min_child_width, NULL);
+ gtk_widget_get_preferred_height (GTK_WIDGET (child), &min_child_height, NULL);
+
+ gtk_widget_get_preferred_width (GTK_WIDGET (revealer), &min_width, NULL);
+ gtk_widget_get_preferred_height (GTK_WIDGET (revealer), &min_height, NULL);
+
+ g_assert_cmpint (min_width, ==, min_child_width);
+ g_assert_cmpint (min_height, ==, min_child_height);
+
+
+ gtk_revealer_set_reveal_child (revealer, FALSE);
+ gtk_widget_get_preferred_width (GTK_WIDGET (revealer), &min_width, NULL);
+ gtk_widget_get_preferred_height (GTK_WIDGET (revealer), &min_height, NULL);
+
+ if (direction & KEEP_WIDTH)
+ g_assert_cmpint (min_width, ==, min_child_width);
+ else
+ g_assert_cmpint (min_width, ==, 0);
+
+ if (direction & KEEP_HEIGHT)
+ g_assert_cmpint (min_height, ==, min_child_height);
+ else
+ g_assert_cmpint (min_height, ==, 0);
+
+ g_object_set (settings, "gtk-enable-animations", animations_before, NULL);
+}
+
+
+static void
+slide_right_animations ()
+{
+ keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT, TRUE);
+}
+
+static void
+slide_right_no_animations ()
+{
+ keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_RIGHT, FALSE);
+}
+
+static void
+slide_left_animations ()
+{
+ keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT, TRUE);
+}
+
+static void
+slide_left_no_animations ()
+{
+ keep_size (KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_SLIDE_LEFT, FALSE);
+}
+
+static void
+none_animations ()
+{
+ keep_size (0, GTK_REVEALER_TRANSITION_TYPE_NONE, TRUE);
+}
+
+static void
+none_no_animations ()
+{
+ keep_size (0, GTK_REVEALER_TRANSITION_TYPE_NONE, FALSE);
+}
+
+static void
+crossfade_animations()
+{
+ keep_size (KEEP_WIDTH | KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_CROSSFADE, TRUE);
+}
+
+static void
+crossfade_no_animations ()
+{
+ keep_size (KEEP_WIDTH | KEEP_HEIGHT, GTK_REVEALER_TRANSITION_TYPE_CROSSFADE, FALSE);
+}
+
+static void
+slide_down_animations ()
+{
+ keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN, TRUE);
+}
+
+static void
+slide_down_no_animations ()
+{
+ keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN, TRUE);
+}
+
+static void
+slide_up_animations ()
+{
+ keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP, TRUE);
+}
+
+static void
+slide_up_no_animations ()
+{
+ keep_size (KEEP_WIDTH, GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP, TRUE);
+}
+
+int
+main (int argc, char **argv)
+{
+ gtk_init (&argc, &argv);
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_add_func ("/sizing/revealer/slide_right_animations", slide_right_animations);
+ g_test_add_func ("/sizing/revealer/slide_right_no_animations", slide_right_no_animations);
+
+ g_test_add_func ("/sizing/revealer/slide_left_animations", slide_left_animations);
+ g_test_add_func ("/sizing/revealer/slide_left_no_animations", slide_left_no_animations);
+
+ g_test_add_func ("/sizing/revealer/none_animations", none_animations);
+ g_test_add_func ("/sizing/revealer/none_no_animations", none_no_animations);
+
+ g_test_add_func ("/sizing/revealer/crossfade_animations", crossfade_animations);
+ g_test_add_func ("/sizing/revealer/crossfade_no_animations", crossfade_no_animations);
+
+ g_test_add_func ("/sizing/revealer/slide_down_animations", slide_down_animations);
+ g_test_add_func ("/sizing/revealer/slide_down_no_animations", slide_down_no_animations);
+
+ g_test_add_func ("/sizing/revealer/slide_up_animations", slide_up_animations);
+ g_test_add_func ("/sizing/revealer/slide_up_no_animations", slide_up_no_animations);
+
+ return g_test_run ();
+}