public void Pipeline_Executes_With_No_Bindings_To_Pipeline() { MockProcessor1 processor1 = new MockProcessor1(); MockProcessorEchoString processor2 = new MockProcessorEchoString(); MockPipeline pipeline = new MockPipeline( new Processor[] { processor1, processor2 }, Enumerable.Empty<ProcessorArgument>(), Enumerable.Empty<ProcessorArgument>()); pipeline.BindArguments(processor1.OutArguments[0], processor2.InArguments[0]); pipeline.Initialize(); ProcessorResult result = pipeline.Execute(new object[0]); Assert.IsNotNull(result, "Expected non-null ProcessorResult"); Assert.IsNotNull(result.Output, "Expected non-null output from unbound pipeline"); Assert.AreEqual(0, result.Output.Length, "Expected empty array from unbound pipeline"); // Verify processor1 pushed default(int) through to processor2 object value = pipeline.Context.ReadInput(processor2.InArguments[0]); Assert.IsNotNull(value); Assert.AreEqual(default(int).ToString(), value, "Expected default(int) to be passed from processor1 to processor2"); }
public void Pipeline_Bind_OnBinding_OnBind_OnBound_Callbacks() { MockProcessor1 processor1 = new MockProcessor1(); MockProcessorEchoString processor2 = new MockProcessorEchoString(); MockPipeline pipeline = new MockPipeline( new Processor[] { processor1, processor2 }, Enumerable.Empty<ProcessorArgument>(), Enumerable.Empty<ProcessorArgument>()); BindArgumentsEventArgs bindingEventArgs = null; BindArgumentsEventArgs boundEventArgs = null; ProcessorArgument inArgFromBind = null; ProcessorArgument outArgFromBind = null; pipeline.OnBindArgumentsCalled = (outArg, inArg) => { inArgFromBind = inArg; outArgFromBind = outArg; }; pipeline.BindingArguments = (s, a) => { bindingEventArgs = a as BindArgumentsEventArgs; }; pipeline.BoundArguments = (s, a) => { boundEventArgs = a as BindArgumentsEventArgs; }; pipeline.BindArguments(processor1.OutArguments[0], processor2.InArguments[0]); Assert.IsNotNull(bindingEventArgs, "Did not receive BindingArguments callback"); Assert.AreSame(processor1.OutArguments[0], bindingEventArgs.OutArgument, "Did not receive correct outArg in BindingArgument callback"); Assert.AreSame(processor2.InArguments[0], bindingEventArgs.InArgument, "Did not receive correct inArg in BindingArgument callback"); Assert.IsNotNull(boundEventArgs, "Did not receive BoundArguments callback"); Assert.AreSame(processor1.OutArguments[0], boundEventArgs.OutArgument, "Did not receive correct outArg in BoundArgument callback"); Assert.AreSame(processor2.InArguments[0], boundEventArgs.InArgument, "Did not receive correct inArg in BoundArgument callback"); Assert.AreSame(processor1.OutArguments[0], outArgFromBind, "Did not receive correct outArg in OnBind virtual"); Assert.AreSame(processor2.InArguments[0], inArgFromBind, "Did not receive correct inArg in OnBind virtual"); }