aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorAryadev Chavali <aryadev@aryadevchavali.com>2025-08-21 14:56:07 +0100
committerAryadev Chavali <aryadev@aryadevchavali.com>2025-08-21 14:56:24 +0100
commit29b18bc1de689f9339f82a9ceb30cad5157b7f56 (patch)
treed9254907ddc4155535d83623d6e7d67fba8072e9 /main.c
parent0f68afd9a040256939ddd082a380bd37b0a3996b (diff)
downloadalisp-29b18bc1de689f9339f82a9ceb30cad5157b7f56.tar.gz
alisp-29b18bc1de689f9339f82a9ceb30cad5157b7f56.tar.bz2
alisp-29b18bc1de689f9339f82a9ceb30cad5157b7f56.zip
Finish value constructors TODO, start container constructors TODO
Diffstat (limited to 'main.c')
-rw-r--r--main.c46
1 files changed, 46 insertions, 0 deletions
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;
}