summaryrefslogtreecommitdiff
path: root/test/dict.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/dict.c')
-rw-r--r--test/dict.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/dict.c b/test/dict.c
new file mode 100644
index 0000000..0c2e93e
--- /dev/null
+++ b/test/dict.c
@@ -0,0 +1,53 @@
+#include "utils/dict.h"
+
+#include "testutils.h"
+
+static void *myrealloc(void *ptr, size_t len, void *pw)
+{
+ UNUSED(pw);
+
+ return realloc(ptr, len);
+}
+
+int main(int argc, char **argv)
+{
+ hubbub_dict *dict;
+ const void *result;
+ void *context = NULL;
+
+ UNUSED(argc);
+ UNUSED(argv);
+
+ dict = hubbub_dict_create(myrealloc, NULL);
+ assert(dict != NULL);
+
+ assert(hubbub_dict_insert(dict, "Hello", (const void *) 123) ==
+ HUBBUB_OK);
+ assert(hubbub_dict_insert(dict, "Hello1", (const void *) 456) ==
+ HUBBUB_OK);
+
+ assert(hubbub_dict_search_step(dict, 'H', &result, &context) ==
+ HUBBUB_NEEDDATA);
+ assert(hubbub_dict_search_step(dict, 'e', &result, &context) ==
+ HUBBUB_NEEDDATA);
+ assert(hubbub_dict_search_step(dict, 'l', &result, &context) ==
+ HUBBUB_NEEDDATA);
+ assert(hubbub_dict_search_step(dict, 'l', &result, &context) ==
+ HUBBUB_NEEDDATA);
+ assert(hubbub_dict_search_step(dict, 'o', &result, &context) ==
+ HUBBUB_OK);
+ assert(result == (const void *) 123);
+ assert(hubbub_dict_search_step(dict, '1', &result, &context) ==
+ HUBBUB_OK);
+ assert(result == (const void *) 456);
+ assert(hubbub_dict_search_step(dict, '\0', &result, &context) ==
+ HUBBUB_OK);
+ assert(hubbub_dict_search_step(dict, 'x', &result, &context) ==
+ HUBBUB_INVALID);
+
+ hubbub_dict_destroy(dict);
+
+ printf("PASS\n");
+
+ return 0;
+}