aboutsummaryrefslogtreecommitdiffstats
path: root/tests/liballoc_tests.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/liballoc_tests.c')
-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;