aboutsummaryrefslogtreecommitdiff
path: root/test/common/SelfResolvableTest.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-09-03 12:42:10 +0800
committerYuqian Yang <crupest@crupest.life>2025-09-03 12:42:10 +0800
commitefa1266f10e90c0c46f47cc06645422142cb2d9f (patch)
tree3d8cfefb81ce4645d150c08fc52ad646b6da80e2 /test/common/SelfResolvableTest.cpp
parent5e59a8e38c9f8992e6ffd9dbbde11e1f873780e1 (diff)
downloadcru-efa1266f10e90c0c46f47cc06645422142cb2d9f.tar.gz
cru-efa1266f10e90c0c46f47cc06645422142cb2d9f.tar.bz2
cru-efa1266f10e90c0c46f47cc06645422142cb2d9f.zip
common -> base in test dir.
Diffstat (limited to 'test/common/SelfResolvableTest.cpp')
-rw-r--r--test/common/SelfResolvableTest.cpp110
1 files changed, 0 insertions, 110 deletions
diff --git a/test/common/SelfResolvableTest.cpp b/test/common/SelfResolvableTest.cpp
deleted file mode 100644
index c214bd77..00000000
--- a/test/common/SelfResolvableTest.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-#include "cru/base/Base.h"
-#include "cru/base/SelfResolvable.h"
-
-#include <catch2/catch_test_macros.hpp>
-
-#include <memory>
-
-namespace {
-class SelfResolvableTestClassBase {
- public:
- SelfResolvableTestClassBase() = default;
- CRU_DELETE_COPY(SelfResolvableTestClassBase)
- CRU_DEFAULT_MOVE(SelfResolvableTestClassBase)
- virtual ~SelfResolvableTestClassBase() = default;
-};
-
-class SelfResolvableTestClass
- : public SelfResolvableTestClassBase,
- public cru::SelfResolvable<SelfResolvableTestClass> {
- public:
- SelfResolvableTestClass() : ptr_(new int(123)) {}
- CRU_DELETE_COPY(SelfResolvableTestClass)
- CRU_DEFAULT_MOVE(SelfResolvableTestClass)
- ~SelfResolvableTestClass() override = default;
-
- private:
- std::shared_ptr<int> ptr_;
-};
-} // namespace
-
-TEST_CASE("SelfResolvable resolver should work.", "[self-resolvable]") {
- SelfResolvableTestClass test_object;
-
- auto resolver = test_object.CreateResolver();
- REQUIRE(resolver.Resolve() == &test_object);
-
- auto resolver_copy = resolver;
- REQUIRE(resolver.Resolve() == &test_object);
- REQUIRE(resolver.Resolve() == &test_object);
-
- auto resolver_move = std::move(resolver_copy);
- REQUIRE(resolver.Resolve() == &test_object);
- REQUIRE(resolver_copy.IsValid() == false);
- REQUIRE(resolver_move.Resolve() == &test_object);
-}
-
-TEST_CASE("SelfResolvable object destructed should work.",
- "[self-resolvable]") {
- SelfResolvableTestClass* test_object = new SelfResolvableTestClass();
-
- auto resolver = test_object->CreateResolver();
- auto resolver_copy = resolver;
-
- delete test_object;
-
- REQUIRE(resolver.Resolve() == nullptr);
- REQUIRE(resolver_copy.Resolve() == nullptr);
-
- auto resolver_copy2 = resolver_copy;
- REQUIRE(resolver_copy2.Resolve() == nullptr);
-
- auto resolver_move = std::move(resolver_copy);
- REQUIRE(resolver_copy.IsValid() == false);
- REQUIRE(resolver_move.Resolve() == nullptr);
-}
-
-TEST_CASE("SelfResolvable object moved should work.", "[self-resolvable]") {
- SelfResolvableTestClass test_object;
-
- auto resolver = test_object.CreateResolver();
- auto resolver_copy = resolver;
-
- SelfResolvableTestClass moved_object = std::move(test_object);
-
- REQUIRE(resolver.Resolve() == &moved_object);
- REQUIRE(resolver_copy.Resolve() == &moved_object);
-
- auto resolver_copy2 = resolver_copy;
- REQUIRE(resolver_copy2.Resolve() == &moved_object);
-
- auto resolver_move = std::move(resolver_copy);
- REQUIRE(resolver_copy.IsValid() == false);
- REQUIRE(resolver_move.Resolve() == &moved_object);
-}
-
-TEST_CASE("SelfResolvable should work for casted type.", "[self-resolvable]") {
- auto test_object = new SelfResolvableTestClass();
-
- cru::ObjectResolver<SelfResolvableTestClassBase> base_resolver =
- test_object->CreateResolver();
-
- REQUIRE(base_resolver.Resolve() == test_object);
-
- auto base_resolver2 = base_resolver;
- REQUIRE(base_resolver2.Resolve() == test_object);
-
- auto base_resolver3 = std::move(base_resolver2);
- REQUIRE(base_resolver3.Resolve() == test_object);
-
- auto moved_object = new SelfResolvableTestClass(std::move(*test_object));
- delete test_object;
-
- REQUIRE(base_resolver.Resolve() == moved_object);
- REQUIRE(base_resolver3.Resolve() == moved_object);
-
- delete moved_object;
-
- REQUIRE(base_resolver.Resolve() == nullptr);
- REQUIRE(base_resolver3.Resolve() == nullptr);
-}