private static Lightflow <TransitObject, Ctx> CreateFlow() { var builder = new LightflowBuilder <TransitObject, Ctx>(); return(builder .Use(new LightflowBufferStep <TransitObject>(10)) .Use <TransitObject>(async(context, input, next) => { input.Text = Guid.NewGuid().ToString(); await Task.Delay(1); //.ConfigureAwait(false); await next(input); //.ConfigureAwait(false); }) .Use <TransitObject>(async(context, input, next) => { input.Text = Guid.NewGuid().ToString(); await Task.Delay(1); //.ConfigureAwait(false); await next(input); //.ConfigureAwait(false); }) .Use(new LightflowBufferStep <TransitObject>(10)) .Use <TransitObject>(async(context, input, next) => { input.Text = Guid.NewGuid().ToString(); context.Output = "teste"; await Task.Delay(1); //.ConfigureAwait(false); Console.WriteLine("Number: {0}", input.Number); await next(input); //.ConfigureAwait(false); }) .Build()); }
public async Task HandlerTest() { // Arrange const int flowInput = 5; var builder = new LightflowBuilder <int, OutputContext <int> >(); var flow = builder .Use <int>((context, input, next) => next(input * 2)) .Use <int>((context, input, next) => next(input * 2)) .Use(new FakeStep()) .Use <int>((context, input, next) => { context.Output = input; return(Task.CompletedTask); //TODO: An overload with a sync signature }) .Build(); // Act var result = await flow.Execute(flowInput); // Assert Assert.AreEqual(40, result.Output); }