public void IndexTest()
        {
            Assert.AreEqual(Tree.Count, InitialCount);

            RBOrderedTreeNode <string> node = Tree.Find("005");

            Assert.AreEqual("005", node.Key);

            node = Tree.GetByOrder(0);

            Assert.AreEqual("001", node.Key);

            node = Tree.GetByOrder(4);

            Assert.AreEqual("005", node.Key);

            node = Tree.GetByOrder(2);

            Assert.AreEqual("003", node.Key);

            node = Tree.GetByOrder(5);

            Assert.AreEqual("006", node.Key);

            node = Tree.GetByOrder(7);

            Assert.AreEqual("008", node.Key);
        }
示例#2
0
        public void OrderedTreeTest()
        {
            Random r = new Random((int)(DateTime.Now.Ticks ^ 0xffff));
            RBOrderedTree <int> tree = new RBOrderedTree <int>();
            List <int>          vals = new List <int>();
            int i, j, k;

            //fill tree
            while (tree.Count != 1000)
            {
                i = r.Next(10000);
                if (tree.Find(i) != null)
                {
                    continue;
                }
                tree.Add(i);
                vals.Add(i);
            }
            vals.Sort();

            //check ordering
            k = 0;
            for (i = 0; i < vals.Count; i++)
            {
                if (tree.GetByOrder(i).Key != vals[i])
                {
                    k++;
                }
            }

            Assert.AreEqual(0, k);
            //Console.WriteLine("{0}", k == 0 ? "ok" : "failed");

            //check get order operation
            k = 0;
            for (i = 0; i < tree.Count; i++)
            {
                if (tree.GetOrder(tree.GetByOrder(i)) != i)
                {
                    k++;
                }
            }
            Assert.AreEqual(0, k);
            //Console.WriteLine("{0}", k == 0 ? "ok" : "failed");

            //remove some items and re-check
            for (i = 0; i < 50; i++)
            {
                j = r.Next(vals.Count);
                tree.Remove(vals[j]);
                vals.RemoveAt(j);
            }

            //check ordering
            k = 0;
            for (i = 0; i < vals.Count; i++)
            {
                if (tree.GetByOrder(i).Key != vals[i])
                {
                    k++;
                }
            }
            Assert.AreEqual(0, k);
            //Console.WriteLine("{0}", k == 0 ? "ok" : "failed");

            //check get order operation
            k = 0;
            for (i = 0; i < tree.Count; i++)
            {
                if (tree.GetOrder(tree.GetByOrder(i)) != i)
                {
                    k++;
                }
            }
            Assert.AreEqual(0, k);
            //Console.WriteLine("{0}", k == 0 ? "ok" : "failed");
        }