From be091f3d0b05a13bae9809b3914931fd9bcc559b Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Mon, 26 Feb 2024 11:46:26 +0100
Subject: [PATCH] [T/GL/OctTree] Use getPointsInRange() instead of addPoint()

---
 Tests/GeoLib/TestOctTree.cpp | 35 ++++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/Tests/GeoLib/TestOctTree.cpp b/Tests/GeoLib/TestOctTree.cpp
index 632678437dc..1cf5057f150 100644
--- a/Tests/GeoLib/TestOctTree.cpp
+++ b/Tests/GeoLib/TestOctTree.cpp
@@ -337,10 +337,11 @@ TEST_F(GeoLibOctTree, TestSmallDistanceDifferentLeaves)
 
     // create OctTree
     GeoLib::AABB const aabb(ps_ptr.cbegin(), ps_ptr.cend());
-    auto const& min(aabb.getMinPoint());
-    auto const& max(aabb.getMaxPoint());
+    auto const& aabb_min(aabb.getMinPoint());
+    auto const& aabb_max(aabb.getMaxPoint());
     std::unique_ptr<GeoLib::OctTree<GeoLib::Point, 2>> oct_tree(
-        GeoLib::OctTree<GeoLib::Point, 2>::createOctTree(min, max, eps));
+        GeoLib::OctTree<GeoLib::Point, 2>::createOctTree(aabb_min, aabb_max,
+                                                         eps));
 
     // fill OctTree
     for (auto p : ps_ptr)
@@ -352,14 +353,26 @@ TEST_F(GeoLibOctTree, TestSmallDistanceDifferentLeaves)
 
     // point near the GeoLib::Point (0, -10, -10, 10) (with id 10)
     std::unique_ptr<GeoLib::Point> p0(new GeoLib::Point(0.1, -10.0, -10.0));
-    GeoLib::Point* ret_pnt(nullptr);
-    ASSERT_FALSE(oct_tree->addPoint(p0.get(), ret_pnt));
-    ASSERT_EQ(10u, ret_pnt->getID());
-
-    (*p0)[0] = -0.1;
-    ret_pnt = nullptr;
-    ASSERT_FALSE(oct_tree->addPoint(p0.get(), ret_pnt));
-    ASSERT_EQ(10u, ret_pnt->getID());
+    std::vector<GeoLib::Point*> found_points;
+    Eigen::Vector3d min = p0->asEigenVector3d().array() - eps;
+    Eigen::Vector3d max = p0->asEigenVector3d().array() + eps;
+    oct_tree->getPointsInRange(min, max, found_points);
+    ASSERT_EQ(1u, found_points.size());
+    ASSERT_EQ(0.0, (*found_points[0])[0]);
+    ASSERT_EQ(-10.0, (*found_points[0])[1]);
+    ASSERT_EQ(-10.0, (*found_points[0])[2]);
+    ASSERT_EQ(10u, found_points[0]->getID());
+
+    found_points.clear();
+    (*p0)[0] = 0.5;
+    min = p0->asEigenVector3d().array() - eps;
+    max = p0->asEigenVector3d().array() + eps;
+    oct_tree->getPointsInRange(min, max, found_points);
+    ASSERT_EQ(1u, found_points.size());
+    ASSERT_EQ(0.0, (*found_points[0])[0]);
+    ASSERT_EQ(-10.0, (*found_points[0])[1]);
+    ASSERT_EQ(-10.0, (*found_points[0])[2]);
+    ASSERT_EQ(10u, found_points[0]->getID());
 }
 
 TEST_F(GeoLibOctTree, TestOctTreeWithTwoEqualPoints)
-- 
GitLab