Catch up with Gearman's libtest
[m6w6/libmemcached] / tests / hash_plus.cc
index cbf2fdf9dff1ac158c42662086cf583bd6131586..9cb4b384e777e68ea011a495925798751c40f281 100644 (file)
@@ -1,23 +1,30 @@
 /*
   C++ to libhashkit
 */
-#include "test.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
 
-#include <libhashkit/hashkit.h>
+#include <config.h>
 
-#include "hash_results.h"
+#include <libtest/test.hpp>
 
-static test_return_t exists_test(void *obj __attribute__((unused)))
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+
+#include <libhashkit-1.0/hashkit.hpp>
+
+using namespace libtest;
+
+#include "tests/hash_results.h"
+
+static test_return_t exists_test(void *)
 {
   Hashkit hashk;
+  (void)hashk;
 
   return TEST_SUCCESS;
 }
 
-static test_return_t new_test(void *obj __attribute__((unused)))
+static test_return_t new_test(void *)
 {
   Hashkit *hashk= new Hashkit;
 
@@ -28,7 +35,7 @@ static test_return_t new_test(void *obj __attribute__((unused)))
   return TEST_SUCCESS;
 }
 
-static test_return_t copy_test(void *obj __attribute__((unused)))
+static test_return_t copy_test(void *)
 {
   Hashkit *hashk= new Hashkit;
   Hashkit *copy(hashk);
@@ -40,7 +47,7 @@ static test_return_t copy_test(void *obj __attribute__((unused)))
   return TEST_SUCCESS;
 }
 
-static test_return_t assign_test(void *obj __attribute__((unused)))
+static test_return_t assign_test(void *)
 {
   Hashkit hashk;
   Hashkit copy;
@@ -52,17 +59,15 @@ static test_return_t assign_test(void *obj __attribute__((unused)))
   return TEST_SUCCESS;
 }
 
-static test_return_t digest_test(void *obj __attribute__((unused)))
+static test_return_t digest_test(void *)
 {
   Hashkit hashk;
-  uint32_t value;
-
-  value= hashk.digest("Foo", sizeof("Foo"));
+  test_true(hashk.digest("Foo", sizeof("Foo")));
 
   return TEST_SUCCESS;
 }
 
-static test_return_t set_function_test(void *obj __attribute__((unused)))
+static test_return_t set_function_test(void *)
 {
   Hashkit hashk;
   hashkit_hash_algorithm_t algo_list[]= { 
@@ -77,52 +82,65 @@ static test_return_t set_function_test(void *obj __attribute__((unused)))
     HASHKIT_HASH_JENKINS,
     HASHKIT_HASH_MAX
   };
-  hashkit_hash_algorithm_t *algo;
 
 
-  for (algo= algo_list; *algo != HASHKIT_HASH_MAX; algo++)
+  for (hashkit_hash_algorithm_t *algo= algo_list; *algo != HASHKIT_HASH_MAX; algo++)
   {
-    hashkit_return_t rc;
-    uint32_t x;
-    const char **ptr;
-    uint32_t *list;
+    hashkit_return_t rc= hashk.set_function(*algo);
 
-    rc= hashk.set_function(*algo);
+    if (rc == HASHKIT_INVALID_ARGUMENT)
+    {
+      continue;
+    }
 
-    test_true(rc == HASHKIT_SUCCESS);
+    test_compare(HASHKIT_SUCCESS, rc);
 
+    uint32_t *list;
     switch (*algo)
     {
     case HASHKIT_HASH_DEFAULT:
       list= one_at_a_time_values;
       break;
+
     case HASHKIT_HASH_MD5:
       list= md5_values;
       break;
+
     case HASHKIT_HASH_CRC:
       list= crc_values;
       break;
+
     case HASHKIT_HASH_FNV1_64:
       list= fnv1_64_values;
       break;
+
     case HASHKIT_HASH_FNV1A_64:
       list= fnv1a_64_values;
       break;
+
     case HASHKIT_HASH_FNV1_32:
       list= fnv1_32_values;
       break;
+
     case HASHKIT_HASH_FNV1A_32:
       list= fnv1a_32_values;
       break;
+
     case HASHKIT_HASH_HSIEH:
       list= hsieh_values;
       break;
+
     case HASHKIT_HASH_MURMUR:
+#ifdef WORDS_BIGENDIAN
+      continue;
+#endif
       list= murmur_values;
       break;
+
     case HASHKIT_HASH_JENKINS:
       list= jenkins_values;
       break;
+
     case HASHKIT_HASH_CUSTOM:
     case HASHKIT_HASH_MAX:
     default:
@@ -131,33 +149,37 @@ static test_return_t set_function_test(void *obj __attribute__((unused)))
     }
 
     // Now we make sure we did set the hash correctly.
+    uint32_t x;
+    const char **ptr;
     for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
     {
       uint32_t hash_val;
 
       hash_val= hashk.digest(*ptr, strlen(*ptr));
-      test_true(list[x] == hash_val);
+      char buffer[1024];
+      snprintf(buffer, sizeof(buffer), "%lu %lus %s", (unsigned long)list[x], (unsigned long)hash_val, libhashkit_string_hash(*algo));
+      test_true_got(list[x] == hash_val, buffer);
     }
   }
 
   return TEST_SUCCESS;
 }
 
-static test_return_t set_distribution_function_test(void *obj __attribute__((unused)))
+static test_return_t set_distribution_function_test(void *)
 {
   Hashkit hashk;
   hashkit_return_t rc;
 
   rc= hashk.set_distribution_function(HASHKIT_HASH_CUSTOM);
-  test_true(rc == HASHKIT_FAILURE);
+  test_true_got(rc == HASHKIT_FAILURE or rc == HASHKIT_INVALID_ARGUMENT, hashkit_strerror(NULL, rc));
 
-  rc= hashk.set_distribution_function(HASHKIT_HASH_JENKINS);
-  test_true(rc == HASHKIT_SUCCESS);
+  test_compare(HASHKIT_SUCCESS,
+               hashk.set_distribution_function(HASHKIT_HASH_JENKINS));
 
   return TEST_SUCCESS;
 }
 
-static test_return_t compare_function_test(void *obj __attribute__((unused)))
+static test_return_t compare_function_test(void *)
 {
   Hashkit a, b;
 
@@ -175,14 +197,14 @@ static test_return_t compare_function_test(void *obj __attribute__((unused)))
 }
 
 test_st basic[] ={
-  { "exists", 0, exists_test },
-  { "new", 0, new_test },
-  { "copy", 0, copy_test },
-  { "assign", 0, assign_test },
-  { "digest", 0, digest_test },
-  { "set_function", 0, set_function_test },
-  { "set_distribution_function", 0, set_distribution_function_test },
-  { "compare", 0, compare_function_test },
+  { "exists", 0, reinterpret_cast<test_callback_fn*>(exists_test) },
+  { "new", 0, reinterpret_cast<test_callback_fn*>(new_test) },
+  { "copy", 0, reinterpret_cast<test_callback_fn*>(copy_test) },
+  { "assign", 0, reinterpret_cast<test_callback_fn*>(assign_test) },
+  { "digest", 0, reinterpret_cast<test_callback_fn*>(digest_test) },
+  { "set_function", 0, reinterpret_cast<test_callback_fn*>(set_function_test) },
+  { "set_distribution_function", 0, reinterpret_cast<test_callback_fn*>(set_distribution_function_test) },
+  { "compare", 0, reinterpret_cast<test_callback_fn*>(compare_function_test) },
   { 0, 0, 0}
 };
 
@@ -191,7 +213,7 @@ collection_st collection[] ={
   {0, 0, 0, 0}
 };
 
-void get_world(world_st *world)
+void get_world(Framework *world)
 {
-  world->collections= collection;
+  world->collections(collection);
 }