From bcf80c29138e88273a76b1ca4dc71dada702d3cb Mon Sep 17 00:00:00 2001 From: En Yi Date: Sun, 29 Dec 2024 19:23:07 +0800 Subject: [PATCH] Test out map of maps --- engine/tests/base/manual/cc_test.c | 64 +++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 10 deletions(-) diff --git a/engine/tests/base/manual/cc_test.c b/engine/tests/base/manual/cc_test.c index 698bd7c..c791ede 100644 --- a/engine/tests/base/manual/cc_test.c +++ b/engine/tests/base/manual/cc_test.c @@ -4,22 +4,66 @@ int main(void) { assert(mem_arena_init(4)); + printf("Initial\n"); mem_arena_print(); - cc_map( int, int ) int_map; - cc_init(&int_map); - cc_reserve(&int_map, 2048); + { + printf("Single map\n"); + cc_map( int, int ) int_map; + cc_init(&int_map); + cc_reserve(&int_map, 2048); - cc_insert(&int_map, 1, 4); - cc_insert(&int_map, 2, 7); - cc_insert(&int_map, 7, 1); - cc_insert(&int_map, 4, 8); + cc_insert(&int_map, 1, 4); + cc_insert(&int_map, 2, 7); + cc_insert(&int_map, 7, 1); + cc_insert(&int_map, 4, 8); - mem_arena_print(); + printf("Insertion\n"); + mem_arena_print(); - cc_cleanup(&int_map); + cc_cleanup(&int_map); - mem_arena_print(); + printf("Clean up\n"); + mem_arena_print(); + } + + { + printf("Map of maps\n"); + cc_map(int, cc_map(int,int)) map_of_map; + cc_init(&map_of_map); + cc_reserve(&map_of_map, 32); + for (size_t i = 0; i < 10; i += 2) { + cc_map(int, int) base_map; + cc_init(&base_map); + cc_reserve(&base_map, 2048); + cc_insert(&map_of_map, i, base_map); + } + + cc_map(int, int)* s = cc_get(&map_of_map, 3); + printf("get: %p\n", s); + s = cc_get(&map_of_map, 2); + printf("get: %p\n", s); + cc_insert(s, 3, 5); + cc_insert(s, 4, 5); + cc_insert(s, 2, 5); + cc_insert(s, 1, 5); + cc_insert(s, 8, 5); + + s = cc_get(&map_of_map, 2); + + int* v = cc_get(s, 2); + printf("get: %i\n", *v); + mem_arena_print(); + + for (size_t i = 0; i < 10; i += 2) { + cc_map(int, int)* base_map = cc_get(&map_of_map, i);; + cc_cleanup(base_map); + } + cc_cleanup(&map_of_map); + + printf("Clean up\n"); + mem_arena_print(); + } mem_arena_deinit(); return 0;