From f2f9923d1a9cac1e2ad2208ad623c68f2f8cb844 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Sun, 22 Dec 2024 23:12:21 +0100 Subject: Add asan for Windows --- asl/tests/buffer_tests.cpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'asl') diff --git a/asl/tests/buffer_tests.cpp b/asl/tests/buffer_tests.cpp index 3dc8ffb..5376dc1 100644 --- a/asl/tests/buffer_tests.cpp +++ b/asl/tests/buffer_tests.cpp @@ -25,29 +25,56 @@ ASL_TEST(default_size) ASL_TEST_EXPECT(b2.data() == nullptr); } -// @Todo Make test allocator that counts allocations +struct CounterAllocator +{ + isize_t* count; + + void* alloc(const asl::layout& layout) const + { + *count += 1; + return asl::GlobalHeap::alloc(layout); + } + + void* realloc(void* ptr, const asl::layout& old, const asl::layout& new_layout) const + { + *count += 1; + return asl::GlobalHeap::realloc(ptr, old, new_layout); + } + + static void dealloc(void* ptr, const asl::layout& layout) + { + asl::GlobalHeap::dealloc(ptr, layout); + } +}; +static_assert(asl::allocator); ASL_TEST(reserve_capacity) { - asl::buffer b; + isize_t count = 0; + asl::buffer b(CounterAllocator{&count}); ASL_TEST_EXPECT(b.size() == 0); ASL_TEST_EXPECT(b.capacity() == 5); + ASL_TEST_EXPECT(count == 0); b.reserve_capacity(4); ASL_TEST_EXPECT(b.size() == 0); ASL_TEST_EXPECT(b.capacity() == 5); + ASL_TEST_EXPECT(count == 0); b.reserve_capacity(12); ASL_TEST_EXPECT(b.size() == 0); ASL_TEST_EXPECT(b.capacity() >= 12); + ASL_TEST_EXPECT(count == 1); b.reserve_capacity(13); ASL_TEST_EXPECT(b.size() == 0); ASL_TEST_EXPECT(b.capacity() >= 13); + ASL_TEST_EXPECT(count == 1); b.reserve_capacity(130); ASL_TEST_EXPECT(b.size() == 0); ASL_TEST_EXPECT(b.capacity() >= 130); + ASL_TEST_EXPECT(count == 2); } // NOLINTBEGIN(*-pointer-arithmetic) -- cgit