public void Build_Test()
        {
            //Arrange
            var sut = new MessageContextProcessorBuilder();

            sut.GetBuilderState().MessageProcessor = Substitute.For <IMessageProcessor>();
            sut.GetBuilderState().FailurePolicy    = Substitute.For <IFailurePolicy>();

            //Act
            var result = sut.Build();

            //Assert
            result.Should().NotBeNull();
            result.Should().BeOfType <MessageContextProcessor>();
        }
        public void WithFailurePolicy_Test()
        {
            //Arrange
            var sut = new MessageContextProcessorBuilder();

            //Act
            var result = sut.WithFailurePolicy(new TestFailurePolicy());

            //Assert
            result.Should().NotBeNull();
            var state = (result as MessageContextProcessorBuilder)?.GetBuilderState();

            state.Should().NotBeNull();
            // ReSharper disable once PossibleNullReferenceException
            state.FailurePolicy.Should().BeOfType <TestFailurePolicy>();
        }
        public void WithBackOffDelayStrategy_Test()
        {
            //Arrange
            var sut = new MessageContextProcessorBuilder();

            //Act
            var result = sut.WithBackOffDelayStrategy <TestBackOffDelayStrategy>();

            //Assert
            result.Should().NotBeNull();
            var state = (result as MessageContextProcessorBuilder)?.GetBuilderState();

            state.Should().NotBeNull();
            // ReSharper disable once PossibleNullReferenceException
            state.BackOffDelayStrategy.Should().BeOfType <TestBackOffDelayStrategy>();
        }