From e835bfbec75d3157f9ff415c3add1dad104dd5d8 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Thu, 2 Nov 2023 15:06:04 +0100 Subject: [PATCH] test: use unique_ptr as move-only type --- test/entt/core/compressed_pair.cpp | 49 ++++++++---------------------- 1 file changed, 12 insertions(+), 37 deletions(-) diff --git a/test/entt/core/compressed_pair.cpp b/test/entt/core/compressed_pair.cpp index 45a6f9a3a..ad7bc6d42 100644 --- a/test/entt/core/compressed_pair.cpp +++ b/test/entt/core/compressed_pair.cpp @@ -3,38 +3,13 @@ #include #include #include +#include #include #include #include "../common/non_default_constructible.h" struct empty_type {}; -struct move_only_type { - move_only_type() - : value{new int{99}} {} - - move_only_type(int v) - : value{new int{v}} {} - - ~move_only_type() { - delete value; - } - - move_only_type(const move_only_type &) = delete; - move_only_type &operator=(const move_only_type &) = delete; - - move_only_type(move_only_type &&other) noexcept - : value{std::exchange(other.value, nullptr)} {} - - move_only_type &operator=(move_only_type &&other) noexcept { - delete value; - value = std::exchange(other.value, nullptr); - return *this; - } - - int *value; -}; - TEST(CompressedPair, Size) { struct local { int value; @@ -50,15 +25,15 @@ TEST(CompressedPair, Size) { TEST(CompressedPair, ConstructCopyMove) { ASSERT_FALSE((std::is_default_constructible_v>)); - ASSERT_TRUE((std::is_default_constructible_v>)); + ASSERT_TRUE((std::is_default_constructible_v, empty_type>>)); ASSERT_TRUE((std::is_copy_constructible_v>)); - ASSERT_FALSE((std::is_copy_constructible_v>)); + ASSERT_FALSE((std::is_copy_constructible_v, empty_type>>)); ASSERT_TRUE((std::is_copy_assignable_v>)); - ASSERT_FALSE((std::is_copy_assignable_v>)); + ASSERT_FALSE((std::is_copy_assignable_v, empty_type>>)); - ASSERT_TRUE((std::is_move_constructible_v>)); - ASSERT_TRUE((std::is_move_assignable_v>)); + ASSERT_TRUE((std::is_move_constructible_v, empty_type>>)); + ASSERT_TRUE((std::is_move_assignable_v, empty_type>>)); entt::compressed_pair copyable{test::non_default_constructible{42}, empty_type{}}; auto by_copy{copyable}; @@ -70,17 +45,17 @@ TEST(CompressedPair, ConstructCopyMove) { ASSERT_EQ(copyable.first().value, 3); - entt::compressed_pair movable{}; + entt::compressed_pair> movable{empty_type{}, std::make_unique(99)}; auto by_move{std::move(movable)}; - ASSERT_EQ(*by_move.second().value, 99); - ASSERT_EQ(movable.second().value, nullptr); + ASSERT_EQ(*by_move.second(), 99); + ASSERT_EQ(movable.second(), nullptr); - *by_move.second().value = 3; + *by_move.second() = 3; movable = std::move(by_move); - ASSERT_EQ(*movable.second().value, 3); - ASSERT_EQ(by_move.second().value, nullptr); + ASSERT_EQ(*movable.second(), 3); + ASSERT_EQ(by_move.second(), nullptr); } TEST(CompressedPair, PiecewiseConstruct) {