aboutsummaryrefslogtreecommitdiff
path: root/memstack/test/memstack_test.c
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2025-07-14 09:30:08 -0700
committer3gg <3gg@shellblade.net>2025-07-14 09:30:08 -0700
commitff565e8d422c5e58558d1f7682ba0c9756e5be27 (patch)
tree46b417ee95896ca11e6638624d8ff8b638d123f9 /memstack/test/memstack_test.c
parent09166d46d6a30c1d431cc8371325d4fc8ae76162 (diff)
Add function to allocate aligned blocks on the memstackHEADmain
Diffstat (limited to 'memstack/test/memstack_test.c')
-rw-r--r--memstack/test/memstack_test.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/memstack/test/memstack_test.c b/memstack/test/memstack_test.c
index 5e9b493..285cf46 100644
--- a/memstack/test/memstack_test.c
+++ b/memstack/test/memstack_test.c
@@ -32,6 +32,8 @@ TEST_CASE(memstack_allocate_until_full) {
32 } 32 }
33 33
34 TEST_TRUE(memstack_size(&stack) == CAPACITY); 34 TEST_TRUE(memstack_size(&stack) == CAPACITY);
35
36 memstack_del(&stack);
35} 37}
36 38
37// Allocate all N ints, then free them. 39// Allocate all N ints, then free them.
@@ -48,6 +50,8 @@ TEST_CASE(memstack_fill_then_free) {
48 memstack_clear(&stack); 50 memstack_clear(&stack);
49 51
50 TEST_EQUAL(memstack_size(&stack), 0); 52 TEST_EQUAL(memstack_size(&stack), 0);
53
54 memstack_del(&stack);
51} 55}
52 56
53// Attempt to allocate blocks past the maximum stack size. 57// Attempt to allocate blocks past the maximum stack size.
@@ -68,6 +72,8 @@ TEST_CASE(memstack_allocate_beyond_max_size) {
68 } 72 }
69 73
70 TEST_TRUE(memstack_size(&stack) == CAPACITY); 74 TEST_TRUE(memstack_size(&stack) == CAPACITY);
75
76 memstack_del(&stack);
71} 77}
72 78
73// Free blocks should always remain zeroed out. 79// Free blocks should always remain zeroed out.
@@ -81,6 +87,8 @@ TEST_CASE(memstack_zero_free_blocks_after_creation) {
81 TEST_TRUE(block != nullptr); 87 TEST_TRUE(block != nullptr);
82 TEST_EQUAL(*block, 0); 88 TEST_EQUAL(*block, 0);
83 } 89 }
90
91 memstack_del(&stack);
84} 92}
85 93
86// Free blocks should always remain zeroed out. 94// Free blocks should always remain zeroed out.
@@ -102,6 +110,25 @@ TEST_CASE(memstack_zero_free_block_after_free) {
102 TEST_TRUE(block != nullptr); 110 TEST_TRUE(block != nullptr);
103 TEST_EQUAL(*block, 0); 111 TEST_EQUAL(*block, 0);
104 } 112 }
113
114 memstack_del(&stack);
115}
116
117// Aligned allocations should be properly aligned.
118TEST_CASE(memstack_alloc_aligned) {
119 memstack stack = {0};
120 memstack_make(&stack, CAPACITY, nullptr);
121
122 // -1 because the base address of the memory storage might be unaligned.
123 for (int i = 0; i < NUM_INTS - 1; ++i) {
124 const int* block =
125 memstack_alloc_aligned(&stack, sizeof(int), alignof(int));
126 TEST_TRUE(block != nullptr);
127 TEST_EQUAL(*block, 0);
128 TEST_EQUAL((uintptr_t)block % alignof(int), 0);
129 }
130
131 memstack_del(&stack);
105} 132}
106 133
107int main() { return 0; } 134int main() { return 0; }