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); }
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); }
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); }
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); }