示例#1
0
        public void SetHandlerSuccessor_WhenSetSuccessorIsCalled()
        {
            var concreteHandlerTwo   = new ConcreteHandlerTwo();
            var concreteHandlerThree = new ConcreteHandlerThree();

            concreteHandlerTwo.SetSuccessor(concreteHandlerThree);

            concreteHandlerTwo.Successor.Should().Be(concreteHandlerThree);
        }
示例#2
0
        private static void ChainOfResponsibilityExample()
        {
            var handlerOne = new ConcreteHandlerOne();
            var handlerTwo = new ConcreteHandlerTwo();

            handlerOne.SetSuccessor(handlerTwo);
            handlerTwo.SetSuccessor(handlerOne);

            handlerOne.HandleRequest("PrintDate");
            handlerOne.HandleRequest("PrintGreeting");
        }
示例#3
0
        public void ReturnThreeForRequestsOfTypeThree_WhenHandleRequestIsCalled()
        {
            var requestType = 3;
            var expectedConcreteHandlerNumber = 3;
            var concreteHandlerOne            = new ConcreteHandlerOne();
            var concreteHandlerTwo            = new ConcreteHandlerTwo();
            var concreteHandlerThree          = new ConcreteHandlerThree();

            concreteHandlerOne.SetSuccessor(concreteHandlerTwo);
            concreteHandlerTwo.SetSuccessor(concreteHandlerThree);

            var handledBy = concreteHandlerOne.Handle(requestType);

            handledBy.Should().Be(expectedConcreteHandlerNumber);
        }
示例#4
0
        public List <int> ProcessRequests(List <int> requestTypes)
        {
            var handlers             = new List <int>();
            var concreteHandlerOne   = new ConcreteHandlerOne();
            var concreteHandlerTwo   = new ConcreteHandlerTwo();
            var concreteHandlerThree = new ConcreteHandlerThree();

            concreteHandlerOne.SetSuccessor(concreteHandlerTwo);
            concreteHandlerTwo.SetSuccessor(concreteHandlerThree);

            foreach (var requestType in requestTypes)
            {
                handlers.Add(concreteHandlerOne.Handle(requestType));
            }

            return(handlers);
        }