public void MoveNext(string[] array)
        {
            var enumerator = new PeekIterator <string>(array);

            foreach (var t in array)
            {
                Assert.AreEqual(t, enumerator.Next());
            }
        }
        public void MovePastRange_ThrowsException(string[] array)
        {
            var enumerator = new PeekIterator <string>(array);

            foreach (var unused in array)
            {
                enumerator.Next();
            }

            Assert.ThrowsException <InvalidOperationException>(() => enumerator.Next());
        }
        public void HasNext(string[] array)
        {
            var enumerator = new PeekIterator <string>(array);

            for (var i = 0; i <= array.Length; i++)
            {
                Assert.AreEqual(array.Length - i > 0, enumerator.HasNext());
                if (i < array.Length)
                {
                    enumerator.Next();
                }
            }
        }