Assert.Throws<InvalidOperationException>(() => list.AddRange(list.Where(_ => true)));
Assert.Equal(6, list.Count);
}
+
+ [Fact]
+ public void AddRange_CollectionWithLargeCount_ThrowsOverflowException()
+ {
+ List<T> list = GenericListFactory(count: 1);
+ ICollection<T> collection = new CollectionWithLargeCount();
+
+ Assert.Throws<OverflowException>(() => list.AddRange(collection));
+ }
+
+ private class CollectionWithLargeCount : ICollection<T>
+ {
+ public int Count => int.MaxValue;
+
+ public bool IsReadOnly => throw new NotImplementedException();
+ public void Add(T item) => throw new NotImplementedException();
+ public void Clear() => throw new NotImplementedException();
+ public bool Contains(T item) => throw new NotImplementedException();
+ public void CopyTo(T[] array, int arrayIndex) => throw new NotImplementedException();
+ public IEnumerator<T> GetEnumerator() => throw new NotImplementedException();
+ public bool Remove(T item) => throw new NotImplementedException();
+ IEnumerator IEnumerable.GetEnumerator() => throw new NotImplementedException();
+ }
}
}
Assert.Equal(12, list.Count);
Assert.Equal(new[] { 6, 5, 4, 100, 99, 98, 3, 2, 1, 0, -1, -2 }, list);
}
+
+ [Fact]
+ public void InsertRange_CollectionWithLargeCount_ThrowsOverflowException()
+ {
+ List<T> list = GenericListFactory(count: 1);
+ ICollection<T> collection = new CollectionWithLargeCount();
+
+ Assert.Throws<OverflowException>(() => list.InsertRange(0, collection));
+ }
}
}