public void InsertingExistingElement_ReturnsSameRoot() { var items = RandomHelper.UniqueSequence(_random, 100); var node = CreateTree(items); foreach (var item in items) { var result = TwoThreeHelper.Insert(node, item); Assert.AreSame(node, result); } }
public void RemoveSequentialData_InReversedOrder_Test() { const int count = 100; var items = Enumerable.Range(0, count).ToArray(); var itemSet = new SortedSet <int>(items); var node = CreateTree(items); foreach (var i in items.Reverse()) { node = TwoThreeHelper.Remove(node, i); itemSet.Remove(i); AssertValid(node); CollectionAssert.AreEqual(itemSet, node.GetValues()); } }
public void RemoveRandomData_Test() { const int count = 100; var items = RandomHelper.UniqueSequence(_random, count); var itemSet = new SortedSet <int>(items); var node = CreateTree(items); var shuffled = RandomHelper.Shuffle(_random, items); foreach (var i in shuffled) { node = TwoThreeHelper.Remove(node, i); itemSet.Remove(i); AssertValid(node); CollectionAssert.AreEqual(itemSet, node.GetValues()); } Assert.IsInstanceOf <EmptyTwoThree <int> >(node); }
private ITwoThree <T> CreateTree <T>(IEnumerable <T> items, IComparer <T> comparer = null) { return(items.Aggregate((ITwoThree <T>)EmptyTwoThree <T> .Instance, (current, item) => TwoThreeHelper.Insert(current, item, comparer))); }