From b905c803f35ee41ed894a108cc8fa114a2a58b88 Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Sat, 19 Jul 2025 09:43:50 -0700 Subject: Add functions to get and set the watermark --- memstack/test/memstack_test.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'memstack/test/memstack_test.c') diff --git a/memstack/test/memstack_test.c b/memstack/test/memstack_test.c index 285cf46..5308be3 100644 --- a/memstack/test/memstack_test.c +++ b/memstack/test/memstack_test.c @@ -131,4 +131,35 @@ TEST_CASE(memstack_alloc_aligned) { memstack_del(&stack); } +// Get and set the watermark. +TEST_CASE(memstack_watermark) { + memstack stack = {0}; + memstack_make(&stack, CAPACITY, nullptr); + + // Allocate N/2 ints. + for (int i = 0; i < NUM_INTS / 2; ++i) { + const int* block = memstack_alloc(&stack, sizeof(int)); + TEST_TRUE(block != nullptr); + } + + const size_t watermark = memstack_watermark(&stack); + + // Allocate the remaining N/2 ints. + for (int i = 0; i < NUM_INTS / 2; ++i) { + const int* block = memstack_alloc(&stack, sizeof(int)); + TEST_TRUE(block != nullptr); + } + + // Now reset the watermark halfway through. + memstack_set_watermark(&stack, watermark); + + // Allocate the remaining N/2 ints (again). + for (int i = 0; i < NUM_INTS / 2; ++i) { + const int* block = memstack_alloc(&stack, sizeof(int)); + TEST_TRUE(block != nullptr); + } + + memstack_del(&stack); +} + int main() { return 0; } -- cgit v1.2.3