using System; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTests.Common.Extensions { [TestClass] public class CollectionExtensionsTests { [TestMethod] public void ShouldAddItem() { // Arrange var item = new TestItem { Number = 10, Text = "Ten" }; ICollection list = new List { new() { Number = 1, Text = "One" } }; // Act list.AddIfNotNull(item); // Assert Assert.AreEqual(2, list.Count); } [TestMethod] public void ShouldNotAddItem() { // Arrange TestItem item = null; ICollection list = new List { new() { Number = 1, Text = "One" } }; // Act list.AddIfNotNull(item); // Assert Assert.AreEqual(1, list.Count); } [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void ShouldThrowArgumentNullExceptionForNullList() { // Arrange var item = new TestItem { Number = 10, Text = "Ten" }; ICollection list = null; // Act list.AddIfNotNull(item); // Assert - ArgumentNullException } [TestMethod] public void ShouldAddRange() { // Arrange ICollection items = new List { new() { Number = 10, Text = "Ten" }, new() { Number = 11, Text = "Eleven" }, }; ICollection list = new List { new() { Number = 1, Text = "One" }, }; // Act list.AddRange(items); // Assert Assert.AreEqual(3, list.Count); } [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void ShouldThrowArgumentNullExceptionForList() { // Arrange ICollection items = new List { new() { Number = 10, Text = "Ten" }, new() { Number = 11, Text = "Eleven" }, }; ICollection list = null; // Act list.AddRange(items); // Assert - ArgumentNullException } [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void ShouldThrowArgumentNullExceptionForItems() { // Arrange ICollection items = null; ICollection list = new List { new() { Number = 1, Text = "One" }, }; // Act list.AddRange(items); // Assert - ArgumentNullException } [TestMethod] public void ShouldNotAddRange() { // Arrange ICollection list = new List { new() { Number = 1, Text = "One" }, }; // Act list.AddRange(list); // Assert Assert.AreEqual(1, list.Count); } private class TestItem { public int Number { get; set; } public string Text { get; set; } } } }