diff --git a/Tests/GeoLib/TestOctTree.cpp b/Tests/GeoLib/TestOctTree.cpp index 56b698eb47b89bc25065a4309e94f83b5a4c2351..ffa654a3bcb7b048db7722b263db5ba7e54a2615 100644 --- a/Tests/GeoLib/TestOctTree.cpp +++ b/Tests/GeoLib/TestOctTree.cpp @@ -334,3 +334,58 @@ TEST_F(GeoLibOctTree, TestSmallDistanceDifferentLeafes) ASSERT_EQ(10u, ret_pnt->getID()); } +TEST_F(GeoLibOctTree, TestOctTreeWithTwoEqualPoints) +{ + ps_ptr.push_back(new GeoLib::Point(0,0,0,0)); + ps_ptr.push_back(new GeoLib::Point(0,0,0,1)); + double const eps(0.0); + + GeoLib::AABB<GeoLib::Point> aabb(ps_ptr.begin(), ps_ptr.end()); + std::unique_ptr<GeoLib::OctTree<GeoLib::Point, 2>> oct_tree( + GeoLib::OctTree<GeoLib::Point, 2>::createOctTree( + aabb.getMinPoint(), aabb.getMaxPoint(), eps)); + + GeoLib::Point * ret_pnt(nullptr); + ASSERT_TRUE(oct_tree->addPoint(ps_ptr[0], ret_pnt)); + ASSERT_EQ(ps_ptr[0], ret_pnt); + ASSERT_FALSE(oct_tree->addPoint(ps_ptr[1], ret_pnt)); + ASSERT_EQ(ps_ptr[0], ret_pnt); +} + +TEST_F(GeoLibOctTree, TestOctTreeWithTwoEqualPointsOne) +{ + ps_ptr.push_back(new GeoLib::Point(1,1,1,0)); + ps_ptr.push_back(new GeoLib::Point(1,1,1,1)); + double const eps(0.0); + + GeoLib::AABB<GeoLib::Point> aabb(ps_ptr.begin(), ps_ptr.end()); + std::unique_ptr<GeoLib::OctTree<GeoLib::Point, 2>> oct_tree( + GeoLib::OctTree<GeoLib::Point, 2>::createOctTree( + aabb.getMinPoint(), aabb.getMaxPoint(), eps)); + + GeoLib::Point * ret_pnt(nullptr); + ASSERT_TRUE(oct_tree->addPoint(ps_ptr[0], ret_pnt)); + ASSERT_EQ(ps_ptr[0], ret_pnt); + ASSERT_FALSE(oct_tree->addPoint(ps_ptr[1], ret_pnt)); + ASSERT_EQ(ps_ptr[0], ret_pnt); +} + +TEST_F(GeoLibOctTree, TestOctTreeOnCubicDomain) +{ + ps_ptr.push_back(new GeoLib::Point(-1,-1,-1,0)); + ps_ptr.push_back(new GeoLib::Point(1,1,1,1)); + double const eps(0.0); + + GeoLib::AABB<GeoLib::Point> aabb(ps_ptr.begin(), ps_ptr.end()); + std::unique_ptr<GeoLib::OctTree<GeoLib::Point, 2>> oct_tree( + GeoLib::OctTree<GeoLib::Point, 2>::createOctTree( + aabb.getMinPoint(), aabb.getMaxPoint(), eps)); + + GeoLib::Point * ret_pnt(nullptr); + ASSERT_TRUE(oct_tree->addPoint(ps_ptr[0], ret_pnt)); + ASSERT_EQ(ps_ptr[0], ret_pnt); + ASSERT_TRUE(oct_tree->addPoint(ps_ptr[1], ret_pnt)); + ASSERT_EQ(ps_ptr[1], ret_pnt); +} + +