using System; using System.Collections.Generic; using AMWD.Common.Cli; namespace AMWD.Common.Tests.Cli { [TestClass] public class EnumerableWalkerTest { private List _list; [TestInitialize] public void Initialize() { _list = ["one", "two", "three", "four"]; } [TestMethod] public void ShouldThrowExceptionOnNullReference() { // arrange // act & assert Assert.ThrowsExactly(() => new EnumerableWalker(null)); } [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([]); _ = walker.GetEnumerator(); // act string item = walker.GetNext(); // assert Assert.AreEqual(default, item); } } }