public class MockExtendedHandler : Handler {
private bool requestHandled = false;
public MockExtendedHandler() : base() { }
public MockExtendedHandler(Handler successor) : base(successor) { }
public new Handler Successor {
get { return successor; }
}
public override void HandleRequest() {
requestHandled = true;
base.HandleRequest();
}
public bool RequestHandled {
get { return requestHandled; }
}
}
[TestFixture]
public class HandlerTestFixture {
Handler handler;
[SetUp]
public void SetUp() {
handler = new MockExtendedHandler();
}
[Test]
public void HandleRequestCompletesSuccessfullyWhenNoSuccessorIsSet() {
try {
handler.HandleRequest();
} catch {
Assert.Fail();
}
}
[Test]
public void HandleRequestOnHandlerPassesOffToSuccessor() {
Handler successor = new MockExtendedHandler();
handler = new MockExtendedHandler(successor);
handler.HandleRequest();
Assert.IsTrue(((MockExtendedHandler)successor).RequestHandled);
}
[Test]
public void SetAccessorSetsSuccessor() {
Handler successor = new MockExtendedHandler();
handler.Successor = successor;
Assert.AreEqual(successor, ((MockExtendedHandler)handler).Successor);
}
[Test]
public void ConstructorOverloadSetsSuccessor() {
Handler successor = new MockExtendedHandler();
handler = new MockExtendedHandler(successor);
Assert.AreEqual(successor, ((MockExtendedHandler)handler).Successor);
}
}