public void BKTreeShouldFindBestNodeWithDistance() { BKTree <ExampleMetric> tree = new BKTree <ExampleMetric>(); ExampleMetric search = new ExampleMetric(new int[] { 365, 422, 399 }); ExampleMetric best = new ExampleMetric(4, new int[] { 400, 400, 400 }); tree.Add(new ExampleMetric(1, new int[] { 100, 100, 100 })); tree.Add(new ExampleMetric(2, new int[] { 200, 200, 200 })); tree.Add(new ExampleMetric(3, new int[] { 300, 300, 300 })); tree.Add(best); tree.Add(new ExampleMetric(5, new int[] { 500, 500, 500 })); Tuple <ExampleMetric, int> result = tree.FindClosestElement(search); Assert.AreEqual(58, DistanceMetric.CalculateLeeDistance(search.Data, best.Data)); Assert.AreEqual(58, result.Item2); Assert.AreEqual(4, result.Item1.Id); Assert.AreEqual(best.Data, result.Item1.Data); }