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
-~----------~----~----~----~------~----~------~--~---