diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-09-03 12:42:10 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-09-03 12:42:10 +0800 |
commit | efa1266f10e90c0c46f47cc06645422142cb2d9f (patch) | |
tree | 3d8cfefb81ce4645d150c08fc52ad646b6da80e2 /test/common/SelfResolvableTest.cpp | |
parent | 5e59a8e38c9f8992e6ffd9dbbde11e1f873780e1 (diff) | |
download | cru-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.cpp | 110 |
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); -} |