Exemplo n.º 1
0
        public void AcceptsAndPropagatesVisitor()
        {
            var applicationBindingMock = new Mock <ApplicationBindingBase <string> >();

            var referencedApplicationBindingMock = new Mock <ApplicationBindingBase <string> >();

            applicationBindingMock.Object.ReferencedApplications.Add(referencedApplicationBindingMock.Object);

            var orchestrationBindingMock = new Mock <OrchestrationBindingBase <Process> >();

            applicationBindingMock.Object.Orchestrations.Add(orchestrationBindingMock.Object);

            var receivePortMock = new Mock <ReceivePortBase <string> >();

            applicationBindingMock.Object.ReceivePorts.Add(receivePortMock.Object);

            var sendPortMock = new Mock <SendPortBase <string> >();

            applicationBindingMock.Object.SendPorts.Add(sendPortMock.Object);

            var pipeline = new VisitorPipeline <string>(applicationBindingMock.Object);

            var visitorMock = new Mock <IApplicationBindingVisitor>();

            var sut = new ProcessingStage <string>(pipeline);

            sut.Accept(visitorMock.Object);

            visitorMock.Verify(m => m.VisitReferencedApplicationBinding(referencedApplicationBindingMock.Object), Times.Once);
            visitorMock.Verify(m => m.VisitApplicationBinding(applicationBindingMock.Object), Times.Once);
            visitorMock.Verify(m => m.VisitOrchestration(orchestrationBindingMock.Object), Times.Once);
            visitorMock.Verify(m => m.VisitReceivePort(receivePortMock.Object), Times.Once);
            visitorMock.Verify(m => m.VisitSendPort(sendPortMock.Object), Times.Once);
        }
        public void AcceptsAndPropagatesVisitorToCurrentStage()
        {
            var visitorMock = new Mock <IApplicationBindingVisitor>();

            var sut       = new VisitorPipeline <string>(new Mock <IApplicationBinding <string> >().Object);
            var stageMock = new Mock <ProcessingStage <string> >(sut);

            sut.Stage = stageMock.Object;

            sut.Accept(visitorMock.Object);

            stageMock.Verify(m => m.Accept(visitorMock.Object));
        }
Exemplo n.º 3
0
        public void AdvanceVisitorPipelineStage()
        {
            var applicationBindingMock          = new Mock <IApplicationBinding <string> >(MockBehavior.Strict);
            var visitableApplicationBindingMock = applicationBindingMock.As <IVisitable <IApplicationBindingVisitor> >();
            var visitorPipeline = new VisitorPipeline <string>(applicationBindingMock.Object);

            visitableApplicationBindingMock
            .Setup(m => m.Accept(It.IsAny <IApplicationBindingVisitor>()))
            // ProcessingStage is used for each visitor called in sequence
            .Callback(() => visitorPipeline.Stage.Should().BeOfType <ProcessingStage <string> >())
            .Returns(It.IsAny <IApplicationBindingVisitor>());

            var sut = new PreprocessingStage <string>(visitorPipeline);

            sut.Accept(new Mock <IApplicationBindingVisitor>().Object);

            // PreprocessingStage is restored once all the visitors have done their processing
            visitorPipeline.Stage.Should().BeSameAs(sut);
        }