1
#include <gtest/gtest.h>
2
#include <Mod/Mesh/App/Core/KDTree.h>
4
// NOLINTBEGIN(cppcoreguidelines-*,readability-*)
6
class KDTreeTest: public ::testing::Test
11
points.emplace_back(0.F, 0.F, 0.F);
12
points.emplace_back(0.F, 0.F, 1.F);
13
points.emplace_back(0.F, 1.F, 0.F);
14
points.emplace_back(0.F, 1.F, 1.F);
15
points.emplace_back(1.F, 0.F, 0.F);
16
points.emplace_back(1.F, 0.F, 1.F);
17
points.emplace_back(1.F, 1.F, 0.F);
18
points.emplace_back(1.F, 1.F, 1.F);
21
void TearDown() override
24
const std::vector<Base::Vector3f>& GetPoints() const
30
std::vector<Base::Vector3f> points;
33
TEST_F(KDTreeTest, TestKDTreeEmpty)
35
MeshCore::MeshKDTree tree;
36
EXPECT_EQ(tree.IsEmpty(), true);
39
TEST_F(KDTreeTest, TestKDTreeNearestEmpty)
41
MeshCore::MeshKDTree tree;
46
EXPECT_EQ(tree.FindNearest(pnt, nor, dist), MeshCore::POINT_INDEX_MAX);
49
TEST_F(KDTreeTest, TestKDTreeNearest)
51
MeshCore::MeshKDTree tree;
52
tree.AddPoints(GetPoints());
53
EXPECT_EQ(tree.IsEmpty(), false);
57
EXPECT_EQ(tree.FindNearest(Base::Vector3f(0.9F, 0.1F, 0.1F), nor, dist), 4);
60
TEST_F(KDTreeTest, TestKDTreeNearestMaxDist)
62
MeshCore::MeshKDTree tree;
63
tree.AddPoints(GetPoints());
64
EXPECT_EQ(tree.IsEmpty(), false);
68
EXPECT_EQ(tree.FindNearest(Base::Vector3f(0.9F, 0.1F, 0.1F), 0.0F, nor, dist),
69
MeshCore::POINT_INDEX_MAX);
72
TEST_F(KDTreeTest, TestKDTreeFindExact)
74
MeshCore::MeshKDTree tree;
75
tree.AddPoints(GetPoints());
77
EXPECT_EQ(tree.FindExact(Base::Vector3f(0.1F, 0, 0)), MeshCore::POINT_INDEX_MAX);
78
EXPECT_EQ(tree.FindExact(Base::Vector3f(0, 0, 0)), 0);
81
TEST_F(KDTreeTest, TestKDTreeFindRange)
83
MeshCore::MeshKDTree tree;
84
tree.AddPoints(GetPoints());
86
std::vector<MeshCore::PointIndex> index;
87
std::vector<MeshCore::PointIndex> result = {0, 4};
88
tree.FindInRange(Base::Vector3f(0.5F, 0, 0), 0.6F, index);
89
EXPECT_EQ(index, result);
91
// NOLINTEND(cppcoreguidelines-*,readability-*)