summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2013-12-19 13:28:33 -0500
committerMatthias Clasen <mclasen@redhat.com>2013-12-19 13:28:33 -0500
commit5123cd38d218cf048ee7c02bf1ad5a99746af080 (patch)
tree85b1e1746db8654f5fb365494be23996f0466174
parent5e95001393e61cae50c7e58bb80ffa2599098de9 (diff)
downloadgdk-pixbuf-5123cd38d218cf048ee7c02bf1ad5a99746af080.tar.gz
Convert pixbuf-randomly-modified test
Make this test use g_test_run, so it is compatible with using TAP.
-rw-r--r--tests/pixbuf-randomly-modified.c152
1 files changed, 36 insertions, 116 deletions
diff --git a/tests/pixbuf-randomly-modified.c b/tests/pixbuf-randomly-modified.c
index 2f599816a..cf2d6594d 100644
--- a/tests/pixbuf-randomly-modified.c
+++ b/tests/pixbuf-randomly-modified.c
@@ -31,15 +31,6 @@
#endif
static void
-disaster (const char *what)
-{
- perror (what);
- exit (EXIT_FAILURE);
-}
-
-static gint verbose;
-
-static void
randomly_modify (const gchar *image, guint size)
{
int i;
@@ -57,11 +48,9 @@ randomly_modify (const gchar *image, guint size)
img_copy[index] = byte;
f = fopen ("pixbuf-randomly-modified-image", "w");
- if (!f)
- disaster ("fopen");
+ g_assert (f != NULL);
fwrite (img_copy, size, 1, f);
- if (ferror (f))
- disaster ("fwrite");
+ g_assert (!ferror (f));
fclose (f);
loader = gdk_pixbuf_loader_new ();
@@ -73,40 +62,38 @@ randomly_modify (const gchar *image, guint size)
}
static void
-write_seed (int seed)
+test_randomly_modified (gconstpointer data)
{
- FILE *f;
- /* write this so you can reproduce failed tests */
- f = fopen ("pixbuf-randomly-modified-seed", "w");
-
- if (!f)
- disaster ("fopen");
-
- if (fprintf (f, "%d\n", seed) < 0)
- disaster ("fprintf");
-
- if (fclose (f) < 0)
- disaster ("fclose");
+ const gchar *file = data;
+ const gchar *path;
+ gchar *buffer;
+ gsize size;
+ gint iterations;
+ gint i;
+ GError *error = NULL;
+
+ path = g_test_get_filename (G_TEST_DIST, "test-images", file, NULL);
+ g_file_get_contents (path, &buffer, &size, &error);
+ g_assert_no_error (error);
+
+ if (g_test_thorough ())
+ iterations = 1000;
+ else
+ iterations = 1;
- g_print ("seed: %d\n", seed);
-}
+ for (i = 0; i < iterations; i++)
+ randomly_modify (buffer, size);
-static void
-usage (void)
-{
- g_print ("usage: pixbuf-randomly-modified [-s <seed>] <files> ... \n");
- exit (EXIT_FAILURE);
+ g_free (buffer);
}
int
main (int argc, char **argv)
{
- int seed, i;
- GError *err = NULL;
- gboolean got_seed = FALSE;
- GPtrArray *files = g_ptr_array_new ();
- int l, iterations;
-
+ const gchar *name;
+ gchar *test_images_dir;
+ gchar *path;
+ GDir *dir;
#ifdef HAVE_SETRLIMIT
struct rlimit max_mem_size;
@@ -120,85 +107,18 @@ main (int argc, char **argv)
g_test_init (&argc, &argv, NULL);
- if (g_getenv ("ITERATIONS"))
- iterations = atoi (g_getenv ("ITERATIONS"));
- else
- iterations = 1;
-
- seed = time (NULL);
-
- for (i = 1; i < argc; ++i)
+ test_images_dir = g_build_filename (g_test_get_dir (G_TEST_DIST), "test-images", NULL);
+ dir = g_dir_open (test_images_dir, 0, NULL);
+ while ((name = g_dir_read_name (dir)) != NULL)
{
- if (strcmp (argv[i], "-s") == 0)
- {
- if (i+1 < argc)
- {
- seed = atoi (argv[i+1]);
- got_seed = TRUE;
- ++i;
- }
- else
- usage();
- }
- else
- g_ptr_array_add (files, strdup (argv[i]));
+ path = g_strconcat ("/pixbuf/randomly-modified/", name, NULL);
+ g_test_add_data_func_full (path, g_strdup (name), test_randomly_modified, g_free);
+ g_free (path);
}
+ g_dir_close (dir);
+ g_free (test_images_dir);
- if (!got_seed)
- write_seed (seed);
-
- g_random_set_seed (seed);
+ g_test_message ("Modified image is written to pixbuf-randomly-modified-image");
- if (verbose)
- g_print ("the last tested image is saved to pixbuf-randomly-modified-image\n");
-
- g_log_set_always_fatal (G_LOG_LEVEL_WARNING | G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL);
-
- if (files->len == 0)
- {
- const gchar *name;
- const gchar *distdir = g_test_get_dir (G_TEST_DIST);
- gchar *test_images_dir = g_build_filename (distdir, "test-images", NULL);
- GDir *dir = g_dir_open (test_images_dir, 0, &err);
- if (!dir)
- goto out;
- while ((name = g_dir_read_name (dir)) != NULL)
- g_ptr_array_add (files, g_build_filename (test_images_dir, name, NULL));
- g_dir_close (dir);
- g_free (test_images_dir);
- }
-
- g_assert_cmpint (files->len, >, 0);
-
- for (l = 0; l < iterations; l++)
- for (i = 0; i < files->len; ++i)
- {
- gchar *contents;
- gsize size;
-
- fflush (stdout);
- if (!g_file_get_contents (files->pdata[i], &contents, &size, &err))
- {
- g_prefix_error (&err, "Reading %s: ", (char *)files->pdata[i]);
- goto out;
- }
- else
- {
- if (verbose)
- g_print ("%s\t\t", (char *)files->pdata[i]);
- randomly_modify (contents, size);
- if (verbose)
- g_print ("done\n");
-
- g_free (contents);
- }
- }
-
- out:
- if (err)
- {
- g_printerr ("%s\n", err->message);
- return 1;
- }
- return 0;
+ return g_test_run ();
}