public void Input_data_is_not_provided_when_no_output_is_available(IOperation op, FakeInputOperation<object> inputOperation)
        {
            var sut = OperationContext.Create(op);

            sut.ProvideInputs(inputOperation);

            Assert.False(inputOperation.InputWasProvided);
        }
Exemple #2
0
        public void The_outer_operation_is_returned_when_providing_input(FakeInputOperation <object> operation, object input)
        {
            var outerOperation = new FakeOperationBehavior().AttachTo(operation);

            var result = outerOperation.ProvideInput(input);

            Assert.Same(outerOperation, result);
        }
Exemple #3
0
        public void Inputs_Are_provided_to_the_innermost_operation(FakeInputOperation <object> operation, object input)
        {
            var outerOperation = new FakeOperationBehavior().AttachTo(operation);

            outerOperation.ProvideInput(input);

            Assert.Same(input, operation.ProvidedInput);
        }
        public void You_can_make_data_available_to_child_operations(object input)
        {
            var childInputOperation = new FakeInputOperation <object>();
            var sut = new FakeOperation(childInputOperation);

            sut.ExecuteAction = () => sut.PublicPipeInputToChildOperations(input);

            sut.Execute();

            Assert.Equal(input, childInputOperation.ProvidedInput);
        }
        public void Data_flows_between_child_operations_from_interface_input_and_output(object output)
        {
            var inputOperation = new FakeInputOperation <object>();
            var outpuOperation = new FakeOutputOperation <object> {
                OutputValue = output
            };
            var sut = new FakeOperation(outpuOperation, inputOperation);

            sut.Execute();

            Assert.Equal(outpuOperation.OutputValue, inputOperation.ProvidedInput);
        }
        public void Data_flows_from_output_to_input_operations(IOperation op, object output)
        {
            var sut = OperationContext.Create(op);
            var outputOperation = new FakeOutputOperation<object> { OutputValue = output };
            var inputOperation = new FakeInputOperation<object>();
            sut.RegisterOutputHandlers(outputOperation);

            outputOperation.Execute();
            sut.ProvideInputs(inputOperation);

            Assert.Equal(outputOperation.OutputValue, inputOperation.ProvidedInput);
        }
        public void Input_data_automatically_flows_to_child_operations_when_consumed_in_parent_operation(object output)
        {
            var outputOperation = new FakeOutputOperation <object> {
                OutputValue = output
            };
            var childInputOperation  = new FakeInputOperation <object>();
            var parentInputOperation = new FakeInputOperation <object>(childInputOperation);
            var sut = new FakeOperation(outputOperation, parentInputOperation);

            sut.Execute();

            Assert.Equal(outputOperation.OutputValue, childInputOperation.ProvidedInput);
        }
        public void Compensating_operations_have_input_values_supplied_from_the_original_operation(object input)
        {
            var operation = new FakeInputOperation<object> { ThrowOnExecute = new Exception() };
            var compensatingOperation = new FakeInputOperation<object>();
            var sut = new CompensatingOperationBehavior(compensatingOperation);
            operation.Input(input);
            var parentOperation = new FakeOperation(new FakeOutputOperation<object> { OutputValue = input }, sut.AttachTo(new FakeOperationBehavior().AttachTo(operation)));

            ExecuteIgnoringErrors(parentOperation.Execute);

            Assert.True(compensatingOperation.InputWasProvided);
            Assert.Equal(input, compensatingOperation.ProvidedInput);
        }
        public void Input_data_flow_is_cut_off_from_child_operations_if_not_consumed_by_parent_operation(object output)
        {
            var outputOperation = new FakeOutputOperation <object> {
                OutputValue = output
            };
            var childInputOperation  = new FakeInputOperation <object>();
            var parentInputOperation = new FakeOperation(childInputOperation);
            var sut = new FakeOperation(outputOperation, parentInputOperation);

            sut.Execute();

            Assert.Null(childInputOperation.ProvidedInput);
        }
        public void The_most_recently_outputted_instance_of_a_data_type_is_available_as_input(IOperation op, object output)
        {
            var sut = OperationContext.Create(op);
            var outputOperation1 = new FakeOutputOperation<object> { OutputValue = output };
            var outputOperation2 = new FakeOutputOperation<object> { OutputValue = output };
            var inputOperation = new FakeInputOperation<object>();
            sut.RegisterOutputHandlers(outputOperation1);
            sut.RegisterOutputHandlers(outputOperation2);

            outputOperation1.Execute();
            outputOperation2.Execute();
            sut.ProvideInputs(inputOperation);

            Assert.Equal(outputOperation2.OutputValue, inputOperation.ProvidedInput);
        }
        public void Data_flows_from_output_to_input_operations(IOperation op, object output)
        {
            var sut             = OperationContext.Create(op);
            var outputOperation = new FakeOutputOperation <object> {
                OutputValue = output
            };
            var inputOperation = new FakeInputOperation <object>();

            sut.RegisterOutputHandlers(outputOperation);

            outputOperation.Execute();
            sut.ProvideInputs(inputOperation);

            Assert.Equal(outputOperation.OutputValue, inputOperation.ProvidedInput);
        }
        public void Compensating_operations_have_input_values_supplied_from_the_original_operation(object input)
        {
            var operation = new FakeInputOperation <object> {
                ThrowOnExecute = new Exception()
            };
            var compensatingOperation = new FakeInputOperation <object>();
            var sut = new CompensatingOperationBehavior(compensatingOperation);

            operation.Input(input);
            var parentOperation = new FakeOperation(new FakeOutputOperation <object> {
                OutputValue = input
            }, sut.AttachTo(new FakeOperationBehavior().AttachTo(operation)));

            ExecuteIgnoringErrors(parentOperation.Execute);

            Assert.True(compensatingOperation.InputWasProvided);
            Assert.Equal(input, compensatingOperation.ProvidedInput);
        }
        public void The_most_recently_outputted_instance_of_a_data_type_is_available_as_input(IOperation op, object output)
        {
            var sut = OperationContext.Create(op);
            var outputOperation1 = new FakeOutputOperation <object> {
                OutputValue = output
            };
            var outputOperation2 = new FakeOutputOperation <object> {
                OutputValue = output
            };
            var inputOperation = new FakeInputOperation <object>();

            sut.RegisterOutputHandlers(outputOperation1);
            sut.RegisterOutputHandlers(outputOperation2);

            outputOperation1.Execute();
            outputOperation2.Execute();
            sut.ProvideInputs(inputOperation);

            Assert.Equal(outputOperation2.OutputValue, inputOperation.ProvidedInput);
        }
        public void Data_flows_from_the_most_recent_output_to_the_following_input_operation(IOperation op, object output)
        {
            var sut = OperationContext.Create(op);
            var outputOperation1 = new FakeOutputOperation <object> {
                OutputValue = output
            };
            var outputOperation2 = new FakeOutputOperation <object> {
                OutputValue = output
            };
            var inputOperation1 = new FakeInputOperation <object>();
            var inputOperation2 = new FakeInputOperation <object>();

            sut.RegisterOutputHandlers(outputOperation1);
            sut.RegisterOutputHandlers(outputOperation2);

            outputOperation1.Execute();
            sut.ProvideInputs(inputOperation1);
            outputOperation2.Execute();
            sut.ProvideInputs(inputOperation2);

            Assert.Equal(outputOperation1.OutputValue, inputOperation1.ProvidedInput);
            Assert.Equal(outputOperation2.OutputValue, inputOperation2.ProvidedInput);
        }
        public void Data_flows_from_the_most_recent_output_to_the_following_input_operation(IOperation op, object output)
        {
            var sut = OperationContext.Create(op);
            var outputOperation1 = new FakeOutputOperation<object> { OutputValue = output };
            var outputOperation2 = new FakeOutputOperation<object> { OutputValue = output };
            var inputOperation1 = new FakeInputOperation<object>();
            var inputOperation2 = new FakeInputOperation<object>();
            sut.RegisterOutputHandlers(outputOperation1);
            sut.RegisterOutputHandlers(outputOperation2);

            outputOperation1.Execute();
            sut.ProvideInputs(inputOperation1);
            outputOperation2.Execute();
            sut.ProvideInputs(inputOperation2);

            Assert.Equal(outputOperation1.OutputValue, inputOperation1.ProvidedInput);
            Assert.Equal(outputOperation2.OutputValue, inputOperation2.ProvidedInput);
        }
Exemple #16
0
 public void You_cannot_provide_input_for_which_there_is_no_input_attribute(FakeInputOperation <IOperation> operation, object input)
 {
     Assert.Throws <ArgumentException>(() => operation.ProvideInput(input));
 }
        public void Data_flows_from_output_to_nested_decorated_input_operations(IOperation op, object output, FakeInputOperation<object> inputOperation)
        {
            var sut = OperationContext.Create(op);
            var outputOperation = new FakeOutputOperation<object> { OutputValue = output };
            var decoratedInputOperation = new FakeOperationBehavior().AttachTo(new FakeOperationBehavior().AttachTo(inputOperation));
            sut.RegisterOutputHandlers(outputOperation);

            outputOperation.Execute();
            sut.ProvideInputs(decoratedInputOperation);

            Assert.Equal(outputOperation.OutputValue, inputOperation.ProvidedInput);
        }
Exemple #18
0
        public void You_can_provide_input_to_an_operation(FakeInputOperation <object> operation, object input)
        {
            operation.ProvideInput(input);

            Assert.Same(input, operation.ProvidedInput);
        }
        public void Input_data_is_not_provided_when_no_output_is_available(IOperation op, FakeInputOperation <object> inputOperation)
        {
            var sut = OperationContext.Create(op);

            sut.ProvideInputs(inputOperation);

            Assert.False(inputOperation.InputWasProvided);
        }
        public void Data_flows_from_output_to_nested_decorated_input_operations(IOperation op, object output, FakeInputOperation <object> inputOperation)
        {
            var sut             = OperationContext.Create(op);
            var outputOperation = new FakeOutputOperation <object> {
                OutputValue = output
            };
            var decoratedInputOperation = new FakeOperationBehavior().AttachTo(new FakeOperationBehavior().AttachTo(inputOperation));

            sut.RegisterOutputHandlers(outputOperation);

            outputOperation.Execute();
            sut.ProvideInputs(decoratedInputOperation);

            Assert.Equal(outputOperation.OutputValue, inputOperation.ProvidedInput);
        }