For my article/post I am going to to use the following for the complex example:

public interface IEnumerationData
{
        IEnumerator MakeANewTestSubject();
        void VerifyMoveNextValue(bool actual);
        void VerifyCurrentValue(object actual);
        void VerifyEndOfMovingForward();
}

public class ArrayData : IEnumerationData
{
        private String[] _TestSubject;
        public IEnumerator MakeANewTestSubject()
        {
                _TestSubject = new String[3] {"one", "two", "three"};
                return _TestSubject.GetEnumerator();
        }

        private bool[] _MoveNextExpectations;
        private bool[] MoveNextExpectations
        {
                get
                {
                        if (_MoveNextExpectations == null)
                                _MoveNextExpectations = new bool[4] { true, 
true, true, false };
                        return _MoveNextExpectations;
                }
        }

        private int _MoveNextCount;
        private int MoveNextCount
        {
                get
                {
                        return _MoveNextCount;
                }
                set
                {
                        _MoveNextCount = value;
                }
        }

        public void VerifyMoveNextValue(bool actual)
        {
                Assert.AreEqual(this.MoveNextExpectations[this.MoveNextCount], 
actual);
                this.MoveNextCount++;
        }

        public void VerifyCurrentValue(object actual)
        {
                Assert.AreEqual(this._TestSubject[this.MoveNextCount - 1], 
actual);
        }

        public void VerifyEndOfMovingForward()
        {
                Assert.AreEqual(this.MoveNextCount, 4, "Expected MoveNext to 
have
been called 4 times");
        }
}

[TypeFixture(typeof(IEnumerationData))]
public class IEnumerableTester
{
        [Provider(typeof(IEnumerationData))]
        public IEnumerationData ProvideArrayData()
        {
                return new ArrayData();
        }

        [Test]
        [ExpectedException(typeof(InvalidOperationException))]
        public void TestInitialCurrentValue(IEnumerationData testData)
        {
                object InitalValue = null;
                InitalValue = testData.MakeANewTestSubject().Current;
        }

        [Test]
        public void TestMovingForward(IEnumerationData testData)
        {
                object Value = null;
                bool HasValue = false;
                IEnumerator TestSubject = testData.MakeANewTestSubject();

                HasValue = TestSubject.MoveNext();
                testData.VerifyMoveNextValue(HasValue);

                while (HasValue)
                {
                        Value = TestSubject.Current;
                        testData.VerifyCurrentValue(Value);

                        HasValue = TestSubject.MoveNext();
                        testData.VerifyMoveNextValue(HasValue);
                }

                testData.VerifyEndOfMovingForward();
        }
}


-- 
Jay Flowers
----------------------------------------------------------------------
http://jayflowers.com
---------------------------------------------------------------------

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MbUnit.User" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/MbUnitUser
-~----------~----~----~----~------~----~------~--~---

Reply via email to