aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_htable.c48
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");
}