From 742f19886cce986d0d01606b07dd533fbffe2cdd Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Thu, 21 Aug 2025 08:35:32 +0100 Subject: Designed tests for make_int and intern with their destructors --- main.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'main.c') diff --git a/main.c b/main.c index 8223ada..d5e3617 100644 --- a/main.c +++ b/main.c @@ -26,7 +26,7 @@ sv_t sv_copy(sv_t old) return SV(newstr, old.size); } -const char *words[] = { +char *words[] = { "aliquam", "erat", "volutpat", "nunc", "eleifend", "leo", "vitae", "magna", "in", "id", "erat", "non", "orci", "commodo", "lobortis", @@ -80,10 +80,45 @@ void symtable_test(void) sym_table_cleanup(&table); } +void make_int_test(void) +{ + i64 ints[] = { + 1, -1, (1 << 10) - 1, (-1) * ((1 << 10) - 1), + INT_MIN, INT_MAX, INT64_MAX, INT64_MIN, + }; + + for (u64 i = 0; i < ARRSIZE(ints); ++i) + { + i64 in = ints[i]; + lisp_t *lisp = make_int(in); + i64 out = as_int(lisp); + + printf("[make_int_test]: %#16lx => %#16lx => %#16lx\n", in, (u64)lisp, out); + } +} + +void intern_test(void) +{ + sys_t system = {0}; + sys_init(&system); + for (u64 i = 0; i < ARRSIZE(words); ++i) + { + char *in = words[i]; + lisp_t *lisp = intern(&system, SV(in, strlen(in))); + char *out = as_sym(lisp); + printf("[intern test]: `%s` -> %p -> `%s`\n", in, lisp, out); + } + sys_cleanup(&system); +} + int main(void) { vec_test(); printf("\n"); symtable_test(); + printf("\n"); + make_int_test(); + printf("\n"); + intern_test(); return 0; } -- cgit v1.2.3-13-gbd6f