Akka.Streams.Tests.Dsl.FlowJoinSpec.A_Flow_using_Join_must_allow_for_zip_cycle C# (CSharp) Method

A_Flow_using_Join_must_allow_for_zip_cycle() private method

private A_Flow_using_Join_must_allow_for_zip_cycle ( ) : void
return void
        public void A_Flow_using_Join_must_allow_for_zip_cycle()
        {
            this.AssertAllStagesStopped(() =>
            {
                var source = Source.From(new[] {"traveler1", "traveler2"})
                    .MapMaterializedValue<TestSubscriber.Probe<Tuple<string, string>>>(_ => null);

                var flow = Flow.FromGraph(GraphDsl.Create(this.SinkProbe<Tuple<string,string>>(), (b, sink) =>
                {
                    var zip = b.Add(new Zip<string, string>());
                    var broadcast = b.Add(new Broadcast<Tuple<string, string>>(2));

                    b.From(source).To(zip.In0);
                    b.From(zip.Out).To(broadcast.In);
                    b.From(broadcast.Out(0)).To(sink);
                    return new FlowShape<string, Tuple<string, string>>(zip.In1, broadcast.Out(1));
                }));

                var feedback = Flow.FromGraph(GraphDsl.Create(Source.Single("ignition"), (b, ignition) =>
                {
                    var f = b.Add(Flow.Create<Tuple<string, string>>().Select(t => t.Item1));
                    var merge = b.Add(new Merge<string>(2));

                    b.From(ignition).To(merge.In(0));
                    b.From(f).To(merge.In(1));

                    return new FlowShape<Tuple<string, string>, string>(f.Inlet, merge.Out);
                }));

                var probe = flow.Join(feedback).Run(Materializer);
                probe.RequestNext(Tuple.Create("traveler1", "ignition"));
                probe.RequestNext(Tuple.Create("traveler2", "traveler1"));
            }, Materializer);
        }