public void TestCallsIntermediateTransformersWhenPushing() { SourceModel sourceModel = new SourceModel(); IntermediateModel intermediateModel = new IntermediateModel(); DestinationModel destinationModel = new DestinationModel(); Mock <ITransformer <SourceModel, IntermediateModel> > firstTransformerMock = new Mock <ITransformer <SourceModel, IntermediateModel> >(); Mock <ITransformer <IntermediateModel, DestinationModel> > secondTransformerMock = new Mock <ITransformer <IntermediateModel, DestinationModel> >(); Mock <ITransformer <DestinationModel, IntermediateModel> > thirdTransformerMock = new Mock <ITransformer <DestinationModel, IntermediateModel> >(); Mock <ITransformer <IntermediateModel, SourceModel> > fourthTransformerMock = new Mock <ITransformer <IntermediateModel, SourceModel> >(); firstTransformerMock.Setup(_ => _.Transform(sourceModel)).Returns(intermediateModel).Verifiable(); secondTransformerMock.Setup(_ => _.Transform(intermediateModel)).Returns(destinationModel).Verifiable(); thirdTransformerMock.Setup(_ => _.Transform(destinationModel)).Returns(intermediateModel).Verifiable(); fourthTransformerMock.Setup(_ => _.Transform(intermediateModel)).Returns(sourceModel).Verifiable(); TransformerPipeline <SourceModel, IntermediateModel, DestinationModel> transformer = new TransformerPipeline <SourceModel, IntermediateModel, DestinationModel>( firstTransformerMock.Object, secondTransformerMock.Object ); ITransformer <SourceModel, SourceModel> newTransformer = transformer .PipePush(thirdTransformerMock.Object) .PipePush(fourthTransformerMock.Object); newTransformer.Transform(sourceModel); firstTransformerMock.Verify(_ => _.Transform(sourceModel), Times.Once); secondTransformerMock.Verify(_ => _.Transform(intermediateModel), Times.Once); thirdTransformerMock.Verify(_ => _.Transform(destinationModel), Times.Once); fourthTransformerMock.Verify(_ => _.Transform(intermediateModel), Times.Once); }
public void TestDisposesAllTransformersWhenPushing() { Mock <IDisposableTransformer <SourceModel, IntermediateModel> > firstTransformerMock = new Mock <IDisposableTransformer <SourceModel, IntermediateModel> >(); Mock <IDisposableTransformer <IntermediateModel, DestinationModel> > secondTransformerMock = new Mock <IDisposableTransformer <IntermediateModel, DestinationModel> >(); Mock <IDisposableTransformer <DestinationModel, IntermediateModel> > thirdTransformerMock = new Mock <IDisposableTransformer <DestinationModel, IntermediateModel> >(); Mock <IDisposableTransformer <IntermediateModel, SourceModel> > fourthTransformerMock = new Mock <IDisposableTransformer <IntermediateModel, SourceModel> >(); TransformerPipeline <SourceModel, IntermediateModel, DestinationModel> transformer = new TransformerPipeline <SourceModel, IntermediateModel, DestinationModel>( firstTransformerMock.Object, secondTransformerMock.Object ); TransformerPipeline <SourceModel, IntermediateModel, SourceModel> newTransformer = transformer .PipePush(thirdTransformerMock.Object) .PipePush(fourthTransformerMock.Object); newTransformer.Dispose(); firstTransformerMock.Verify(_ => _.Dispose(), Times.Once); secondTransformerMock.Verify(_ => _.Dispose(), Times.Once); thirdTransformerMock.Verify(_ => _.Dispose(), Times.Once); fourthTransformerMock.Verify(_ => _.Dispose(), Times.Once); }