From 4bed326e0300fc043cee002b9e86f4fee5e35e85 Mon Sep 17 00:00:00 2001
From: Thomas Fischer <thomas.fischer@ufz.de>
Date: Tue, 16 Jun 2015 12:47:11 +0200
Subject: [PATCH] [T/GL] OctTree: New test cases.

---
 Tests/GeoLib/TestOctTree.cpp | 55 ++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/Tests/GeoLib/TestOctTree.cpp b/Tests/GeoLib/TestOctTree.cpp
index 56b698eb47b..ffa654a3bcb 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);
+}
+
+
-- 
GitLab