using System; using System.Collections.Generic; namespace AMWD.Common.Tests.Extensions { [TestClass] public class CollectionExtensionsTest { [TestMethod] public void ShouldAddItem() { // Arrange var item = new TestItem { Number = 10, Text = "Ten" }; ICollection list = [ new() { Number = 1, Text = "One" } ]; // Act list.AddIfNotNull(item); // Assert Assert.HasCount(2, list); } [TestMethod] public void ShouldNotAddItem() { // Arrange TestItem item = null; ICollection list = [ new() { Number = 1, Text = "One" } ]; // Act list.AddIfNotNull(item); // Assert Assert.HasCount(1, list); } [TestMethod] public void ShouldThrowArgumentNullExceptionForNullList() { // Arrange var item = new TestItem { Number = 10, Text = "Ten" }; ICollection list = null; // Act & Assert Assert.ThrowsExactly(() => list.AddIfNotNull(item)); } [TestMethod] public void ShouldAddRange() { // Arrange ICollection items = [ new() { Number = 10, Text = "Ten" }, new() { Number = 11, Text = "Eleven" }, ]; ICollection list = [ new() { Number = 1, Text = "One" }, // Act .. items, ]; // Assert Assert.HasCount(3, list); } [TestMethod] public void ShouldThrowArgumentNullExceptionForList() { // Arrange ICollection items = [ new() { Number = 10, Text = "Ten" }, new() { Number = 11, Text = "Eleven" }, ]; ICollection list = null; // Act & Assert Assert.ThrowsExactly(() => list.AddRange(items)); } [TestMethod] public void ShouldThrowArgumentNullExceptionForItems() { // Arrange ICollection items = null; ICollection list = [ new() { Number = 1, Text = "One" }, ]; // Act & Assert Assert.ThrowsExactly(() => list.AddRange(items)); } [TestMethod] public void ShouldNotAddRange() { // Arrange ICollection list = [ new() { Number = 1, Text = "One" }, ]; // Act list.AddRange(list); // Assert Assert.HasCount(1, list); } private class TestItem { public int Number { get; set; } public string Text { get; set; } } } }