예제 #1
0
        public void Reverse_RepeatedValues(int listLength, int index, int count)
        {
            PooledList <T> list = GenericListFactory(1);

            for (int i = 1; i < listLength; i++)
            {
                list.Add(list[0]);
            }
            PooledList <T> listBefore = list.ToPooledList();

            list.Reverse(index, count);

            for (int i = 0; i < index; i++)
            {
                Assert.Equal(list[i], listBefore[i]); //"Expect them to be the same."
            }

            int j = 0;

            for (int i = index; i < index + count; i++)
            {
                Assert.Equal(list[i], listBefore[index + count - (j + 1)]); //"Expect them to be the same."
                j++;
            }

            for (int i = index + count; i < listBefore.Count; i++)
            {
                Assert.Equal(list[i], listBefore[i]); //"Expect them to be the same."
            }

            list.Dispose();
            listBefore.Dispose();
        }
        public void AddRange_NullEnumerable_ThrowsArgumentNullException(int count)
        {
            PooledList <T> list          = GenericListFactory(count);
            var            listBeforeAdd = list.ToPooledList();

            Assert.Throws <ArgumentNullException>(() => list.AddRange((IEnumerable <T>)null));
            Assert.Equal(listBeforeAdd, list);
            list.Dispose();
            listBeforeAdd.Dispose();
        }
예제 #3
0
        public void RemoveAll_AllElements(int count)
        {
            PooledList <T> list         = GenericListFactory(count);
            PooledList <T> beforeList   = list.ToPooledList();
            int            removedCount = list.RemoveAll((value) => { return(true); });

            Assert.Equal(count, removedCount);
            Assert.Equal(0, list.Count);

            list.Dispose();
            beforeList.Dispose();
        }
        public void IndexOf_NoDuplicates(IndexOfMethod indexOfMethod, int count, bool frontToBackOrder)
        {
            PooledList <T>  list         = GenericListFactory(count);
            PooledList <T>  expectedList = list.ToPooledList();
            IndexOfDelegate IndexOf      = IndexOfDelegateFromType(indexOfMethod);

            Assert.All(Enumerable.Range(0, count), i =>
            {
                Assert.Equal(i, IndexOf(list, expectedList[i]));
            });

            list.Dispose();
            expectedList.Dispose();
        }
예제 #5
0
        public void Reverse(int listLength)
        {
            PooledList <T> list       = GenericListFactory(listLength);
            PooledList <T> listBefore = list.ToPooledList();

            list.Reverse();

            for (int i = 0; i < listBefore.Count; i++)
            {
                Assert.Equal(list[i], listBefore[listBefore.Count - (i + 1)]); //"Expect them to be the same."
            }

            list.Dispose();
            listBefore.Dispose();
        }
예제 #6
0
        public void RemoveAll_DefaultElements(int count)
        {
            PooledList <T> list       = GenericListFactory(count);
            PooledList <T> beforeList = list.ToPooledList();

            bool EqualsDefaultElement(T 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);

            list.Dispose();
            beforeList.Dispose();
        }
        public void BinarySearch_ForEveryItemWithDuplicates(int count)
        {
            if (count > 0)
            {
                PooledList <T> list = GenericListFactory(count);
                list.Add(list[0]);
                list.Sort();
                PooledList <T> beforeList = list.ToPooledList();

                Assert.All(Enumerable.Range(0, list.Count), index =>
                {
                    Assert.True(list.BinarySearch(beforeList[index]) >= 0);
                    Assert.True(list.BinarySearch(beforeList[index], GetIComparer()) >= 0);
                    Assert.Equal(beforeList[index], list[index]);
                });
                list.Dispose();
            }
        }
예제 #8
0
        public void ConvertAll()
        {
            var list   = new PooledList <int>(new int[] { 1, 2, 3 });
            var before = list.ToPooledList();
            var after  = list.ConvertAll((i) => { return(10 * i); });

            Assert.Equal(before.Count, list.Count);
            Assert.Equal(before.Count, after.Count);

            for (int i = 0; i < list.Count; i++)
            {
                Assert.Equal(before[i], list[i]);
                Assert.Equal(before[i] * 10, after[i]);
            }

            list.Dispose();
            before.Dispose();
            after.Dispose();
        }
예제 #9
0
        public void Remove_Range(int listLength, int index, int count)
        {
            PooledList <T> list       = GenericListFactory(listLength);
            PooledList <T> beforeList = list.ToPooledList();

            list.RemoveRange(index, count);
            Assert.Equal(list.Count, listLength - count); //"Expected them to be the same."
            for (int i = 0; i < index; i++)
            {
                Assert.Equal(list[i], beforeList[i]); //"Expected them to be the same."
            }

            for (int i = index; i < count - (index + count); i++)
            {
                Assert.Equal(list[i], beforeList[i + count]); //"Expected them to be the same."
            }

            list.Dispose();
            beforeList.Dispose();
        }
        public void LastIndexOf_int_OrderIsCorrectWithManyDuplicates(int count)
        {
            PooledList <T> list = GenericListFactory(count);
            PooledList <T> withoutDuplicates = list.ToPooledList();

            list.AddRange(list);
            list.AddRange(list);
            list.AddRange(list);

            Assert.All(Enumerable.Range(0, count), i =>
            {
                Assert.All(Enumerable.Range(0, 4), j =>
                {
                    int expectedIndex = (j * count) + i;
                    Assert.Equal(expectedIndex, list.LastIndexOf(withoutDuplicates[i], (count * (j + 1)) - 1));
                    Assert.Equal(expectedIndex, list.LastIndexOf(withoutDuplicates[i], (count * (j + 1)) - 1, count));
                });
            });

            list.Dispose();
            withoutDuplicates.Dispose();
        }
        public void AddRange(EnumerableType enumerableType, int listLength, int enumerableLength, int numberOfMatchingElements, int numberOfDuplicateElements)
        {
            PooledList <T>  list          = GenericListFactory(listLength);
            var             listBeforeAdd = list.ToPooledList();
            IEnumerable <T> enumerable    = CreateEnumerable(enumerableType, list, enumerableLength, numberOfMatchingElements, numberOfDuplicateElements);

            list.AddRange(enumerable);

            // Check that the first section of the List is unchanged
            Assert.All(Enumerable.Range(0, listLength), index =>
            {
                Assert.Equal(listBeforeAdd[index], list[index]);
            });

            // Check that the added elements are correct
            Assert.All(Enumerable.Range(0, enumerableLength), index =>
            {
                Assert.Equal(enumerable.ElementAt(index), list[index + listLength]);
            });

            list.Dispose();
        }
        public void BinarySearch_ForEveryItemWithoutDuplicates(int count)
        {
            PooledList <T> list = GenericListFactory(count);

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

            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]);
            });
            list.Dispose();
        }
        public void IndexOf_OrderIsCorrect(IndexOfMethod indexOfMethod, int count, bool frontToBackOrder)
        {
            PooledList <T> list = GenericListFactory(count);
            PooledList <T> withoutDuplicates = list.ToPooledList();

            list.AddRange(list);
            IndexOfDelegate IndexOf = IndexOfDelegateFromType(indexOfMethod);

            Assert.All(Enumerable.Range(0, count), i =>
            {
                if (frontToBackOrder)
                {
                    Assert.Equal(i, IndexOf(list, withoutDuplicates[i]));
                }
                else
                {
                    Assert.Equal(count + i, IndexOf(list, withoutDuplicates[i]));
                }
            });

            list.Dispose();
            withoutDuplicates.Dispose();
        }