diff options
author | JSDurand <mmemmew@gmail.com> | 2022-01-12 20:26:08 +0800 |
---|---|---|
committer | JSDurand <mmemmew@gmail.com> | 2022-01-12 20:26:08 +0800 |
commit | 5730d6c04258e192195bfbbbed76d68fd78ed458 (patch) | |
tree | 92e64bd9576155000cf462ed1db3624e3bed3f8d /src/test | |
parent | 91016bd3855375796fd1eabd501ebc12491f2655 (diff) |
Implement a simple hash table.
It is a very basic and simple hash table. It is so simple that I
hesitate to call it a hash table. Anyways, I think it suffices for my
purposes here.
* Makefile.am: Add necessary files.
* grammar.c (new_tnt_string): Formatting.
* ht.c (new_ht): Constructor
(destroy_ht): Destructor
(ht_expand): Rehash
(ht_insert, ht_delete, ht_find): Main functions.
* list.c (add_to_list, list_assure_size): Modify the use of realloc.
* test/check_ht.c: Ensure this is working correctly.
* util.c (read_entire_file): Modify the use of realloc.
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/check_ht.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/test/check_ht.c b/src/test/check_ht.c new file mode 100644 index 0000000..2419ce5 --- /dev/null +++ b/src/test/check_ht.c @@ -0,0 +1,43 @@ +#include <stdio.h> +#include "../ht.h" + +int main(int UNUSED argc, char ** UNUSED argv) +{ + ht *htp = new_ht(HT_INIT_CAP); + + NUM *temp = MYALLOC(NUM, 1), key = 1023; + *temp = 12345; + + if (ht_insert(htp, key, temp)) { + fleprintf0("Fail to insert\n"); + free(temp); + destroy_ht(htp, 1); + return 1; + } + + if ((temp = ht_find(htp, key))) { + fleprintf("We found value %ld for key %ld\n", + *temp, key); + } else + fleprintf("We found no value for key %ld\n", key); + + if (ht_delete(htp, key, 1)) { + fleprintf("Fail to delete key %ld\n", key); + destroy_ht(htp, 1); + return 1; + } + + fleprintf0("After the deletion, "); + + if ((temp = ht_find(htp, key))) { + eprintf("We found value %ld for key %ld\n", + *temp, key); + destroy_ht(htp, 1); + return 1; + } else { + eprintf("We found no value for key %ld\n", key); + } + + destroy_ht(htp, 1); + return 0; +} |