diff --git a/Tests/GeoLib/TestOctTree.cpp b/Tests/GeoLib/TestOctTree.cpp
index e4a3d9b287c233bcb35f0bfb70d1790c86d8abfc..c05519c14b8b810299915afe44c78680f95bcf5a 100644
--- a/Tests/GeoLib/TestOctTree.cpp
+++ b/Tests/GeoLib/TestOctTree.cpp
@@ -556,3 +556,27 @@ TEST_F(GeoLibOctTree, TestRangeQueryEmptyRange)
         ASSERT_EQ(0u, query_points.size());
     }
 }
+
+TEST_F(GeoLibOctTree, TestRangeQueryWithOutsideRange)
+{
+    generateEquidistantPoints3dUnitCube(21);
+    double const eps = std::numeric_limits<double>::epsilon() * 0.5;
+    GeoLib::AABB aabb(ps_ptr.begin(), ps_ptr.end());
+    auto const& min(aabb.getMinPoint());
+    auto const& max(aabb.getMaxPoint());
+    std::unique_ptr<GeoLib::OctTree<GeoLib::Point, 2>> oct_tree(
+        GeoLib::OctTree<GeoLib::Point, 2>::createOctTree(min, max, eps));
+    for (auto* p : ps_ptr)
+    {
+        GeoLib::Point* ret_pnt(nullptr);
+        ASSERT_TRUE(oct_tree->addPoint(p, ret_pnt));
+        ASSERT_EQ(p, ret_pnt);
+    }
+
+    // range query for range outside the cube domain [min, max)
+    std::vector<GeoLib::Point*> query_points;
+    Eigen::Vector3d const min_p(max);
+    Eigen::Vector3d const max_p = min_p.array() + 1.0;
+    oct_tree->getPointsInRange(min_p, max_p, query_points);
+    ASSERT_EQ(0u, query_points.size());
+}