FreeCAD

Форк
0
91 строка · 2.2 Кб
1
#include <gtest/gtest.h>
2
#include <Mod/Mesh/App/Core/KDTree.h>
3

4
// NOLINTBEGIN(cppcoreguidelines-*,readability-*)
5

6
class KDTreeTest: public ::testing::Test
7
{
8
protected:
9
    void SetUp() override
10
    {
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);
19
    }
20

21
    void TearDown() override
22
    {}
23

24
    const std::vector<Base::Vector3f>& GetPoints() const
25
    {
26
        return points;
27
    }
28

29
private:
30
    std::vector<Base::Vector3f> points;
31
};
32

33
TEST_F(KDTreeTest, TestKDTreeEmpty)
34
{
35
    MeshCore::MeshKDTree tree;
36
    EXPECT_EQ(tree.IsEmpty(), true);
37
}
38

39
TEST_F(KDTreeTest, TestKDTreeNearestEmpty)
40
{
41
    MeshCore::MeshKDTree tree;
42

43
    Base::Vector3f pnt;
44
    Base::Vector3f nor;
45
    float dist;
46
    EXPECT_EQ(tree.FindNearest(pnt, nor, dist), MeshCore::POINT_INDEX_MAX);
47
}
48

49
TEST_F(KDTreeTest, TestKDTreeNearest)
50
{
51
    MeshCore::MeshKDTree tree;
52
    tree.AddPoints(GetPoints());
53
    EXPECT_EQ(tree.IsEmpty(), false);
54

55
    Base::Vector3f nor;
56
    float dist;
57
    EXPECT_EQ(tree.FindNearest(Base::Vector3f(0.9F, 0.1F, 0.1F), nor, dist), 4);
58
}
59

60
TEST_F(KDTreeTest, TestKDTreeNearestMaxDist)
61
{
62
    MeshCore::MeshKDTree tree;
63
    tree.AddPoints(GetPoints());
64
    EXPECT_EQ(tree.IsEmpty(), false);
65

66
    Base::Vector3f nor;
67
    float dist;
68
    EXPECT_EQ(tree.FindNearest(Base::Vector3f(0.9F, 0.1F, 0.1F), 0.0F, nor, dist),
69
              MeshCore::POINT_INDEX_MAX);
70
}
71

72
TEST_F(KDTreeTest, TestKDTreeFindExact)
73
{
74
    MeshCore::MeshKDTree tree;
75
    tree.AddPoints(GetPoints());
76

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);
79
}
80

81
TEST_F(KDTreeTest, TestKDTreeFindRange)
82
{
83
    MeshCore::MeshKDTree tree;
84
    tree.AddPoints(GetPoints());
85

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);
90
}
91
// NOLINTEND(cppcoreguidelines-*,readability-*)
92

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.