diff options
author | Stef Walter <stefw@gnome.org> | 2013-03-25 21:16:28 +0100 |
---|---|---|
committer | Stef Walter <stefw@gnome.org> | 2013-03-25 21:17:05 +0100 |
commit | b0e44f8e1e589726c95506da5121e95a54269fd7 (patch) | |
tree | df03d4751dbeb65c67f3a5d505d83a63f3cbe6af | |
parent | 3f74a3b32ce42cc7e38bdbf8349f976000c3af4c (diff) | |
download | p11-kit-b0e44f8e1e589726c95506da5121e95a54269fd7.tar.gz |
Fix testing of murmur hash on bigendian systems
The murmur hash produces different output depending on the architecture
https://bugzilla.redhat.com/show_bug.cgi?id=927394
-rw-r--r-- | common/tests/test-hash.c | 60 |
1 files changed, 23 insertions, 37 deletions
diff --git a/common/tests/test-hash.c b/common/tests/test-hash.c index c8694e1..a1cb917 100644 --- a/common/tests/test-hash.c +++ b/common/tests/test-hash.c @@ -135,44 +135,30 @@ test_md5 (CuTest *cu) static void test_murmur2 (CuTest *cu) { - struct { - const char *input; - const char *input2; - int hash; - } fixtures[] = { - { "one", NULL, 1910179066 }, - { "two", NULL, 396151652 }, - { "four", NULL, -2034170174 }, - { "seven", NULL, -588341181 }, - /* Note that these are identical output */ - { "eleven", NULL, -37856894 }, - { "ele", "ven", -37856894 }, - { NULL }, - }; - - uint32_t first; - uint32_t second; - int i; + uint32_t one, two, four, seven, eleven, split; - assert (sizeof (first) == P11_HASH_MURMUR2_LEN); - for (i = 0; fixtures[i].input != NULL; i++) { - p11_hash_murmur2 ((unsigned char *)&first, - fixtures[i].input, - strlen (fixtures[i].input), - fixtures[i].input2, - fixtures[i].input2 ? strlen (fixtures[i].input2) : 0, - NULL); - - p11_hash_murmur2 ((unsigned char *)&second, - fixtures[i].input, - strlen (fixtures[i].input), - fixtures[i].input2, - fixtures[i].input2 ? strlen (fixtures[i].input2) : 0, - NULL); - - CuAssertIntEquals (cu, fixtures[i].hash, first); - CuAssertIntEquals (cu, fixtures[i].hash, second); - } + assert (sizeof (one) == P11_HASH_MURMUR2_LEN); + + p11_hash_murmur2 ((unsigned char *)&one, "one", 3, NULL); + p11_hash_murmur2 ((unsigned char *)&two, "two", 3, NULL); + p11_hash_murmur2 ((unsigned char *)&four, "four", 4, NULL); + p11_hash_murmur2 ((unsigned char *)&seven, "seven", 5, NULL); + p11_hash_murmur2 ((unsigned char *)&eleven, "eleven", 6, NULL); + p11_hash_murmur2 ((unsigned char *)&split, "ele", 3, "ven", 3, NULL); + + CuAssertTrue (cu, one != two); + CuAssertTrue (cu, one != four); + CuAssertTrue (cu, one != seven); + CuAssertTrue (cu, one != eleven); + + CuAssertTrue (cu, two != four); + CuAssertTrue (cu, two != seven); + CuAssertTrue (cu, two != eleven); + + CuAssertTrue (cu, four != seven); + CuAssertTrue (cu, four != eleven); + + CuAssertTrue (cu, split == eleven); } static void |