// test_map.c // Map unit test for libutil // Copyright (C) 2021, Jakob Wakeling // MIT Licence #include "../map.h" #include "../util.h" #include "unit.h" #include #include int main(void) { { map_initial_capacity = 4; map m = map_init(NULL); map_insert(&m, "key0", "value0"); map_insert(&m, "key4", "value4"); map_insert(&m, "key3", "value3"); ASSERT("T000 INSERT AND LOOKUP STRING 0", strcmp(map_lookup(&m, "key0"), "value0") == 0); ASSERT("T001 INSERT AND LOOKUP STRING 1", strcmp(map_lookup(&m, "key4"), "value4") == 0); ASSERT("T002 INSERT AND LOOKUP STRING 2", strcmp(map_lookup(&m, "key3"), "value3") == 0); ASSERT("T003 LOOKUP NONEXISTENT STRING", map_lookup(&m, "key1") == NULL); map_remove(&m, "key4"); ASSERT("T004 REMOVE AND LOOKUP STRING", map_lookup(&m, "key4") == NULL); ASSERT("T006 LOOKUP STRING AFTER REMOVE 0", strcmp(map_lookup(&m, "key0"), "value0") == 0); ASSERT("T007 LOOKUP STRING AFTER REMOVE 1", strcmp(map_lookup(&m, "key3"), "value3") == 0); ASSERT("T008 REMOVE NONEXISTENT STRING", map_remove(&m, "key4") == NULL); map_free(&m); } { map_initial_capacity = 4; map m = map_init(NULL); map_insert(&m, "key0", "value0"); map_insert(&m, "key3", "value3"); map_insert(&m, "key4", "value4"); ASSERT("T100 INSERT AND LOOKUP STRING 0", strcmp(map_lookup(&m, "key0"), "value0") == 0); ASSERT("T101 INSERT AND LOOKUP STRING 1", strcmp(map_lookup(&m, "key3"), "value3") == 0); ASSERT("T102 INSERT AND LOOKUP STRING 2", strcmp(map_lookup(&m, "key4"), "value4") == 0); ASSERT("T103 LOOKUP NONEXISTENT STRING", map_lookup(&m, "key1") == NULL); map_remove(&m, "key4"); ASSERT("T104 REMOVE AND LOOKUP STRING", map_lookup(&m, "key4") == NULL); ASSERT("T106 LOOKUP STRING AFTER REMOVE 0", strcmp(map_lookup(&m, "key0"), "value0") == 0); ASSERT("T107 LOOKUP STRING AFTER REMOVE 1", strcmp(map_lookup(&m, "key3"), "value3") == 0); ASSERT("T108 REMOVE NONEXISTENT STRING", map_remove(&m, "key4") == NULL); map_free(&m); } printf("%d of %d tests passed\n", testspassed, testsrun); return testsfailed; }