Add basic searchbar set_key_capture_widget tests
authorTimm Bäder <mail@baedert.org>
Wed, 16 May 2018 15:56:34 +0000 (17:56 +0200)
committerTimm Bäder <mail@baedert.org>
Sat, 19 May 2018 08:18:50 +0000 (10:18 +0200)
Make sure we're correctly resetting the internal key capture widget
pointer when the widget goes away.

testsuite/gtk/meson.build
testsuite/gtk/searchbar.c [new file with mode: 0644]

index e8adb563367ecd00e4433bc4d90db34b4cbacde5..116a945ebd52e1c1c830509e9890307db3b672f3 100644 (file)
@@ -36,6 +36,7 @@ tests = [
   ['recentmanager'],
   ['regression-tests'],
   ['scrolledwindow'],
+  ['searchbar'],
   ['spinbutton'],
   ['stylecontext'],
   ['templates'],
diff --git a/testsuite/gtk/searchbar.c b/testsuite/gtk/searchbar.c
new file mode 100644 (file)
index 0000000..0e1427f
--- /dev/null
@@ -0,0 +1,54 @@
+#include <gtk/gtk.h>
+
+static void
+capture_widget_destroy (void)
+{
+  GtkWidget *searchbar = gtk_search_bar_new ();
+  GtkWidget *button = gtk_button_new ();
+
+  g_object_ref_sink (searchbar);
+  g_object_ref_sink (button);
+
+  gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (searchbar), button);
+
+  g_assert (gtk_search_bar_get_key_capture_widget (GTK_SEARCH_BAR (searchbar)) == button);
+
+  g_object_unref (button);
+
+  g_assert (gtk_search_bar_get_key_capture_widget (GTK_SEARCH_BAR (searchbar)) == NULL);
+
+  g_object_unref (searchbar);
+}
+
+static void
+capture_widget_unset (void)
+{
+  GtkWidget *searchbar = gtk_search_bar_new ();
+  GtkWidget *button = gtk_button_new ();
+
+  g_object_ref_sink (searchbar);
+  g_object_ref_sink (button);
+
+  gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (searchbar), button);
+
+  g_assert (gtk_search_bar_get_key_capture_widget (GTK_SEARCH_BAR (searchbar)) == button);
+
+  gtk_search_bar_set_key_capture_widget (GTK_SEARCH_BAR (searchbar), NULL);
+
+  g_assert (gtk_search_bar_get_key_capture_widget (GTK_SEARCH_BAR (searchbar)) == NULL);
+
+  g_object_unref (searchbar);
+  g_object_unref (button);
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  gtk_test_init (&argc, &argv);
+
+  g_test_add_func ("/searchbar/capture-widget-destroy", capture_widget_destroy);
+  g_test_add_func ("/searchbar/capture-widget-unset", capture_widget_unset);
+
+  return g_test_run();
+}