diff --git a/PowerKit.Tests/CollectionExtensionsTests.cs b/PowerKit.Tests/CollectionExtensionsTests.cs index 41154e6..210b8b9 100644 --- a/PowerKit.Tests/CollectionExtensionsTests.cs +++ b/PowerKit.Tests/CollectionExtensionsTests.cs @@ -7,6 +7,58 @@ namespace PowerKit.Tests; public class CollectionExtensionsTests { + [Fact] + public void AddRange_Test() + { + // Arrange + var collection = (ICollection)new List { 1, 2, 3 }; + + // Act + collection.AddRange([4, 5, 6]); + + // Assert + collection.Should().Equal(1, 2, 3, 4, 5, 6); + } + + [Fact] + public void AddRange_SameCollection_Test() + { + // Arrange + var collection = (ICollection)new List { 1, 2, 3 }; + + // Act + collection.AddRange(collection); + + // Assert + collection.Should().Equal(1, 2, 3, 1, 2, 3); + } + + [Fact] + public void RemoveRange_Test() + { + // Arrange + var collection = (ICollection)new List { 1, 2, 3, 4, 5 }; + + // Act + collection.RemoveRange([2, 4]); + + // Assert + collection.Should().Equal(1, 3, 5); + } + + [Fact] + public void RemoveRange_SameCollection_Test() + { + // Arrange + var collection = (ICollection)new List { 1, 2, 3, 4, 5 }; + + // Act + collection.RemoveRange(collection); + + // Assert + collection.Should().BeEmpty(); + } + [Fact] public void RemoveAll_Test() { diff --git a/PowerKit/Extensions/CollectionExtensions.cs b/PowerKit/Extensions/CollectionExtensions.cs index d3455a6..aa86ab6 100644 --- a/PowerKit/Extensions/CollectionExtensions.cs +++ b/PowerKit/Extensions/CollectionExtensions.cs @@ -13,6 +13,24 @@ internal static class CollectionExtensions { extension(ICollection source) { + /// + /// Adds all elements from the specified sequence to the collection. + /// + public void AddRange(IEnumerable items) + { + foreach (var item in items.ToArray()) + source.Add(item); + } + + /// + /// Removes all elements in the specified sequence from the collection. + /// + public void RemoveRange(IEnumerable items) + { + foreach (var item in items.ToArray()) + source.Remove(item); + } + /// /// Removes all elements from the collection that match the specified predicate. ///