diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-12-22 23:12:21 +0100 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-12-22 23:12:21 +0100 |
commit | f2f9923d1a9cac1e2ad2208ad623c68f2f8cb844 (patch) | |
tree | 1ac2e9642c5110611c2f5a2657f55ee866bc9cef /asl | |
parent | 19c358c32fe91685e7fc001a866b3208444068da (diff) |
Add asan for Windows
Diffstat (limited to 'asl')
-rw-r--r-- | asl/tests/buffer_tests.cpp | 31 |
1 files changed, 29 insertions, 2 deletions
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<CounterAllocator>);
ASL_TEST(reserve_capacity)
{
- asl::buffer<int32_t> b;
+ isize_t count = 0;
+ asl::buffer<int32_t, CounterAllocator> 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)
|