Created SILC Crypto Toolkit git repository.
[crypto.git] / lib / silcutil / tests / test_silchashtable.c
diff --git a/lib/silcutil/tests/test_silchashtable.c b/lib/silcutil/tests/test_silchashtable.c
deleted file mode 100644 (file)
index 742b372..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-/* Hash table tests */
-
-#include "silc.h"
-
-typedef struct entry_struct {
-  char name[8];
-  int val;
-} *entry;
-
-SilcBool dump = FALSE;
-SilcBool auto_rehash = TRUE;
-int count = 2000;
-SilcHashTable t = NULL;
-
-SilcUInt32 hash_entry(void *key, void *user_context)
-{
-  entry e = key;
-  return e->val + silc_hash_string(e->name, NULL);
-}
-
-SilcBool hash_compare(void *key1, void *key2, void *user_context)
-{
-  entry e = key1;
-  entry e2 = key2;
-  if (e->val == e2->val && !strcmp(e->name, e2->name))
-    return TRUE;
-  return FALSE;
-}
-
-void hash_destructor(void *key, void *context, void *user_context)
-{
-  entry e = key;
-  char *name = context;
-  if (dump)
-    SILC_LOG_DEBUG(("e=%p, e->val=%d, e->name=%s, context=%s",
-                   e, e->val, e->name, name));
-  memset(e, 'F', sizeof(*e));
-  silc_free(e);
-}
-
-SilcBool add_entries()
-{
-  entry e;
-  int i;
-
-  SILC_LOG_DEBUG(("Adding %d entries", count));
-
-  for (i = 0; i < count; i++) {
-    e = silc_calloc(1, sizeof(*e));
-    if (!e)
-      return FALSE;
-    silc_snprintf(e->name, sizeof(e->name), "%d", i);
-    e->val = i;
-
-    silc_hash_table_add(t, (void *)e, (void *)e->name);
-  }
-
-  SILC_LOG_DEBUG(("Hash table entry count: %d", silc_hash_table_count(t)));
-
-  return TRUE;
-}
-
-SilcBool del_entries_with_list()
-{
-  SilcHashTableList htl;
-  entry e;
-  char *name;
-
-  SILC_LOG_DEBUG(("Deleting entries with SilcHashTableList"));
-
-  silc_hash_table_list(t, &htl);
-  while (silc_hash_table_get(&htl, (void **)&e, (void **)&name)) {
-    if (!silc_hash_table_del(t, e))
-      return FALSE;
-  }
-  silc_hash_table_list_reset(&htl);
-
-  SILC_LOG_DEBUG(("Hash table entry count: %d", silc_hash_table_count(t)));
-
-  return TRUE;
-}
-
-void del_foreach(void *key, void *context, void *user_context)
-{
-  entry e = key;
-  char *name = context;
-  if (dump)
-    SILC_LOG_DEBUG(("del_foreach found e=%p, e->val=%d, e->name=%s, context=%s",
-                   e, e->val, e->name, name));
-  silc_hash_table_del(t, key);
-}
-
-SilcBool del_n_entries_foreach()
-{
-  struct entry_struct f;
-  int i;
-
-  SILC_LOG_DEBUG(("Deleting keys 0-%d with foreach", count));
-
-  for (i = 0; i < count; i++) {
-    memset(&f, 0, sizeof(f));
-    silc_snprintf(f.name, sizeof(f.name), "%d", i);
-    f.val = i;
-
-    silc_hash_table_find_foreach(t, &f, del_foreach, NULL);
-  }
-
-  return TRUE;
-}
-
-SilcBool del_entries_foreach()
-{
-  SILC_LOG_DEBUG(("Deleting all entries with foreach"));
-  silc_hash_table_foreach(t, del_foreach, NULL);
-  return TRUE;
-}
-
-SilcBool alloc_table()
-{
-  SILC_LOG_DEBUG(("Allocating hash table with %d entries (%s)",
-                 count, auto_rehash ? "auto rehash" : "no auto rehash"));
-
-  t = silc_hash_table_alloc(NULL, 0, hash_entry, NULL,
-                           hash_compare, NULL,
-                           hash_destructor, NULL, auto_rehash);
-
-  if (!add_entries())
-    return FALSE;
-
-  SILC_LOG_DEBUG(("Hash table size: %d", silc_hash_table_size(t)));
-
-  if (silc_hash_table_count(t) != count) {
-    SILC_LOG_DEBUG(("Wrong table count %d", count));
-    return FALSE;
-  }
-
-  return TRUE;
-}
-
-SilcBool delete_table_with_list()
-{
-
-  SILC_LOG_DEBUG(("Deleting entries with SilcHashTableList"));
-
-  if (!del_entries_with_list())
-    return FALSE;
-
-  SILC_LOG_DEBUG(("Hash table size: %d", silc_hash_table_size(t)));
-
-  if (silc_hash_table_count(t) != 0) {
-    SILC_LOG_DEBUG(("Wrong table count %d != 0", count));
-    return FALSE;
-  }
-
-  silc_hash_table_free(t);
-  t = NULL;
-
-  return TRUE;
-}
-
-SilcBool find_entries()
-{
-  struct entry_struct f;
-  entry e;
-  char *name;
-  int i;
-
-  SILC_LOG_DEBUG(("Finding %d entries", count));
-
-  for (i = 0; i < count; i++) {
-    memset(&f, 0, sizeof(f));
-    silc_snprintf(f.name, sizeof(f.name), "%d", i);
-    f.val = i;
-
-    /* Find */
-    if (!silc_hash_table_find(t, &f, (void **)&e, (void **)&name))
-      return FALSE;
-
-    /* Find itself with context */
-    if (!silc_hash_table_find_by_context(t, e, e->name, NULL))
-      return FALSE;
-  }
-
-  return TRUE;
-}
-
-SilcBool dump_table()
-{
-  SilcHashTableList htl;
-  entry e;
-  char *name;
-  SilcBool dumpped = FALSE;
-
-  SILC_LOG_DEBUG(("Dumping hash table entries"));
-
-  silc_hash_table_list(t, &htl);
-  while (silc_hash_table_get(&htl, (void **)&e, (void **)&name)) {
-    dumpped = TRUE;
-    if (dump)
-      SILC_LOG_DEBUG(("e=%p, e->val=%d, e->name=%s, context=%s",
-                     e, e->val, e->name, name));
-  }
-  silc_hash_table_list_reset(&htl);
-
-  return dumpped;
-}
-
-int main(int argc, char **argv)
-{
-  SilcBool success = FALSE;
-  SilcGetOptStruct op = SILC_GETOPT_INIT;
-  int opt;
-  int i;
-
-  while ((opt = silc_getopt(argc, argv, "de::D", &op)) != -1) {
-    switch (opt) {
-      case 'd':
-       silc_log_debug(TRUE);
-       silc_log_debug_hexdump(TRUE);
-       silc_log_quick(TRUE);
-       silc_log_set_debug_string("*table*,*errno*");
-       break;
-
-      case 'D':
-       silc_log_debug(TRUE);
-       dump = TRUE;
-       silc_log_set_debug_string("*table*,*errno*");
-       break;
-
-      case 'e':
-       silc_log_debug(TRUE);
-       fprintf(stderr, "%s\n", op.opt_arg);
-       if (op.opt_arg) {
-         dump = TRUE;
-         silc_log_set_debug_string(op.opt_arg);
-       }
-       break;
-
-      default:
-       exit(1);
-       break;
-    }
-  }
-
-  if (!alloc_table())
-    goto err;
-  if (!dump_table())
-    goto err;
-  if (!delete_table_with_list())
-    goto err;
-
-  count = 1387;
-  auto_rehash = FALSE;
-  if (!alloc_table())
-    goto err;
-  if (!dump_table())
-    goto err;
-  SILC_LOG_DEBUG(("rehash"));
-  silc_hash_table_rehash(t, 0);
-  SILC_LOG_DEBUG(("Hash table entry count: %d", silc_hash_table_count(t)));
-  SILC_LOG_DEBUG(("Hash table size: %d", silc_hash_table_size(t)));
-  if (!delete_table_with_list())
-    goto err;
-
-  count = 999;
-  auto_rehash = TRUE;
-  if (!alloc_table())
-    goto err;
-  count = 17999;
-  if (!add_entries())
-    goto err;
-  SILC_LOG_DEBUG(("rehash"));
-  silc_hash_table_rehash(t, 0);
-  SILC_LOG_DEBUG(("Hash table entry count: %d", silc_hash_table_count(t)));
-  SILC_LOG_DEBUG(("Hash table size: %d", silc_hash_table_size(t)));
-  if (!del_entries_with_list())
-    goto err;
-  SILC_LOG_DEBUG(("rehash"));
-  silc_hash_table_rehash(t, 0);
-  SILC_LOG_DEBUG(("Hash table entry count: %d", silc_hash_table_count(t)));
-  SILC_LOG_DEBUG(("Hash table size: %d", silc_hash_table_size(t)));
-  count = 999;
-  if (!add_entries())
-    goto err;
-  /* Adding duplicates */
-  for (i = 0; i < 30; i++) {
-    count = 50;
-    if (!add_entries())
-      goto err;
-  }
-  count = 700;
-  if (!find_entries())
-    goto err;
-  count = 500;
-  if (!del_n_entries_foreach())
-    goto err;
-  count = 999;
-  if (!add_entries())
-    goto err;
-  count = 700;
-  if (!find_entries())
-    goto err;
-  if (!dump_table())
-    goto err;
-  if (!del_entries_foreach())
-    goto err;
-  if (!delete_table_with_list())
-    goto err;
-
-  success = TRUE;
-
- err:
-  SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
-  fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");
-
-  return success;
-}