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.
This commit is contained in:
Benjamin Otte
2013-05-14 16:13:16 +02:00
parent ac8f7f0703
commit 6ea4c144dd
14 changed files with 11 additions and 4 deletions

68
testsuite/gdk/Makefile.am Normal file
View File

@ -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

View File

@ -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 ();
}

74
testsuite/gdk/display.c Normal file
View File

@ -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 ();
}

View File

@ -0,0 +1,3 @@
[Test]
Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/display"
Type=session

46
testsuite/gdk/encoding.c Normal file
View File

@ -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 ();
}

View File

@ -0,0 +1,3 @@
[Test]
Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/encoding"
Type=session

69
testsuite/gdk/keysyms.c Normal file
View File

@ -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 ();
}

View File

@ -0,0 +1,3 @@
[Test]
Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/keysyms"
Type=session

164
testsuite/gdk/rgba.c Normal file
View File

@ -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 ();
}

View File

@ -0,0 +1,3 @@
[Test]
Exec=/bin/sh -c "@pkglibexecdir@/installed-tests/rgba"
Type=session