Add box + option tests

This commit is contained in:
2024-11-22 19:14:47 +01:00
parent 53b9ec80a3
commit a7ebfdedee
3 changed files with 29 additions and 0 deletions

View File

@ -5,6 +5,7 @@
#include "asl/annotations.hpp" #include "asl/annotations.hpp"
#include "asl/memory.hpp" #include "asl/memory.hpp"
#include "asl/utility.hpp" #include "asl/utility.hpp"
#include "asl/box.hpp"
namespace asl namespace asl
{ {

View File

@ -1,4 +1,5 @@
#include "asl/box.hpp" #include "asl/box.hpp"
#include "asl/option.hpp"
#include "asl/testing/testing.hpp" #include "asl/testing/testing.hpp"
#include "asl/tests/test_types.hpp" #include "asl/tests/test_types.hpp"
@ -7,6 +8,7 @@ static_assert(sizeof(asl::box<int>) == sizeof(int*));
static_assert(!asl::copyable<asl::box<int>>); static_assert(!asl::copyable<asl::box<int>>);
static_assert(asl::moveable<asl::box<int>>); static_assert(asl::moveable<asl::box<int>>);
static_assert(asl::has_niche<asl::box<int>>); static_assert(asl::has_niche<asl::box<int>>);
static_assert(sizeof(asl::option<asl::box<int>>) == sizeof(int*));
ASL_TEST(destructor) ASL_TEST(destructor)
{ {
@ -50,3 +52,25 @@ ASL_TEST(arrow)
auto b = asl::make_box<Struct>(45); auto b = asl::make_box<Struct>(45);
ASL_TEST_EXPECT(b->a == 45); ASL_TEST_EXPECT(b->a == 45);
} }
ASL_TEST(niche)
{
asl::option<asl::box<int>> opt;
ASL_TEST_EXPECT(!opt.has_value());
opt = asl::make_box<int>(66);
ASL_TEST_EXPECT(opt.has_value());
ASL_TEST_EXPECT(*opt.value() == 66);
opt = asl::nullopt;
ASL_TEST_EXPECT(!opt.has_value());
bool destroyed = false;
asl::option<asl::box<DestructorObserver>> opt2 = asl::make_box<DestructorObserver>(&destroyed);
ASL_TEST_EXPECT(opt2.has_value());
ASL_TEST_EXPECT(!destroyed);
opt2.reset();
ASL_TEST_EXPECT(!opt2.has_value());
ASL_TEST_EXPECT(destroyed);
}

View File

@ -311,4 +311,8 @@ ASL_TEST(niche)
opt.reset(); opt.reset();
ASL_TEST_EXPECT(!opt.has_value()); ASL_TEST_EXPECT(!opt.has_value());
opt = NonZero(87);
ASL_TEST_EXPECT(opt.has_value());
ASL_TEST_EXPECT(opt.value().value == 87);
} }