public void Providing_inputs_does_not_set_input_when_input_is_missing(IOperation op)
        {
            var sut            = OperationContext.Create(op);
            var inputOperation = new TestInputOperation();

            sut.ProvideInputs(inputOperation);

            Assert.Null(inputOperation.Input);
        }
        public void Providing_inputs_sets_input_properties(IOperation op, object input)
        {
            var sut = OperationContext.Create(op);

            sut.AddData(input);
            var inputOperation = new TestInputOperation();

            sut.ProvideInputs(inputOperation);

            Assert.Equal(input, inputOperation.Input);
        }
        public void Providing_inputs_to_a_decorated_operation_sets_input_properties(IOperation op, object input)
        {
            var sut = OperationContext.Create(op);

            sut.AddData(input);
            var innerOperation = new TestInputOperation();
            var inputOperation = new FakeOperationBehavior().AttachTo(innerOperation);

            sut.ProvideInputs(inputOperation);

            Assert.Equal(input, innerOperation.Input);
        }
        public void Inputs_can_be_piped_to_child_operations(object input)
        {
            var innerInputOperation = new TestInputOperation();
            var inputOperation      = new TestPipedInputOperation(innerInputOperation)
            {
                Input = input
            };
            var op  = new FakeOperation(inputOperation);
            var sut = OperationContext.Create(op);

            sut.AddData(input);

            op.Execute();

            Assert.Same(input, innerInputOperation.Input);
        }