From f5ef1937eafb3d96b3683d92639a193694210c70 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic <steven.lerouzic@gmail.com> Date: Tue, 19 Nov 2024 23:30:55 +0100 Subject: More work on asl::box --- asl/tests/box_tests.cpp | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'asl/tests') diff --git a/asl/tests/box_tests.cpp b/asl/tests/box_tests.cpp index 6c4d543..f1a35f3 100644 --- a/asl/tests/box_tests.cpp +++ b/asl/tests/box_tests.cpp @@ -1,6 +1,62 @@ #include "asl/box.hpp" #include "asl/testing/testing.hpp" +#include "asl/tests/test_types.hpp" static_assert(sizeof(asl::box<int>) == sizeof(int*)); +static_assert(asl::default_constructible<asl::box<int>>); +static_assert(!asl::copyable<asl::box<int>>); +static_assert(asl::moveable<asl::box<int>>); +static_assert(asl::default_constructible<asl::box<NonMoveConstructible>>); +ASL_TEST(destructor) +{ + bool d = false; + + { + asl::box<DestructorObserver> box2; + + { + auto box = asl::make_box<DestructorObserver>(&d); + ASL_TEST_ASSERT(!d); + + + auto box3 = ASL_MOVE(box); + ASL_TEST_ASSERT(!d); + + box2 = ASL_MOVE(box3); + ASL_TEST_ASSERT(!d); + } + + ASL_TEST_ASSERT(!d); + } + + ASL_TEST_ASSERT(d); +} + +ASL_TEST(value) +{ + auto b = asl::make_box<int>(24); + ASL_TEST_EXPECT(*b == 24); + + auto b2 = ASL_MOVE(b); + ASL_TEST_EXPECT(*b2 == 24); +} + +ASL_TEST(ptr) +{ + auto b = asl::make_box<int>(24); + auto* ptr1 = b.get(); + + auto b2 = ASL_MOVE(b); + auto* ptr2 = b2.get(); + ASL_TEST_EXPECT(ptr1 == ptr2); +} + +struct Struct { int a; }; + +ASL_TEST(arrow) +{ + auto b = asl::make_box<Struct>(45); + ASL_TEST_EXPECT(b->a == 45); +} -- cgit