using System; using System.Collections.Generic; using AMWD.Common.Cli; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTests.Common.Cli { [TestClass] public class EnumerableWalkerTests { private List list; [TestInitialize] public void Initialize() { list = new List { "one", "two", "three", "four", }; } [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void ShouldThrowExceptionOnNullReference() { // arrange // act _ = new EnumerableWalker(null); // assert - ArgumentNullException Assert.Fail(); } [TestMethod] public void ShouldReturnEnumerator() { // arrange var walker = new EnumerableWalker(list); // act var enumerator = walker.GetEnumerator(); // assert Assert.IsNotNull(enumerator); } [TestMethod] public void ShouldReturnGenericEnumerator() { // arrange var walker = new EnumerableWalker(list); // act var enumerator = ((IEnumerable)walker).GetEnumerator(); // assert Assert.IsNotNull(enumerator); } [TestMethod] public void ShouldReturnItems() { // arrange var walker = new EnumerableWalker(list); _ = walker.GetEnumerator(); string[] items = new string[list.Count]; // act for (int i = 0; i < list.Count; i++) items[i] = walker.GetNext(); // assert for (int i = 0; i < list.Count; i++) Assert.AreEqual(list[i], items[i], $"Position {i} failed"); } [TestMethod] public void ShouldReturnDefaultWhenNothingLeft() { // arrange var walker = new EnumerableWalker(Array.Empty()); _ = walker.GetEnumerator(); // act string item = walker.GetNext(); // assert Assert.AreEqual(default(string), item); } } }