public void RemoveAll_DefaultElements(int count)
        {
            SegmentedList <T> list                 = GenericListFactory(count);
            SegmentedList <T> beforeList           = list.ToSegmentedList();
            Predicate <T>     EqualsDefaultElement = (value) => { return(default(T) == null ? value == null : default(T) !.Equals(value)); };
            int expectedCount = beforeList.Count((value) => EqualsDefaultElement(value));
            int removedCount  = list.RemoveAll(EqualsDefaultElement);

            Assert.Equal(expectedCount, removedCount);
        }
        public void BinarySearch_ForEveryItemWithoutDuplicates(int count)
        {
            SegmentedList <T> list = GenericListFactory(count);

            foreach (T item in list)
            {
                while (list.Count((value) => value.Equals(item)) > 1)
                {
                    list.Remove(item);
                }
            }
            list.Sort();
            SegmentedList <T> beforeList = list.ToSegmentedList();

            Assert.All(Enumerable.Range(0, list.Count), index =>
            {
                Assert.Equal(index, list.BinarySearch(beforeList[index]));
                Assert.Equal(index, list.BinarySearch(beforeList[index], GetIComparer()));
                Assert.Equal(beforeList[index], list[index]);
            });
        }