public void IncludesLastOnly()
        {
            var enumerator = new[] { 1, 3, 6 }.GetEnumerator();
            var filter = new FilteringEnumerator(enumerator, new IsNumberEvenTest());

            Assert.IsTrue(filter.MoveNext());

            // Current element must be 6
            Assert.AreEqual((int)filter.Current, 6);
        }
        public void MoveNextFirstCallTest()
        {
            var enumerator = new[] { 2, 4, 6 }.GetEnumerator();
            var filter = new FilteringEnumerator(enumerator, new IsNumberEvenTest());

            Assert.IsTrue(filter.MoveNext());

            // Current element must be 2
            Assert.AreEqual((int)filter.Current, 2);
        }
        public void ResetTest()
        {
            var enumerator = new[] { 2, 4, 6 }.GetEnumerator();
            var filter = new FilteringEnumerator(enumerator, new IsNumberEvenTest());

            Assert.IsTrue(filter.MoveNext());
            Assert.IsTrue(filter.MoveNext());
            filter.Reset();

            Assert.IsTrue(filter.MoveNext() && (int)filter.Current == 2);
        }
        public void MoveNextPastEndTests()
        {
            var enumerator = new[] { 2, 4, 6 }.GetEnumerator();
            var filter = new FilteringEnumerator(enumerator, new IsNumberEvenTest());

            Assert.IsTrue(filter.MoveNext());
            Assert.IsTrue(filter.MoveNext());
            Assert.IsTrue(filter.MoveNext());
            Assert.IsFalse(filter.MoveNext());
            Assert.IsFalse(filter.MoveNext());
        }
        public void TestEvenNumbers()
        {
            var allNumbers = new List <object> {
                2, 3, 4, 5, 6, 7
            }.GetEnumerator();
            var evenNum                = new EvenNumber();
            FilteringEnumerator filter = new FilteringEnumerator(allNumbers, evenNum);

            filter.MoveNext();
            Assert.AreEqual(2, filter.Current);

            filter.MoveNext();
            Assert.AreEqual(4, filter.Current);
        }