diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_htable.c | 48 |
1 files changed, 20 insertions, 28 deletions
diff --git a/tests/test_htable.c b/tests/test_htable.c index 8b93af0..3608b5c 100644 --- a/tests/test_htable.c +++ b/tests/test_htable.c @@ -4,69 +4,61 @@ #include <string.h> #include "hash_table.h" -#include "mmhash.h" - -static uint64_t hash(void *i) { return mmhash(i, sizeof(int), 0); } - -static bool eq(void *x, void *y) { - int *a = x, *b = y; - return *a == *b; -} bool found[10000]; int main() { printf("[TEST] htable\n"); - HashTable ht; - init_hash_table(&ht, sizeof(int), -1, hash, eq); + Int2IntHashTable ht; + Int2IntHashTable_init(&ht); for (int i = 0; i < 10000; i++) { - hash_table_insert(&ht, &i); - assert(ht.size == i + 1); - assert(ht.taken == i + 1); - assert(ht.cap >= i + 1); + Int2IntHashTable_insert(&ht, &i, &i); + assert(ht.ht.size == i + 1); + assert(ht.ht.taken == i + 1); + assert(ht.ht.cap >= i + 1); } for (int i = 0; i < 10000; i++) { - assert(hash_table_find(&ht, &i) != NULL); + assert(Int2IntHashTable_get(&ht, &i) != NULL); int t = 10000 + i; - assert(hash_table_find(&ht, &t) == NULL); + assert(Int2IntHashTable_get(&ht, &t) == NULL); } memset(found, 0, sizeof(bool) * 10000); - int *iter = hash_table_begin(&ht); + Int2IntHashTableIter iter = Int2IntHashTable_begin(&ht); while (iter != NULL) { - found[*iter] = true; - iter = hash_table_next(&ht, iter); + found[iter->key] = true; + iter = Int2IntHashTable_next(&ht, iter); } for (int i = 0; i < 10000; i++) { assert(found[i]); } for (int i = 0; i < 5000; i++) { - int *iter = hash_table_find(&ht, &i); - hash_table_remove(&ht, iter); + Int2IntHashTableIter iter = Int2IntHashTable_find(&ht, &i); + Int2IntHashTable_remove(&ht, iter); } for (int i = 0; i < 5000; i++) { - assert(hash_table_find(&ht, &i) == NULL); + assert(Int2IntHashTable_find(&ht, &i) == NULL); int t = 5000 + i; - assert(hash_table_find(&ht, &t) != NULL); + assert(Int2IntHashTable_find(&ht, &t) != NULL); } for (int i = 0; i < 5000; i++) { - hash_table_insert(&ht, &i); + Int2IntHashTable_insert(&ht, &i, &i); } memset(found, 0, sizeof(bool) * 10000); - iter = hash_table_begin(&ht); + iter = Int2IntHashTable_begin(&ht); while (iter != NULL) { - found[*iter] = true; - iter = hash_table_next(&ht, iter); + found[iter->key] = true; + iter = Int2IntHashTable_next(&ht, iter); } for (int i = 0; i < 10000; i++) { assert(found[i]); } - destroy_hash_table(&ht); + Int2IntHashTable_free(&ht); printf("[PASS] htable\n"); } |
