diff options
Diffstat (limited to 'testsuite/gdk/cairo.c')
-rw-r--r-- | testsuite/gdk/cairo.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/testsuite/gdk/cairo.c b/testsuite/gdk/cairo.c new file mode 100644 index 0000000000..77be879c97 --- /dev/null +++ b/testsuite/gdk/cairo.c @@ -0,0 +1,40 @@ +#include <gdk/gdk.h> + +static void +test_set_source_big_pixbuf (void) +{ + cairo_surface_t *surface; + GdkPixbuf *pixbuf; + cairo_t *cr; + +#define WAY_TOO_BIG 65540 + + /* Check that too big really is to big. + * If this check fails, somebody improved Cairo and this test is useless. + */ + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, WAY_TOO_BIG, 1); + g_assert_cmpint (cairo_surface_status (surface), !=, CAIRO_STATUS_SUCCESS); + cairo_surface_destroy (surface); + + surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 10, 10); + cr = cairo_create (surface); + pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, WAY_TOO_BIG, 1); + + gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0); + g_assert_cmpint (cairo_status (cr), !=, CAIRO_STATUS_SUCCESS); + + g_object_unref (pixbuf); + cairo_destroy (cr); + cairo_surface_destroy (surface); +} + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + gdk_init (&argc, &argv); + + g_test_add_func ("/drawing/set-source-big-pixbuf", test_set_source_big_pixbuf); + + return g_test_run (); +} |