From 739f53210466415affd5b0ebd5b3da5c251d232c Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Mon, 30 Dec 2024 00:05:38 +0100 Subject: Buffer clear & destructor --- asl/tests/buffer_tests.cpp | 58 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) (limited to 'asl/tests') diff --git a/asl/tests/buffer_tests.cpp b/asl/tests/buffer_tests.cpp index b677402..4c2d2c1 100644 --- a/asl/tests/buffer_tests.cpp +++ b/asl/tests/buffer_tests.cpp @@ -1,7 +1,7 @@ #include "asl/buffer.hpp" -#include "asl/print.hpp" #include "asl/testing/testing.hpp" +#include "asl/tests/test_types.hpp" struct Big { @@ -171,4 +171,58 @@ ASL_TEST(push_move) ASL_TEST_EXPECT(b[4].moved == 0); } -// @Todo Test push with non trivial move (non copy) types +ASL_TEST(clear) +{ + asl::buffer b; + ASL_TEST_EXPECT(b.size() == 0); + + b.push(1); + b.push(2); + b.push(3); + b.push(4); + b.push(5); + b.push(6); + b.push(7); + ASL_TEST_EXPECT(b.size() == 7); + + b.clear(); + ASL_TEST_EXPECT(b.size() == 0); +} + +ASL_TEST(clear_destructor_small) +{ + bool d0 = false; + bool d1 = false; + + asl::buffer buf; + static_assert(asl::buffer::kInlineCapacity >= 2); + + buf.push(&d0); + buf.push(&d1); + + buf.clear(); + ASL_TEST_EXPECT(d0 == true); + ASL_TEST_EXPECT(d1 == true); +} + +ASL_TEST(clear_destructor_heap) +{ + bool d0 = false; + bool d1 = false; + bool d2 = false; + + asl::buffer buf; + static_assert(asl::buffer::kInlineCapacity < 3); + + buf.push(&d0); + buf.push(&d1); + buf.push(&d2); + ASL_TEST_EXPECT(d0 == false); + ASL_TEST_EXPECT(d1 == false); + ASL_TEST_EXPECT(d2 == false); + + buf.clear(); + ASL_TEST_EXPECT(d0 == true); + ASL_TEST_EXPECT(d1 == true); + ASL_TEST_EXPECT(d2 == true); +} -- cgit