#include #include #include #include #include "hash_table.h" bool found[10000]; int main() { printf("[TEST] htable\n"); Int2IntHashTable ht; Int2IntHashTable_init(&ht); for (int i = 0; i < 10000; i++) { Int2IntHashTable_insert(&ht, i, i*2); 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(Int2IntHashTable_get(&ht, i) != NULL); assert(*Int2IntHashTable_get(&ht, i) == i * 2); int t = 10000 + i; assert(Int2IntHashTable_get(&ht, t) == NULL); } memset(found, 0, sizeof(bool) * 10000); Int2IntHashTableIter iter = Int2IntHashTable_begin(&ht); while (iter != NULL) { 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++) { Int2IntHashTableIter iter = Int2IntHashTable_find(&ht, i); Int2IntHashTable_remove(&ht, iter); } for (int i = 0; i < 5000; i++) { assert(Int2IntHashTable_find(&ht, i) == NULL); int t = 5000 + i; assert(Int2IntHashTable_find(&ht, t) != NULL); } for (int i = 0; i < 5000; i++) { Int2IntHashTable_insert(&ht, i, i); } memset(found, 0, sizeof(bool) * 10000); iter = Int2IntHashTable_begin(&ht); while (iter != NULL) { found[iter->key] = true; iter = Int2IntHashTable_next(&ht, iter); } for (int i = 0; i < 10000; i++) { assert(found[i]); } Int2IntHashTable_free(&ht); printf("[PASS] htable\n"); }