Add unit test for EntityOwner

This commit is contained in:
Jérôme Leclercq 2017-12-01 15:53:50 +01:00
parent 0a72ddb478
commit 5ba0d0dba0
2 changed files with 81 additions and 10 deletions

View File

@ -31,4 +31,4 @@ namespace Ndk
#include <NDK/EntityOwner.inl>
#endif // NDK_ENTITYOwner_HPP
#endif // NDK_ENTITYOWNER_HPP

View File

@ -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());
}
}
}
}
}