Accord.Tests.MachineLearning.KDTreeTest.NearestTest2 C# (CSharp) Method

NearestTest2() private method

private NearestTest2 ( ) : void
return void
        public void NearestTest2()
        {
            double[][] points =
            {
                                        new double[] { 2, 3 }, 
                 new double[] { 3, 2 }, new double[] { 3, 3 }, new double[] { 3, 4 }, 
                                        new double[] { 4, 3 }, 
            };

            var tree = KDTree.FromData<int>(points);
            tree.Distance = new Manhattan();

            Assert.AreEqual(3, tree.Root.Position[0]);
            Assert.AreEqual(3, tree.Root.Position[1]);

            if (tree.Root.Left.Position[0] == 2)
            {
                Assert.AreEqual(2, tree.Root.Left.Position[0]);
                Assert.AreEqual(3, tree.Root.Left.Position[1]);

                Assert.AreEqual(3, tree.Root.Right.Position[0]);
                Assert.AreEqual(4, tree.Root.Right.Position[1]);

                Assert.AreEqual(3, tree.Root.Left.Left.Position[0]);
                Assert.AreEqual(2, tree.Root.Left.Left.Position[1]);

                Assert.AreEqual(4, tree.Root.Right.Left.Position[0]);
                Assert.AreEqual(3, tree.Root.Right.Left.Position[1]);
            }
            else
            {
                Assert.AreEqual(3, tree.Root.Left.Position[0]);
                Assert.AreEqual(4, tree.Root.Left.Position[1]);

                Assert.AreEqual(4, tree.Root.Right.Position[0]);
                Assert.AreEqual(3, tree.Root.Right.Position[1]);

                Assert.AreEqual(2, tree.Root.Left.Left.Position[0]);
                Assert.AreEqual(3, tree.Root.Left.Left.Position[1]);

                Assert.AreEqual(3, tree.Root.Right.Left.Position[0]);
                Assert.AreEqual(2, tree.Root.Right.Left.Position[1]);
            }



            var result = tree.Nearest(new double[] { 3, 3 }, 5);

            double[][] expected =
            {
                                        new double[] { 2, 3 },
                new double[] { 3, 2 },  new double[] { 3, 3 }, new double[] { 3, 4 }, 
                                        new double[] { 4, 3 }, 
            };

            Assert.AreEqual(expected.Length, result.Count);

            double[][] actual = (from node in result select node.Node.Position).ToArray();

            for (int i = 0; i < expected.Length; i++)
            {
                Assert.IsTrue(actual.Contains(expected[i], new CustomComparer<double[]>((a, b) => a.IsEqual(b) ? 0 : 1)));
            }
        }