From 27718f093689dbd3decd7021eaa97327f578c8f3 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 7 Mar 2019 22:19:57 +0100 Subject: Add hash map --- tests/main.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 tests/main.c (limited to 'tests/main.c') 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 +#include +#include "../include/compiler.h" +#include "../include/std/hash_map.h" +#include "../include/std/hash.h" +#include +#include + +#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); +} -- cgit v1.2.3