summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorJSDurand <mmemmew@gmail.com>2022-01-12 20:26:08 +0800
committerJSDurand <mmemmew@gmail.com>2022-01-12 20:26:08 +0800
commit5730d6c04258e192195bfbbbed76d68fd78ed458 (patch)
tree92e64bd9576155000cf462ed1db3624e3bed3f8d /src/test
parent91016bd3855375796fd1eabd501ebc12491f2655 (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.c43
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;
+}