From 29b18bc1de689f9339f82a9ceb30cad5157b7f56 Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Thu, 21 Aug 2025 14:56:07 +0100 Subject: Finish value constructors TODO, start container constructors TODO --- main.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'main.c') diff --git a/main.c b/main.c index d5e3617..ba0f33a 100644 --- a/main.c +++ b/main.c @@ -44,6 +44,19 @@ char *words[] = { "euismod", "tellus", "id", "erat", }; +char text[] = + "Pellentesque dapibus suscipit ligula. Donec posuere augue in quam. " + "Etiam vel tortor sodales tellus ultricies commodo. Suspendisse potenti. " + "Aenean in sem ac leo mollis blandit. Donec neque quam, dignissim in, " + "mollis nec, sagittis eu, wisi. Phasellus lacus. Etiam laoreet quam sed " + "arcu. Phasellus at dui in ligula mollis ultricies. Integer placerat " + "tristique nisl. Praesent augue. Fusce commodo. Vestibulum convallis, " + "lorem a tempus semper, dui dui euismod elit, vitae placerat urna tortor " + "vitae lacus. Nullam libero mauris, consequat quis, varius et, dictum id, " + "arcu. Mauris mollis tincidunt felis. Aliquam feugiat tellus ut neque. " + "Nulla facilisis, risus a rhoncus fermentum, tellus tellus lacinia purus, " + "et dictum nunc justo sit amet elit."; + void vec_test(void) { vec_t vec = {0}; @@ -111,6 +124,37 @@ void intern_test(void) sys_cleanup(&system); } +void make_vec_test(void) +{ + struct Test + { + u64 start, size; + } tests[] = { + {0, 16}, + {0, 32}, + {32, 64}, + {0, ARRSIZE(text)}, + }; + + sys_t system = {0}; + sys_init(&system); + + for (u64 i = 0; i < ARRSIZE(tests); ++i) + { + struct Test test = tests[i]; + // Always initialise below what we expect + lisp_t *lvec = make_vec(&system, test.size / 2); + vec_t *vec = as_vec(lvec); + printf("[make_vec_test]: %p -> %p[%lu/%lu] -> ", lvec, vec, vec->size, + vec->capacity); + vec_append(vec, text + test.start, test.size); + printf("[%lu/%lu] -> ", vec->size, vec->capacity); + printf("`%.*s`\n", (int)vec->size, (char *)vec_data(vec)); + } + + sys_cleanup(&system); +} + int main(void) { vec_test(); @@ -120,5 +164,7 @@ int main(void) make_int_test(); printf("\n"); intern_test(); + printf("\n"); + make_vec_test(); return 0; } -- cgit v1.2.3-13-gbd6f