diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-12-30 00:05:38 +0100 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2024-12-30 00:06:11 +0100 |
commit | 739f53210466415affd5b0ebd5b3da5c251d232c (patch) | |
tree | db0ea8fae292c70421a4a163b3c283708f98e214 /asl/tests | |
parent | 7e8cd10685908570d7af41255b08ed4709323771 (diff) |
Buffer clear & destructor
Diffstat (limited to 'asl/tests')
-rw-r--r-- | asl/tests/buffer_tests.cpp | 58 |
1 files changed, 56 insertions, 2 deletions
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<int32_t> 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<DestructorObserver> buf;
+ static_assert(asl::buffer<DestructorObserver>::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<DestructorObserver> buf;
+ static_assert(asl::buffer<DestructorObserver>::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);
+}
|