[gtk+] Add testcases for opening display



commit fe687e760e2e33911dfc16e640b4a112ba245bb2
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Jan 18 09:36:24 2011 -0500

    Add testcases for opening display
    
    More precisely, test that we can successfully fail to open
    a display...

 gdk/tests/Makefile.am |    8 ++++-
 gdk/tests/display.c   |   74 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 80 insertions(+), 2 deletions(-)
---
diff --git a/gdk/tests/Makefile.am b/gdk/tests/Makefile.am
index 5930f4c..5cadc6d 100644
--- a/gdk/tests/Makefile.am
+++ b/gdk/tests/Makefile.am
@@ -24,8 +24,12 @@ gdk_color_SOURCES  = gdk-color.c
 gdk_color_LDADD    = $(progs_ldadd)
 
 TEST_PROGS        += encoding
-encoding_SOURCES  = encoding.c
-encoding_LDADD    = $(progs_ldadd)
+encoding_SOURCES   = encoding.c
+encoding_LDADD     = $(progs_ldadd)
+
+TEST_PROGS        += display
+display_SOURCES    = display.c
+display_LDADD      = $(progs_ldadd)
 
 CLEANFILES = \
 	cairosurface.png	\
diff --git a/gdk/tests/display.c b/gdk/tests/display.c
new file mode 100644
index 0000000..79fbcfd
--- /dev/null
+++ b/gdk/tests/display.c
@@ -0,0 +1,74 @@
+#include <stdlib.h>
+
+#include <gdk/gdk.h>
+
+static void
+test_unset_display (void)
+{
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+    {
+      GdkDisplayManager *manager;
+
+      g_unsetenv ("DISPLAY");
+
+      g_assert (!gdk_init_check (NULL, NULL));
+      manager = gdk_display_manager_get ();
+      g_assert (manager != NULL);
+      g_assert (gdk_display_manager_get_default_display (manager) == NULL);
+
+      exit (0);
+    }
+  g_test_trap_assert_passed ();
+
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+    {
+      g_unsetenv ("DISPLAY");
+
+      gdk_init (NULL, NULL);
+
+      exit (0);
+    }
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*cannot open display*");
+}
+
+static void
+test_bad_display (void)
+{
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+    {
+      GdkDisplayManager *manager;
+
+      g_setenv ("DISPLAY", "poo", TRUE);
+
+      g_assert (!gdk_init_check (NULL, NULL));
+      manager = gdk_display_manager_get ();
+      g_assert (manager != NULL);
+      g_assert (gdk_display_manager_get_default_display (manager) == NULL);
+
+      exit (0);
+    }
+  g_test_trap_assert_passed ();
+
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+    {
+      g_setenv ("DISPLAY", "poo", TRUE);
+
+      gdk_init (NULL, NULL);
+
+      exit (0);
+    }
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*cannot open display*");
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/display/unset-display", test_unset_display);
+  g_test_add_func ("/display/bad-display", test_bad_display);
+
+  return g_test_run ();
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]