1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-26 18:35:20 +00:00

80 lines
3.1 KiB
C++
Raw Normal View History

2018-05-26 17:44:25 +03:00
#include "operators.hpp"
#include <components/detournavigator/recastmeshobject.hpp>
#include <BulletCollision/CollisionShapes/btBoxShape.h>
#include <BulletCollision/CollisionShapes/btCompoundShape.h>
#include <gtest/gtest.h>
namespace
{
using namespace testing;
using namespace DetourNavigator;
struct DetourNavigatorRecastMeshObjectTest : Test
{
btBoxShape mBoxShape {btVector3(1, 2, 3)};
btCompoundShape mCompoundShape {true};
2018-05-26 17:44:25 +03:00
btTransform mTransform {btQuaternion(btVector3(1, 2, 3), 1), btVector3(1, 2, 3)};
DetourNavigatorRecastMeshObjectTest()
{
mCompoundShape.addChildShape(mTransform, std::addressof(mBoxShape));
}
};
TEST_F(DetourNavigatorRecastMeshObjectTest, constructed_object_should_have_shape_and_transform)
{
2018-07-18 22:09:50 +03:00
const RecastMeshObject object(mBoxShape, mTransform, AreaType_ground);
2018-05-26 17:44:25 +03:00
EXPECT_EQ(std::addressof(object.getShape()), std::addressof(mBoxShape));
EXPECT_EQ(object.getTransform(), mTransform);
}
TEST_F(DetourNavigatorRecastMeshObjectTest, update_with_same_transform_for_not_compound_shape_should_return_false)
{
2018-07-18 22:09:50 +03:00
RecastMeshObject object(mBoxShape, mTransform, AreaType_ground);
EXPECT_FALSE(object.update(mTransform, AreaType_ground));
2018-05-26 17:44:25 +03:00
}
TEST_F(DetourNavigatorRecastMeshObjectTest, update_with_different_transform_should_return_true)
{
2018-07-18 22:09:50 +03:00
RecastMeshObject object(mBoxShape, mTransform, AreaType_ground);
EXPECT_TRUE(object.update(btTransform::getIdentity(), AreaType_ground));
2018-07-12 11:44:11 +03:00
}
TEST_F(DetourNavigatorRecastMeshObjectTest, update_with_different_flags_should_return_true)
{
2018-07-18 22:09:50 +03:00
RecastMeshObject object(mBoxShape, mTransform, AreaType_ground);
EXPECT_TRUE(object.update(mTransform, AreaType_null));
2018-05-26 17:44:25 +03:00
}
TEST_F(DetourNavigatorRecastMeshObjectTest, update_for_compound_shape_with_same_transform_and_not_changed_child_transform_should_return_false)
{
2018-07-18 22:09:50 +03:00
RecastMeshObject object(mCompoundShape, mTransform, AreaType_ground);
EXPECT_FALSE(object.update(mTransform, AreaType_ground));
2018-05-26 17:44:25 +03:00
}
TEST_F(DetourNavigatorRecastMeshObjectTest, update_for_compound_shape_with_same_transform_and_changed_child_transform_should_return_true)
{
2018-07-18 22:09:50 +03:00
RecastMeshObject object(mCompoundShape, mTransform, AreaType_ground);
2018-05-26 17:44:25 +03:00
mCompoundShape.updateChildTransform(0, btTransform::getIdentity());
2018-07-18 22:09:50 +03:00
EXPECT_TRUE(object.update(mTransform, AreaType_ground));
2018-05-26 17:44:25 +03:00
}
TEST_F(DetourNavigatorRecastMeshObjectTest, repeated_update_for_compound_shape_without_changes_should_return_false)
{
2018-07-18 22:09:50 +03:00
RecastMeshObject object(mCompoundShape, mTransform, AreaType_ground);
2018-05-26 17:44:25 +03:00
mCompoundShape.updateChildTransform(0, btTransform::getIdentity());
2018-07-18 22:09:50 +03:00
object.update(mTransform, AreaType_ground);
EXPECT_FALSE(object.update(mTransform, AreaType_ground));
2018-05-26 17:44:25 +03:00
}
2019-03-03 15:51:02 +03:00
TEST_F(DetourNavigatorRecastMeshObjectTest, update_for_changed_local_scaling_should_return_true)
{
RecastMeshObject object(mBoxShape, mTransform, AreaType_ground);
mBoxShape.setLocalScaling(btVector3(2, 2, 2));
EXPECT_TRUE(object.update(mTransform, AreaType_ground));
}
2018-05-26 17:44:25 +03:00
}