[glib] Some more tests
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Some more tests
- Date: Tue, 22 Jun 2010 03:09:35 +0000 (UTC)
commit 7d14b5fbf1fcda2068dc01f9a0a2e4b9796daea6
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Jun 21 22:25:28 2010 -0400
Some more tests
glib/tests/checksum.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 72 insertions(+), 0 deletions(-)
---
diff --git a/glib/tests/checksum.c b/glib/tests/checksum.c
index b404a35..83f9e8d 100644
--- a/glib/tests/checksum.c
+++ b/glib/tests/checksum.c
@@ -610,6 +610,75 @@ test_checksum (gconstpointer d)
}
}
+static gint
+hexval (const gchar c)
+{
+ switch (c)
+ {
+ case '0' ... '9':
+ return c - '0';
+ case 'a' ... 'f':
+ return 10 + c - 'a';
+ default:
+ return 0;
+ }
+}
+
+static guint8 *
+sum_to_digest (const gchar *sum, gsize *len)
+{
+ gsize l;
+ guint8 *digest;
+ gint i;
+
+ g_assert (strlen (sum) % 2 == 0);
+ l = strlen (sum) / 2;
+
+ digest = g_malloc (l);
+ for (i = 0; i < l; i++)
+ digest[i] = (hexval(sum[2*i]) << 4) + hexval(sum[2*i+1]);
+
+ *len = l;
+ return digest;
+}
+
+static void
+test_checksum_reset (gconstpointer d)
+{
+ const ChecksumTest *test = d;
+ GChecksum *checksum;
+ const char *p;
+ int chunk_length;
+ guint8 *digest;
+ guint8 *digest2;
+ gsize len, len2;
+
+ checksum = g_checksum_new (test->checksum_type);
+
+ for (chunk_length = MIN (test->length, 1); chunk_length < test->length; chunk_length++)
+ {
+ for (p = FIXED_STR; p < FIXED_STR + test->length; p += chunk_length)
+ {
+ g_checksum_update (checksum, (const guchar *)p,
+ MIN (chunk_length, test->length - (p - FIXED_STR)));
+ }
+
+ len2 = g_checksum_type_get_length (test->checksum_type);
+ digest = sum_to_digest (test->sum, &len);
+ g_assert_cmpint (len, ==, len2);
+ digest2 = g_malloc (len2);
+ g_checksum_get_digest (checksum, digest2, &len2);
+ g_assert_cmpint (len, ==, len2);
+ g_assert (memcmp (digest, digest2, len) == 0);
+ g_free (digest);
+ g_free (digest2);
+
+ g_checksum_reset (checksum);
+ }
+
+ g_checksum_free (checksum);
+}
+
typedef struct {
GChecksumType checksum_type;
const gchar **sums;
@@ -643,6 +712,9 @@ test_checksum_string (gconstpointer d)
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); \
}
#define test_string(type) { \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]