diff --git a/SDK/include/NDK/EntityOwner.hpp b/SDK/include/NDK/EntityOwner.hpp index 9216b3d3c..e007163b8 100644 --- a/SDK/include/NDK/EntityOwner.hpp +++ b/SDK/include/NDK/EntityOwner.hpp @@ -31,4 +31,4 @@ namespace Ndk #include -#endif // NDK_ENTITYOwner_HPP +#endif // NDK_ENTITYOWNER_HPP diff --git a/tests/SDK/NDK/EntityOwner.cpp b/tests/SDK/NDK/EntityOwner.cpp index c28ed7d91..9ff8e1396 100644 --- a/tests/SDK/NDK/EntityOwner.cpp +++ b/tests/SDK/NDK/EntityOwner.cpp @@ -11,27 +11,98 @@ SCENARIO("EntityOwner", "[NDK][ENTITYOWNER]") WHEN("We set the ownership of the entity to our owner") { - Ndk::EntityOwner entityOwner(entity); - THEN("Entity is still valid") { + REQUIRE(entity.IsValid()); + + Ndk::EntityOwner entityOwner(entity); + + world.Update(); CHECK(entity.IsValid()); } - THEN("Resetting or getting out of scope is no more valid") + THEN("Moving an entity owner by constructor works") { + REQUIRE(entity.IsValid()); + + Ndk::EntityOwner entityOwner(entity); + Ndk::EntityOwner entityOwner2(std::move(entityOwner)); entityOwner.Reset(); - world.Update(1.f); + + world.Update(); + CHECK(entity.IsValid()); + + entityOwner2.Reset(); + + world.Update(); CHECK(!entity.IsValid()); } - THEN("Moving an entity owner works") + THEN("Moving an entity owner by operator= works") { - Ndk::EntityOwner entityOwner2(std::move(entityOwner)); + REQUIRE(entity.IsValid()); + + Ndk::EntityOwner entityOwner(entity); + Ndk::EntityOwner entityOwner2; + entityOwner2 = std::move(entityOwner); + entityOwner.Reset(); + + world.Update(); + CHECK(entity.IsValid()); + entityOwner2.Reset(); - world.Update(1.f); - REQUIRE(!entity.IsValid()); + + world.Update(); + CHECK(!entity.IsValid()); + } + + THEN("Destroying an entity owner destroys its entity") + { + REQUIRE(entity.IsValid()); + + { + Ndk::EntityOwner entityOwner(entity); + } + + world.Update(); + CHECK(!entity.IsValid()); + } + + + THEN("Resetting an entity owner destroys its entity") + { + REQUIRE(entity.IsValid()); + + Ndk::EntityOwner entityOwner(entity); + entityOwner.Reset(); + + world.Update(); + CHECK(!entity.IsValid()); + } + + THEN("Assigning another entity destroys the first entity") + { + REQUIRE(entity.IsValid()); + + Ndk::EntityOwner entityOwner(entity); + entityOwner = world.CreateEntity(); + + world.Update(); + CHECK(!entity.IsValid()); + } + + THEN("Moving another entity destroys the first entity") + { + REQUIRE(entity.IsValid()); + + Ndk::EntityOwner entityOwner(entity); + Ndk::EntityHandle entity2 = world.CreateEntity(); + + entityOwner = std::move(entity2); + + world.Update(); + CHECK(!entity.IsValid()); } } } -} \ No newline at end of file +}