diff --git a/ICD.Common.Utils.Tests/RecursionUtilsTest.cs b/ICD.Common.Utils.Tests/RecursionUtilsTest.cs
index 08ad984..e87e74c 100644
--- a/ICD.Common.Utils.Tests/RecursionUtilsTest.cs
+++ b/ICD.Common.Utils.Tests/RecursionUtilsTest.cs
@@ -56,5 +56,17 @@ namespace ICD.Common.Utils.Tests
Assert.IsNull(noPath);
}
+
+ ///
+ /// Test to ensure that when start and end node are the same, breadth first search returns that single node.
+ ///
+ [Test]
+ public void BreadthFirstSearchPathSingleNodeTest()
+ {
+ int[] path = RecursionUtils.BreadthFirstSearchPath(1, 1, Graph).ToArray();
+
+ Assert.AreEqual(1, path.Length);
+ Assert.AreEqual(1, path[0]);
+ }
}
}
diff --git a/ICD.Common.Utils/RecursionUtils.cs b/ICD.Common.Utils/RecursionUtils.cs
index 6c370da..fd491f4 100644
--- a/ICD.Common.Utils/RecursionUtils.cs
+++ b/ICD.Common.Utils/RecursionUtils.cs
@@ -69,6 +69,10 @@ namespace ICD.Common.Utils
if (comparer == null)
throw new ArgumentNullException("comparer");
+ // Edge case - root and destination are the same
+ if (comparer.Equals(root, destination))
+ return new[] {root};
+
Queue queue = new Queue();
queue.Enqueue(root);