public static NodeP RandomChildren(int depth)
        {
            var node = new NodeP();
            var rnd  = new Random();

            if (depth == 0)
            {
                NVarP nodeVar = new NVarP();
                nodeVar.Value = rnd.NextDouble();
                var n = new NodeP();
                n.Nvar = nodeVar;
            }
            else
            {
                var ngroup = new NGroupP();
                var group  = new NodeGroupP();
                group.Base = RandomNodeBase();
                var lst = new List <NodeP>(UtilsCommon.DefaultChildNodesAmount);
                for (int i = 0; i < lst.Capacity; ++i)
                {
                    lst.Add(RandomChildren(depth - 1));
                }
                group.Children.AddRange(lst);
                ngroup.Group = group;
                node.Ngroup  = ngroup;
            }

            return(node);
        }
        public void NextClosestNode_8()
        {
            var node7 = new NodeP {
                Data = 4
            };
            var node8 = new NodeP {
                Data = 7
            };
            var node9 = new NodeP {
                Data = 13
            };

            var node4 = new NodeP {
                Data = 1
            };
            var node5 = new NodeP {
                Data = 6, Left = node7, Right = node8
            };
            var node6 = new NodeP {
                Data = 14, Left = node9
            };

            var node2 = new NodeP {
                Data = 3, Left = node4, Right = node5
            };
            var node3 = new NodeP {
                Data = 10, Right = node6
            };

            var node1 = new NodeP {
                Data = 8, Left = node2, Right = node3
            };

            node2.Parent = node1;
            node3.Parent = node1;

            node4.Parent = node2;
            node5.Parent = node2;

            node6.Parent = node3;

            node7.Parent = node5;
            node8.Parent = node5;

            node9.Parent = node6;

            var res = GetNextNode.GetNext(node1);
            var exp = node3;

            Assert.AreEqual(exp, res);
        }