Accord.Tests.MachineLearning.VPTreeTest.FromDataTest2 C# (CSharp) Method

FromDataTest2() private method

private FromDataTest2 ( ) : void
return void
        public void FromDataTest2()
        {
            Accord.Math.Random.Generator.Seed = 0;

            double[][] points =
            {
                new double[] { 2, 3 },
                new double[] { 5, 4 },
                new double[] { 9, 6 },
                new double[] { 4, 7 },
                new double[] { 8, 1 },
                new double[] { 7, 2 },
            };


            var tree = VPTree.FromData(points, new Manhattan());

            foreach (var n in tree)
            {
                double[] location = n.Position;
                Assert.AreEqual(2, location.Length);
            }

            List<VPTreeNode<double[]>> nodes = tree.ToList();
            foreach (var p in points)
            {
                Assert.IsTrue(nodes.Select(x => x.Position).Contains(p, new ArrayComparer<double>()));
            }

            var query = new double[] { 5, 3 };

            var neighbors = tree.Nearest(query, neighbors: 3);

            Assert.IsFalse(tree.Root.IsLeaf);

            Assert.AreEqual(3, neighbors.Count);
            Assert.AreEqual("[(5,4), 4]", neighbors[0].Node.ToString());
            Assert.AreEqual("[(2,3), 0]", neighbors[1].Node.ToString());
            Assert.AreEqual("[(7,2), 0]", neighbors[2].Node.ToString());

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

            Assert.AreEqual("[(5,4), 4]", tree.Root.Left.ToString());
            Assert.AreEqual("[(4,7), 6]", tree.Root.Right.ToString());

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

            Assert.AreEqual(9, tree.Root.Right.Right.Position[0]);
            Assert.AreEqual(6, tree.Root.Right.Right.Position[1]);
        }