diff --git a/ICD.Common.Utils.Tests/RecursionUtilsTest.cs b/ICD.Common.Utils.Tests/RecursionUtilsTest.cs
index 6e2896f..e50e025 100644
--- a/ICD.Common.Utils.Tests/RecursionUtilsTest.cs
+++ b/ICD.Common.Utils.Tests/RecursionUtilsTest.cs
@@ -127,6 +127,24 @@ namespace ICD.Common.Utils.Tests
Assert.IsTrue(clique.Contains(6));
}
+ [Test]
+ public void GetCliqueSingleNodeTest()
+ {
+ int[] clique = RecursionUtils.GetClique(s_CliqueGraph.Keys, 1, n => s_CliqueGraph[n]).ToArray();
+
+ Assert.AreEqual(4, clique.Length);
+ Assert.IsTrue(clique.Contains(1));
+ Assert.IsTrue(clique.Contains(2));
+ Assert.IsTrue(clique.Contains(3));
+ Assert.IsTrue(clique.Contains(4));
+
+ clique = RecursionUtils.GetClique(s_CliqueGraph.Keys, 5, n => s_CliqueGraph[n]).ToArray();
+
+ Assert.AreEqual(2, clique.Length);
+ Assert.IsTrue(clique.Contains(5));
+ Assert.IsTrue(clique.Contains(6));
+ }
+
[Test]
public void BreadthFirstSearchTest()
{
diff --git a/ICD.Common.Utils/RecursionUtils.cs b/ICD.Common.Utils/RecursionUtils.cs
index 06890b9..826f35f 100644
--- a/ICD.Common.Utils/RecursionUtils.cs
+++ b/ICD.Common.Utils/RecursionUtils.cs
@@ -32,6 +32,20 @@ namespace ICD.Common.Utils
.Select(node => GetClique(map, visited, node));
}
+ ///
+ /// Gets the clique containing the given node.
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static IEnumerable GetClique(IEnumerable nodes, T node, Func> getAdjacent)
+ {
+ Dictionary> map = nodes.ToDictionary(n => n, getAdjacent);
+ return GetClique(map, node);
+ }
+
///
/// Gets the clique containing the given node.
///