Пример #1
0
    public void EnableHierarchy_NodeNotInTree()
    {
        SkipTree <Item> tree  = new SkipTree <Item>();
        var             one   = new Item(null, "one");
        var             two   = new Item(null, "two");
        var             three = new Item(null, "three");
        var             four  = new Item(two, "four");
        var             five  = new Item(two, "five");
        var             six   = new Item(two, "six");

        tree.AddItem(one);
        // two not in tree!
        tree.AddItem(three);
        tree.AddItem(four);
        tree.AddItem(five);
        tree.AddItem(six);
        tree.DisableHierarchy(five);
        tree.DisableHierarchy(four);
        string[] output = new string[5];
        int      i      = 0;

        tree.EnableHierarchy(two);
        tree.TraversePreOrder((item) => {
            output[i++] = item.name;
        });
        Assert.AreEqual(new[] { "one", "three", "four", "five", "six" }, output);
        Assert.AreEqual(5, tree.Size);
    }
Пример #2
0
    public void RemoveAnElementHierarchy_NodeInTree()
    {
        SkipTree <Item> tree  = new SkipTree <Item>();
        var             one   = new Item(null, "one");
        var             two   = new Item(null, "two");
        var             three = new Item(null, "three");
        var             four  = new Item(two, "four");
        var             five  = new Item(two, "five");
        var             six   = new Item(two, "six");

        tree.AddItem(one);
        tree.AddItem(two);
        tree.AddItem(three);
        tree.AddItem(four);
        tree.AddItem(five);
        tree.AddItem(six);
        tree.RemoveHierarchy(two);
        string[] output = new string[2];
        int      i      = 0;

        tree.TraversePreOrder((item) => {
            output[i++] = item.name;
        });
        Assert.AreEqual(new[] { "one", "three" }, output);
        Assert.AreEqual(2, tree.Size);
    }
Пример #3
0
    public void AddNodeToRoot()
    {
        SkipTree <Item> tree  = new SkipTree <Item>();
        var             one   = new Item(null, "one");
        var             two   = new Item(one, "two");
        var             three = new Item(one, "three");

        tree.AddItem(two);
        tree.AddItem(three);
        string[] output = new string[2];
        int      i      = 0;

        tree.TraversePreOrder((item) => {
            output[i++] = item.name;
        });
        Assert.AreEqual(new[] { "two", "three" }, output);
    }
Пример #4
0
    public void MissingParentInTree()
    {
        SkipTree <Item> tree  = new SkipTree <Item>();
        var             one   = new Item(null, "one");
        var             two   = new Item(one, "two");
        var             three = new Item(two, "three");
        var             four  = new Item(two, "four");

        tree.AddItem(three);
        tree.AddItem(four);
        tree.AddItem(one);
        string[] output = new string[3];
        int      i      = 0;

        tree.TraversePreOrder((item) => {
            output[i++] = item.name;
        });
        Assert.AreEqual(new[] { "one", "three", "four" }, output);
    }