aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDouglas B. Rumbaugh <doug@douglasrumbaugh.com>2025-11-02 17:57:17 -0500
committerDouglas B. Rumbaugh <doug@douglasrumbaugh.com>2025-11-02 17:57:17 -0500
commit33be32d518e17c8f8971fa7c1fe09adcccd82a67 (patch)
treef283d00a8724dea295f43b4b626c428a570a1560 /tests
parentd22ffffb379ebda21bf792bf18ed9e1324e8902b (diff)
downloadliballoc-33be32d518e17c8f8971fa7c1fe09adcccd82a67.tar.gz
Added splitting and some basic testing for it
Diffstat (limited to 'tests')
-rw-r--r--tests/liballoc_tests.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/liballoc_tests.c b/tests/liballoc_tests.c
index 6e6b537..2d3a439 100644
--- a/tests/liballoc_tests.c
+++ b/tests/liballoc_tests.c
@@ -189,6 +189,34 @@ START_TEST(free_list_coalesce_backward) {
}
END_TEST
+START_TEST(free_list_split_basic) {
+ size_t initial_size = ALIGNMENT * 10;
+ size_t second_size = ALIGNMENT * 5;
+
+ void *memory = allocate(initial_size);
+ release(memory);
+
+ void *memory2 = allocate(second_size);
+ ck_assert_ptr_eq(memory, memory2);
+
+ ck_assert_ptr_nonnull(free_list_head());
+
+}
+END_TEST
+
+START_TEST(free_list_split_below_threshold) {
+ size_t initial_size = 5*ALIGNMENT;
+ size_t second_size = 2*ALIGNMENT;
+
+ void *memory = allocate(initial_size);
+ release(memory);
+
+ void *memory2 = allocate(second_size);
+ ck_assert_ptr_eq(memory, memory2);
+
+ ck_assert_ptr_null(free_list_head());
+}
+
Suite *liballoc_suite(void) {
@@ -207,6 +235,8 @@ Suite *liballoc_suite(void) {
tcase_add_test(unit, free_list_reuse);
tcase_add_test(unit, free_list_coalesce_forward);
tcase_add_test(unit, free_list_coalesce_backward);
+ tcase_add_test(unit, free_list_split_basic);
+ tcase_add_test(unit, free_list_split_below_threshold);
suite_add_tcase(s, unit);
return s;