Move markup collect tests to the test framework
authorMatthias Clasen <mclasen@redhat.com>
Tue, 27 Jul 2010 20:24:56 +0000 (16:24 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 30 Jul 2010 23:51:19 +0000 (19:51 -0400)
glib/tests/Makefile.am
glib/tests/markup-collect.c

index 30a97b5..c2d6f0a 100644 (file)
@@ -134,6 +134,9 @@ markup_escape_LDADD = $(progs_ldadd)
 TEST_PROGS         += logging
 logging_LDADD       = $(progs_ldadd)
 
+TEST_PROGS          += markup-collect
+markup_collect_LDADD = $(progs_ldadd)
+
 if OS_UNIX
 
 # some testing of gtester funcitonality
index 70c4b71..2ed92bb 100644 (file)
@@ -135,87 +135,54 @@ static struct test tests[] =
     G_MARKUP_ERROR_INVALID_CONTENT, "'mb'" }
 };
 
+static void
+test_collect (gconstpointer d)
+{
+  const struct test *test = d;
+
+  GMarkupParseContext *ctx;
+  GError *error = NULL;
+  GString *string;
+  gboolean result;
+
+  string = g_string_new ("");
+  ctx = g_markup_parse_context_new (&parser, 0, string, NULL);
+  result = g_markup_parse_context_parse (ctx,
+                                         test->document,
+                                         -1, &error);
+  if (result)
+    result = g_markup_parse_context_end_parse (ctx, &error);
+
+  if (result)
+    {
+      g_assert_no_error (error);
+      g_assert_cmpint (test->error_code, ==, 0);
+      g_assert_cmpstr (test->result, ==, string->str);
+    }
+  else
+    {
+      g_assert_error (error, G_MARKUP_ERROR, test->error_code);
+    }
+
+  g_markup_parse_context_free (ctx);
+  g_string_free (string, TRUE);
+  g_clear_error (&error);
+}
+
 int
 main (int argc, char **argv)
 {
-  gboolean verbose = FALSE;
   int i;
+  gchar *path;
 
-  if (argc > 1)
-    {
-      if (argc != 2 || strcmp (argv[1], "-v") != 0)
-        {
-          g_print ("error: call with no arguments or '-v' for verbose\n");
-          return 1;
-        }
-
-      verbose = TRUE;
-    }
+  g_test_init (&argc, &argv, NULL);
 
   for (i = 0; i < G_N_ELEMENTS (tests); i++)
     {
-      GMarkupParseContext *ctx;
-      GError *error = NULL;
-      GString *string;
-      gboolean result;
-
-      string = g_string_new ("");
-      ctx = g_markup_parse_context_new (&parser, 0, string, NULL);
-      result = g_markup_parse_context_parse (ctx,
-                                             tests[i].document,
-                                             -1, &error);
-      if (result)
-        result = g_markup_parse_context_end_parse (ctx, &error);
-
-      if (verbose)
-        g_print ("%d: %s:\n  (error %d, \"%s\")\n  %s\n\n",
-                 i, tests[i].document,
-                 error ? error->code : 0,
-                 error ? error->message : "(no error)",
-                 string->str);
-
-      if (result)
-        {
-          if (error != NULL)
-            g_error ("parser successful but error is set: "
-                     "%s(%d) '%s'", g_quark_to_string (error->domain),
-                     error->code, error->message);
-
-          if (tests[i].error_code != 0)
-            g_error ("parser succeeded on test %d ('%s') but "
-                     "we expected a failure with code %d\n", i,
-                     tests[i].document, tests[i].error_code);
-        }
-      else
-        {
-          if (error->domain != G_MARKUP_ERROR)
-            g_error ("error occured on test %d ('%s') but is not in "
-                     "the GMarkupError domain, but rather '%s'", i,
-                     tests[i].document, g_quark_to_string (error->domain));
-
-          if (error->code != tests[i].error_code)
-            g_error ("failure expected with test %d ('%s') but it "
-                    "has error code %d (we expected code %d)", i,
-                    tests[i].document, error->code, tests[i].error_code);
-
-          if (strstr (error->message, tests[i].error_info) == NULL)
-            g_error ("failure message on test %d ('%s') fails "
-                     "to mention '%s' in the error message", i,
-                     tests[i].document, tests[i].error_info);
-        }
-
-      if (strcmp (tests[i].result, string->str) != 0)
-        g_error ("result on test %d ('%s') expected to be '%s' "
-                 "but came out as '%s'", i, tests[i].document,
-                 tests[i].result, string->str);
-
-      g_markup_parse_context_free (ctx);
-      g_string_free (string, TRUE);
-      g_clear_error (&error);
+      path = g_strdup_printf ("/markup/collect/%d", i);
+      g_test_add_data_func (path, &tests[i], test_collect);
+      g_free (path);
     }
 
-  if (verbose)
-    g_print ("\n*** all tests passed ***\n\n");
-
-  return 0;
+  return g_test_run ();
 }