[glib] checksum: Use functions instead of macros when building tests



commit dd2ecf7488190d7ffd7912f6bf81da3560ad3976
Author: Stef Walter <stefw gnome org>
Date:   Fri Aug 3 18:19:36 2012 +0200

    checksum: Use functions instead of macros when building tests
    
     * No need for hard to debug and maintain macros here.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=681151

 glib/tests/checksum.c |   65 ++++++++++++++++++++++++++++---------------------
 1 files changed, 37 insertions(+), 28 deletions(-)
---
diff --git a/glib/tests/checksum.c b/glib/tests/checksum.c
index eb170e2..fd2ffb9 100644
--- a/glib/tests/checksum.c
+++ b/glib/tests/checksum.c
@@ -725,30 +725,39 @@ test_checksum_string (gconstpointer d)
   g_free (checksum);
 }
 
-#define test(type, length) {                                    \
-  ChecksumTest *test;                                           \
-  gchar *path;                                                  \
-  test = g_new0 (ChecksumTest, 1);                              \
-  test->checksum_type = G_CHECKSUM_##type;                      \
-  test->sum = type##_sums[length];                              \
-  test->length = length;                                        \
-  path = g_strdup_printf ("/checksum/%s/%d", #type, length);    \
-  g_test_add_data_func (path, test, test_checksum);             \
-  g_free (path);                                                \
-  path = g_strdup_printf ("/checksum/%s/reset/%d", #type, length); \
-  g_test_add_data_func (path, test, test_checksum_reset);       \
-  g_free (path);                                                \
+static void
+add_checksum_test (GChecksumType  type,
+                   const char    *type_name,
+                   const char    *sum,
+                   gint           length)
+{
+  ChecksumTest *test;
+  gchar *path;
+  test = g_new0 (ChecksumTest, 1);
+  test->checksum_type = type;
+  test->sum = sum;
+  test->length = length;
+  path = g_strdup_printf ("/checksum/%s/%d", type_name, length);
+  g_test_add_data_func (path, test, test_checksum);
+  g_free (path);
+  path = g_strdup_printf ("/checksum/%s/reset/%d", type_name, length);
+  g_test_add_data_func (path, test, test_checksum_reset);
+  g_free (path);
 }
 
-#define test_string(type) {                                     \
-  ChecksumStringTest *test;                                     \
-  gchar *path;                                                  \
-  test = g_new0 (ChecksumStringTest, 1);                        \
-  test->checksum_type = G_CHECKSUM_##type;                      \
-  test->sums = type##_sums;                                     \
-  path = g_strdup_printf ("/checksum/%s/string", #type);        \
-  g_test_add_data_func (path, test, test_checksum_string);      \
-  g_free (path);                                                \
+static void
+add_checksum_string_test (GChecksumType   type,
+                          const gchar    *type_name,
+                          const gchar   **sums)
+{
+  ChecksumStringTest *test;
+  gchar *path;
+  test = g_new0 (ChecksumStringTest, 1);
+  test->checksum_type = type;
+  test->sums = sums;
+  path = g_strdup_printf ("/checksum/%s/string", type_name);
+  g_test_add_data_func (path, test, test_checksum_string);
+  g_free (path);
 }
 
 static void
@@ -768,16 +777,16 @@ main (int argc, char *argv[])
   g_test_add_func ("/checksum/unsupported", test_unsupported);
 
   for (length = 0; length <= FIXED_LEN; length++)
-    test (MD5, length);
-  test_string (MD5);
+    add_checksum_test (G_CHECKSUM_MD5, "MD5", MD5_sums[length], length);
+  add_checksum_string_test (G_CHECKSUM_MD5, "MD5", MD5_sums);
 
   for (length = 0; length <= FIXED_LEN; length++)
-    test (SHA1, length);
-  test_string (SHA1);
+    add_checksum_test (G_CHECKSUM_SHA1, "SHA1", SHA1_sums[length], length);
+  add_checksum_string_test (G_CHECKSUM_SHA1, "SHA1", SHA1_sums);
 
   for (length = 0; length <= FIXED_LEN; length++)
-    test (SHA256, length);
-  test_string (SHA256);
+    add_checksum_test (G_CHECKSUM_SHA256, "SHA256", SHA256_sums[length], length);
+  add_checksum_string_test (G_CHECKSUM_SHA256, "SHA256", SHA256_sums);
 
   return g_test_run ();
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]