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