public void A_Flow_using_Join_must_allow_for_interleave_cycle() { this.AssertAllStagesStopped(() => { var source = Source.Single("lonely traveler").MapMaterializedValue(_ => Task.FromResult("")); var flow = Flow.FromGraph(GraphDsl.Create(Sink.First <string>(), (b, sink) => { var interleave = b.Add(Interleave.Create <string>(2, 1)); var broadcast = b.Add(new Broadcast <string>(2, true)); b.From(source).To(interleave.In(0)); b.From(interleave.Out).To(broadcast.In); b.From(broadcast.Out(0)).To(sink); return(new FlowShape <string, string>(interleave.In(1), broadcast.Out(1))); })); var t = flow.Join(Flow.Create <string>()).Run(Materializer); t.Wait(TimeSpan.FromSeconds(3)).Should().BeTrue(); t.Result.Should().Be("lonely traveler"); }, Materializer); }