summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2013-05-14 16:13:16 +0200
committerBenjamin Otte <otte@redhat.com>2013-05-15 15:37:16 +0200
commit6ea4c144ddfdf1208b44845dee1a40c2eec91e65 (patch)
tree118f9802953b86bf99a83e086688cc253ca56d65 /testsuite
parentac8f7f0703a9f43dfeeba8606ff76f12b7cf8e28 (diff)
downloadgtk+-6ea4c144ddfdf1208b44845dee1a40c2eec91e65.tar.gz
build: Move gdk/tests/ to testsuite/gdk/
This is a reorganization of the testsuite to be in the testsuite/ directory, so it can be installed from there.
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/Makefile.am6
-rw-r--r--testsuite/gdk/Makefile.am68
-rw-r--r--testsuite/gdk/check-gdk-cairo.c149
-rw-r--r--testsuite/gdk/display.c74
-rw-r--r--testsuite/gdk/display.test.in3
-rw-r--r--testsuite/gdk/encoding.c46
-rw-r--r--testsuite/gdk/encoding.test.in3
-rw-r--r--testsuite/gdk/keysyms.c69
-rw-r--r--testsuite/gdk/keysyms.test.in3
-rw-r--r--testsuite/gdk/rgba.c164
-rw-r--r--testsuite/gdk/rgba.test.in3
11 files changed, 588 insertions, 0 deletions
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
new file mode 100644
index 0000000000..af7953b92a
--- /dev/null
+++ b/testsuite/Makefile.am
@@ -0,0 +1,6 @@
+include $(top_srcdir)/Makefile.decl
+
+SUBDIRS = gdk
+
+-include $(top_srcdir)/git.mk
+
diff --git a/testsuite/gdk/Makefile.am b/testsuite/gdk/Makefile.am
new file mode 100644
index 0000000000..bd9a3b392f
--- /dev/null
+++ b/testsuite/gdk/Makefile.am
@@ -0,0 +1,68 @@
+include $(top_srcdir)/Makefile.decl
+
+NULL=
+
+noinst_PROGRAMS = $(TEST_PROGS)
+
+AM_CPPFLAGS = \
+ $(GDK_DEP_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_builddir)/gdk \
+ $(NULL)
+
+progs_ldadd = \
+ $(GDK_DEP_LIBS) \
+ $(top_builddir)/gdk/libgdk-3.la \
+ $(NULL)
+
+#TEST_PROGS += check-gdk-cairo
+#check_gdk_cairo_SOURCES = check-gdk-cairo.c
+#check_gdk_cairo_LDADD = $(progs_ldadd)
+
+TEST_PROGS += rgba
+rgba_SOURCES = rgba.c
+rgba_LDADD = $(progs_ldadd)
+
+TEST_PROGS += encoding
+encoding_SOURCES = encoding.c
+encoding_LDADD = $(progs_ldadd)
+
+TEST_PROGS += display
+display_SOURCES = display.c
+display_LDADD = $(progs_ldadd)
+
+TEST_PROGS += keysyms
+keysyms_SOURCES = keysyms.c
+keysyms_LDADD = $(progs_ldadd)
+
+CLEANFILES = \
+ cairosurface.png \
+ gdksurface.png
+
+if BUILDOPT_INSTALL_TESTS
+insttestdir=$(pkglibexecdir)/installed-tests
+insttest_PROGRAMS = $(TEST_PROGS)
+
+substitutions = \
+ -e s,@pkglibexecdir\@,$(pkglibexecdir),g \
+ $(NULL)
+
+test_in_files = \
+ rgba.test.in \
+ encoding.test.in \
+ display.test.in \
+ keysyms.test.in \
+ $(NULL)
+
+test_files = $(test_in_files:.test.in=.test)
+
+$(test_files): %.test: %.test.in
+ $(AM_V_GEN) sed $(substitutions) $< > $@.tmp && mv $@.tmp $@
+
+EXTRA_DIST += $(test_in_files)
+
+testmetadir = $(datadir)/installed-tests/$(PACKAGE)
+testmeta_DATA = $(test_files)
+endif
+
+-include $(top_srcdir)/git.mk
diff --git a/testsuite/gdk/check-gdk-cairo.c b/testsuite/gdk/check-gdk-cairo.c
new file mode 100644
index 0000000000..cc7987cc03
--- /dev/null
+++ b/testsuite/gdk/check-gdk-cairo.c
@@ -0,0 +1,149 @@
+/* This file is part of GTK+
+ *
+ * AUTHORS
+ * Sven Herzberg
+ *
+ * Copyright (C) 2008 Sven Herzberg
+ *
+ * This work is provided "as is"; redistribution and modification
+ * in whole or in part, in any medium, physical or electronic is
+ * permitted without restriction.
+ *
+ * This work is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * In no event shall the authors or contributors be liable for any
+ * direct, indirect, incidental, special, exemplary, or consequential
+ * damages (including, but not limited to, procurement of substitute
+ * goods or services; loss of use, data, or profits; or business
+ * interruption) however caused and on any theory of liability, whether
+ * in contract, strict liability, or tort (including negligence or
+ * otherwise) arising in any way out of the use of this software, even
+ * if advised of the possibility of such damage.
+ */
+
+#include <glib/gstdio.h>
+#include <gdk/gdk.h>
+#ifdef CAIRO_HAS_QUARTZ_SURFACE
+#include <cairo-quartz.h>
+#endif
+
+static void
+test (cairo_t* cr)
+{
+ cairo_save (cr);
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
+ cairo_paint (cr);
+ cairo_restore (cr);
+
+ cairo_move_to (cr, 10.0, 20.0);
+ cairo_line_to (cr, 10.0, 30.0);
+ cairo_stroke (cr);
+
+ cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.5);
+ cairo_arc (cr, 0.0, 0.0, 10.0, 0.0, G_PI/2);
+ cairo_stroke (cr);
+}
+
+static void
+test_surface_orientation (void)
+{
+ cairo_surface_t *surface;
+ GdkPixbuf* pixbuf;
+ GdkPixbuf* pbuf_platform;
+ GdkPixbuf* pbuf_imagesrf;
+ GError * error = NULL;
+ cairo_surface_t* surface;
+ cairo_t* cr;
+ guchar* data_platform;
+ guchar* data_imagesrf;
+ guint i;
+
+ /* create "platform.png" via native cairo surface */
+ surface = gdk_window_create_similar_surface (gdk_get_default_root_window (),
+ CAIRO_CONTENT_COLOR,
+ 100,
+ 80);
+ cr = cairo_create (surface);
+ test (cr);
+ cairo_destroy (cr);
+
+ pixbuf = gdk_pixbuf_get_from_surface (NULL,
+ surface,
+ 0, 0,
+ 0, 0,
+ 100, 80);
+ if (!gdk_pixbuf_save (pixbuf, "gdksurface.png", "png", NULL, NULL)) {
+ g_error ("Eeek! Couldn't save the file \"gdksurface.png\"");
+ }
+ g_object_unref (pixbuf);
+
+ cairo_surface_destroy (surface);
+
+ /* create "cairosurface.png" via pure cairo */
+#ifndef CAIRO_HAS_QUARTZ_SURFACE
+ surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, 100, 80);
+#else
+ surface = cairo_quartz_surface_create (CAIRO_FORMAT_RGB24, 100, 80);
+#endif
+ cr = cairo_create (surface);
+ test (cr);
+ cairo_destroy (cr);
+ if (CAIRO_STATUS_SUCCESS != cairo_surface_write_to_png (surface, "cairosurface.png")) {
+ g_error ("Eeek! Couldn't save the file \"cairosurface.png\"");
+ }
+ cairo_surface_destroy (surface);
+
+ /* compare the images */
+ pbuf_platform = gdk_pixbuf_new_from_file ("gdksurface.png", &error);
+ if (!pbuf_platform || error) {
+ g_error ("Eeek! Error loading \"gdksurface.png\"");
+ }
+ pbuf_imagesrf = gdk_pixbuf_new_from_file ("cairosurface.png", &error);
+ if (!pbuf_imagesrf || error) {
+ g_object_unref (pbuf_platform);
+ g_error ("Eeek! Error loading \"cairosurface.png\"");
+ }
+
+ g_assert (gdk_pixbuf_get_width (pbuf_platform) ==
+ gdk_pixbuf_get_width (pbuf_imagesrf));
+ g_assert (gdk_pixbuf_get_height (pbuf_platform) ==
+ gdk_pixbuf_get_height (pbuf_imagesrf));
+ g_assert (gdk_pixbuf_get_rowstride (pbuf_platform) ==
+ gdk_pixbuf_get_rowstride (pbuf_imagesrf));
+ g_assert (gdk_pixbuf_get_n_channels (pbuf_platform) ==
+ gdk_pixbuf_get_n_channels (pbuf_imagesrf));
+
+ data_platform = gdk_pixbuf_get_pixels (pbuf_platform);
+ data_imagesrf = gdk_pixbuf_get_pixels (pbuf_imagesrf);
+
+ for (i = 0; i < gdk_pixbuf_get_height (pbuf_platform) * gdk_pixbuf_get_rowstride (pbuf_platform); i++) {
+ if (data_platform[i] != data_imagesrf[i]) {
+ g_warning ("Eeek! Images are differing at byte %d", i);
+ g_object_unref (pbuf_platform);
+ g_object_unref (pbuf_imagesrf);
+ g_assert_not_reached ();
+ }
+ }
+
+ g_object_unref (pbuf_platform);
+ g_object_unref (pbuf_imagesrf);
+
+ g_unlink ("gdksurface.png");
+ g_unlink ("cairosurface.png");
+}
+
+int
+main (int argc,
+ char**argv)
+{
+ g_test_init (&argc, &argv, NULL);
+ gdk_init (&argc, &argv);
+
+ g_test_add_func ("/gdk/surface/orientation",
+ test_surface_orientation);
+
+ return g_test_run ();
+}
+
diff --git a/testsuite/gdk/display.c b/testsuite/gdk/display.c
new file mode 100644
index 0000000000..b4f64acfe3
--- /dev/null
+++ b/testsuite/gdk/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, 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 ();
+}
diff --git a/testsuite/gdk/display.test.in b/testsuite/gdk/display.test.in
new file mode 100644
index 0000000000..9875c68ca3
--- /dev/null
+++ b/testsuite/gdk/display.test.in
@@ -0,0 +1,3 @@
+[Test]
+Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/display"
+Type=session
diff --git a/testsuite/gdk/encoding.c b/testsuite/gdk/encoding.c
new file mode 100644
index 0000000000..546bf29fae
--- /dev/null
+++ b/testsuite/gdk/encoding.c
@@ -0,0 +1,46 @@
+#include <gdk/gdk.h>
+#ifdef GDK_WINDOWING_X11
+#include <gdk/x11/gdkx.h>
+#endif
+
+static void
+test_to_text_list (void)
+{
+ GdkDisplay *display;
+
+ display = gdk_display_get_default ();
+
+#ifdef GDK_WINDOWING_X11
+ if (GDK_IS_X11_DISPLAY (display))
+ {
+ GdkAtom encoding;
+ gint format;
+ const guchar *text;
+ gint length;
+ gchar **list;
+ gint n;
+
+ encoding = gdk_atom_intern ("UTF8_STRING", FALSE);
+ format = 8;
+ text = (const guchar*)"abcdef \304\201 \304\205\0ABCDEF \304\200 \304\204";
+ length = 25;
+ n = gdk_x11_display_text_property_to_text_list (display, encoding, format, text, length, &list);
+ g_assert_cmpint (n, ==, 2);
+ g_assert (g_str_has_prefix (list[0], "abcdef "));
+ g_assert (g_str_has_prefix (list[1], "ABCDEF "));
+
+ gdk_x11_free_text_list (list);
+ }
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+ gdk_init (&argc, &argv);
+
+ g_test_add_func ("/encoding/to-text-list", test_to_text_list);
+
+ return g_test_run ();
+}
diff --git a/testsuite/gdk/encoding.test.in b/testsuite/gdk/encoding.test.in
new file mode 100644
index 0000000000..06a329db68
--- /dev/null
+++ b/testsuite/gdk/encoding.test.in
@@ -0,0 +1,3 @@
+[Test]
+Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/encoding"
+Type=session
diff --git a/testsuite/gdk/keysyms.c b/testsuite/gdk/keysyms.c
new file mode 100644
index 0000000000..7d786f557c
--- /dev/null
+++ b/testsuite/gdk/keysyms.c
@@ -0,0 +1,69 @@
+#include <locale.h>
+#include <gdk/gdk.h>
+
+static void
+test_keysyms_basic (void)
+{
+ struct {
+ guint keyval;
+ const gchar *name;
+ const gchar *other_name;
+ } tests[] = {
+ { GDK_KEY_space, "space", NULL },
+ { GDK_KEY_a, "a", NULL },
+ { GDK_KEY_Thorn, "Thorn", "THORN" },
+ { GDK_KEY_Hangul_J_RieulTieut, "Hangul_J_RieulTieut", NULL },
+ { GDK_KEY_Page_Up, "Page_Up", NULL },
+ { GDK_KEY_KP_Multiply, "KP_Multiply", NULL },
+ { GDK_KEY_MonBrightnessUp, "MonBrightnessUp", NULL },
+ { 0, NULL }
+ };
+ gint i;
+
+ for (i = 0; tests[i].keyval != 0; i++)
+ {
+ g_assert_cmpstr (gdk_keyval_name (tests[i].keyval), ==, tests[i].name);
+ g_assert_cmpuint (gdk_keyval_from_name (tests[i].name), ==, tests[i].keyval);
+ if (tests[i].other_name)
+ g_assert_cmpuint (gdk_keyval_from_name (tests[i].other_name), ==, tests[i].keyval);
+ }
+}
+
+static void
+test_keysyms_void (void)
+{
+ g_assert_cmpuint (gdk_keyval_from_name ("NoSuchKeysym"), ==, GDK_KEY_VoidSymbol);
+ g_assert_cmpstr (gdk_keyval_name (GDK_KEY_VoidSymbol), ==, "0xffffff");
+}
+
+static void
+test_keysyms_xf86 (void)
+{
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86MonBrightnessUp"), ==, GDK_KEY_MonBrightnessUp);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86MonBrightnessDown"), ==, GDK_KEY_MonBrightnessDown);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86KbdBrightnessUp"), ==, GDK_KEY_KbdBrightnessUp);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86KbdBrightnessDown"), ==, GDK_KEY_KbdBrightnessDown);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86Battery"), ==, GDK_KEY_Battery);
+ g_assert_cmpuint (gdk_keyval_from_name ("XF86Display"), ==, GDK_KEY_Display);
+
+ g_assert_cmpuint (gdk_keyval_from_name ("MonBrightnessUp"), ==, GDK_KEY_MonBrightnessUp);
+ g_assert_cmpuint (gdk_keyval_from_name ("MonBrightnessDown"), ==, GDK_KEY_MonBrightnessDown);
+ g_assert_cmpuint (gdk_keyval_from_name ("KbdBrightnessUp"), ==, GDK_KEY_KbdBrightnessUp);
+ g_assert_cmpuint (gdk_keyval_from_name ("KbdBrightnessDown"), ==, GDK_KEY_KbdBrightnessDown);
+ g_assert_cmpuint (gdk_keyval_from_name ("Battery"), ==, GDK_KEY_Battery);
+ g_assert_cmpuint (gdk_keyval_from_name ("Display"), ==, GDK_KEY_Display);
+}
+
+int main (int argc, char *argv[])
+{
+ setlocale (LC_ALL, "");
+
+ g_test_init (&argc, &argv, NULL);
+ gdk_init (&argc, &argv);
+
+ g_test_add_func ("/keysyms/basic", test_keysyms_basic);
+ g_test_add_func ("/keysyms/void", test_keysyms_void);
+ g_test_add_func ("/keysyms/xf86", test_keysyms_xf86);
+
+ return g_test_run ();
+}
diff --git a/testsuite/gdk/keysyms.test.in b/testsuite/gdk/keysyms.test.in
new file mode 100644
index 0000000000..2f1ce97583
--- /dev/null
+++ b/testsuite/gdk/keysyms.test.in
@@ -0,0 +1,3 @@
+[Test]
+Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/keysyms"
+Type=session
diff --git a/testsuite/gdk/rgba.c b/testsuite/gdk/rgba.c
new file mode 100644
index 0000000000..fa2da629bf
--- /dev/null
+++ b/testsuite/gdk/rgba.c
@@ -0,0 +1,164 @@
+#include <locale.h>
+#include <gdk/gdk.h>
+
+static void
+test_color_parse (void)
+{
+ GdkRGBA color;
+ GdkRGBA expected;
+ gboolean res;
+
+ res = gdk_rgba_parse (&color, "foo");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "");
+ g_assert (!res);
+
+ expected.red = 100/255.;
+ expected.green = 90/255.;
+ expected.blue = 80/255.;
+ expected.alpha = 0.1;
+ res = gdk_rgba_parse (&color, "rgba(100,90,80,0.1)");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ expected.red = 0.4;
+ expected.green = 0.3;
+ expected.blue = 0.2;
+ expected.alpha = 0.1;
+ res = gdk_rgba_parse (&color, "rgba(40%,30%,20%,0.1)");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ res = gdk_rgba_parse (&color, "rgba( 40 % , 30 % , 20 % , 0.1 )");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ expected.red = 1.0;
+ expected.green = 0.0;
+ expected.blue = 0.0;
+ expected.alpha = 1.0;
+ res = gdk_rgba_parse (&color, "red");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ expected.red = 0.0;
+ expected.green = 0x8080 / 65535.;
+ expected.blue = 1.0;
+ expected.alpha = 1.0;
+ res = gdk_rgba_parse (&color, "#0080ff");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+
+ expected.red = 0.0;
+ expected.green = 0.0;
+ expected.blue = 0.0;
+ expected.alpha = 1.0;
+ res = gdk_rgba_parse (&color, "rgb(0,0,0)");
+ g_assert (res);
+ g_assert (gdk_rgba_equal (&color, &expected));
+}
+
+static void
+test_color_to_string (void)
+{
+ GdkRGBA rgba;
+ GdkRGBA out;
+ gchar *res;
+ gchar *res_de;
+ gchar *res_en;
+ gchar *orig;
+
+ /* Using /255. values for the r, g, b components should
+ * make sure they round-trip exactly without rounding
+ * from the double => integer => double conversions */
+ rgba.red = 1.0;
+ rgba.green = 128/255.;
+ rgba.blue = 64/255.;
+ rgba.alpha = 0.5;
+
+ orig = g_strdup (setlocale (LC_ALL, NULL));
+ res = gdk_rgba_to_string (&rgba);
+ gdk_rgba_parse (&out, res);
+ g_assert (gdk_rgba_equal (&rgba, &out));
+
+ setlocale (LC_ALL, "de_DE.utf-8");
+ res_de = gdk_rgba_to_string (&rgba);
+ g_assert_cmpstr (res, ==, res_de);
+
+ setlocale (LC_ALL, "en_US.utf-8");
+ res_en = gdk_rgba_to_string (&rgba);
+ g_assert_cmpstr (res, ==, res_en);
+
+ g_free (res);
+ g_free (res_de);
+ g_free (res_en);
+
+ setlocale (LC_ALL, orig);
+ g_free (orig);
+}
+
+static void
+test_color_copy (void)
+{
+ GdkRGBA rgba;
+ GdkRGBA *out;
+
+ rgba.red = 0.0;
+ rgba.green = 0.1;
+ rgba.blue = 0.6;
+ rgba.alpha = 0.9;
+
+ out = gdk_rgba_copy (&rgba);
+ g_assert (gdk_rgba_equal (&rgba, out));
+
+ gdk_rgba_free (out);
+}
+
+static void
+test_color_parse_nonsense (void)
+{
+ GdkRGBA color;
+ gboolean res;
+
+ g_test_bug ("667485");
+
+ res = gdk_rgba_parse (&color, "rgb(,,)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(%,%,%)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(nan,nan,nan)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(inf,inf,inf)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(1p12,0,0)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(5d1%,1,1)");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(0,0,0)moo");
+ g_assert (!res);
+
+ res = gdk_rgba_parse (&color, "rgb(0,0,0) moo");
+ g_assert (!res);
+}
+
+int
+main (int argc, char *argv[])
+{
+ g_test_init (&argc, &argv, NULL);
+
+ g_test_bug_base ("http://bugzilla.gnome.org");
+
+ g_test_add_func ("/rgba/parse", test_color_parse);
+ g_test_add_func ("/rgba/parse/nonsense", test_color_parse_nonsense);
+ g_test_add_func ("/rgba/to-string", test_color_to_string);
+ g_test_add_func ("/rgba/copy", test_color_copy);
+
+ return g_test_run ();
+}
diff --git a/testsuite/gdk/rgba.test.in b/testsuite/gdk/rgba.test.in
new file mode 100644
index 0000000000..5fd3155fae
--- /dev/null
+++ b/testsuite/gdk/rgba.test.in
@@ -0,0 +1,3 @@
+[Test]
+Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/rgba"
+Type=session