Example #1
0
        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());
        }
Example #2
0
        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);
        }