aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2019-03-07 22:19:57 +0100
committerdec05eba <dec05eba@protonmail.com>2020-07-25 14:36:46 +0200
commit27718f093689dbd3decd7021eaa97327f578c8f3 (patch)
treec41ab4bb5727b22be35c1237279cfdfec0a27561 /tests
parent81b6004928015ced29b0b949e35753977aa17606 (diff)
Add hash map
Diffstat (limited to 'tests')
-rw-r--r--tests/main.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/main.c b/tests/main.c
new file mode 100644
index 0000000..881866e
--- /dev/null
+++ b/tests/main.c
@@ -0,0 +1,61 @@
+#include <stdio.h>
+#include <string.h>
+#include "../include/compiler.h"
+#include "../include/std/hash_map.h"
+#include "../include/std/hash.h"
+#include <stdio.h>
+#include <stdlib.h>
+
+#define REQUIRE_EQ_INT(expected, actual) do{\
+ if((expected) != (actual)) {\
+ fprintf(stderr, "%s:%d: Assert failed (%s vs %s).\nExpected %d, got %d.\n", __FILE__, __LINE__, #expected, #actual, (expected), (actual));\
+ exit(1);\
+ }\
+}while(0)
+
+static CHECK_RESULT int test_hash_map() {
+ ScopedAllocator scoped_allocator;
+ HashMap hash_map;
+ int value;
+ bool has_key;
+
+ return_if_error(scoped_allocator_init(&scoped_allocator));
+ cleanup_if_error(hash_map_init(&hash_map, &scoped_allocator, sizeof(int), hash_compare_string, amal_hash_string));
+
+ value = 34;
+ return_if_error(hash_map_insert(&hash_map, create_buffer_view("hello", 5), &value));
+ return_if_error(hash_map_insert(&hash_map, create_buffer_view("hellp", 5), &value));
+ has_key = hash_map_get(&hash_map, create_buffer_view("hello", 5), &value);
+ if(!has_key) {
+ fprintf(stderr, "Missing value for key \"hello\" in hash map\n");
+ exit(1);
+ }
+ REQUIRE_EQ_INT(34, value);
+
+ cleanup:
+ scoped_allocator_deinit(&scoped_allocator);
+ return 0;
+}
+
+int main() {
+ amal_compiler compiler;
+ int result;
+ const char *filepath;
+ filepath = "tests/main.amal";
+
+ return_if_error(test_hash_map());
+
+ result = amal_compiler_init(&compiler);
+ if(result != AMAL_COMPILER_OK) {
+ fprintf(stderr, "Failed to initialize compiler, error code: %d\n", result);
+ return 1;
+ }
+
+ result = amal_compiler_load_file(&compiler, create_buffer_view(filepath, strlen(filepath)));
+ if(result != AMAL_COMPILER_OK) {
+ fprintf(stderr, "Failed to load file, error code: %d\n", result);
+ return 1;
+ }
+
+ return amal_compiler_deinit(&compiler);
+}