public void PipelineContext_OnReadAllInputs_Overridable()
        {
            MockPipeline        pipeline = TestPipelines.CreateMockProcessor1Pipeline();
            MockPipelineContext context  = pipeline.Context;
            bool processorCalled         = false;

            context.OnReadAllInputsCalled = (inProc, inValues) =>
            {
                // Inject a '3' into the inputs for proc 1
                if (inProc == pipeline.Processors[1])
                {
                    processorCalled = true;
                    Assert.AreEqual(4, inValues[0], "Expected to see '4' as the pipeline input");
                    inValues[0] = 3;
                }
            };

            ProcessorResult procResult = pipeline.Execute(new object[] { 4 });

            Assert.IsNotNull(procResult.Output, "Expected output array");
            Assert.AreEqual(1, procResult.Output.Length, "Output size mismatch");
            Assert.AreEqual(3.ToString(), procResult.Output[0], "Pipeline did not use context we injected");

            Assert.IsTrue(processorCalled, "Our ReadAllInputs override was not called");
        }
        public void PipelineContext_ReadInput_Returns_WriteInput()
        {
            MockPipeline        pipeline = TestPipelines.CreateMockProcessor1Pipeline();
            MockPipelineContext context  = pipeline.Context;

            context.WriteInput(pipeline.Processors[1].InArguments[0], 7);
            object value = context.ReadInput(pipeline.Processors[1].InArguments[0]);

            Assert.AreEqual(7, value, "Expected processor 1 to have this input value after we wrote it");
        }
        public void PipelineContext_ReadInput_Returns_Result_After_Execution()
        {
            MockPipeline        pipeline = TestPipelines.CreateMockProcessor1Pipeline();
            MockPipelineContext context  = pipeline.Context;
            object value = context.ReadInput(pipeline.Processors[1].InArguments[0]);

            Assert.IsNull(value, "Expected null prior to execution");
            ProcessorResult result = pipeline.Execute(new object[] { 7 });

            value = context.ReadInput(pipeline.Processors[1].InArguments[0]);
            Assert.AreEqual(7, value, "Expected processor 1 to have this input value after execution");
        }