public void FlowGraphs_when_turned_into_sources_should_be_reusable_multiple_times()
{
var probe = TestSubscriber.CreateManualProbe<int>(this);
var source =
Source.FromGraph(GraphDsl.Create(Source.From(Enumerable.Range(1, 5)),
(b, s) =>
{
var o = b.From(s.Outlet).Via(Flow.Create<int>().Select(x => x*2));
return new SourceShape<int>(o.Out);
}));
RunnableGraph.FromGraph(GraphDsl.Create(source, source, Keep.Both, (b, s1, s2) =>
{
var merge = b.Add(new Merge<int>(2));
b.From(s1.Outlet).To(merge.In(0));
b.From(merge.Out)
.To(Sink.FromSubscriber(probe).MapMaterializedValue(_ => Tuple.Create(NotUsed.Instance, NotUsed.Instance)));
b.From(s2.Outlet).Via(Flow.Create<int>().Select(x => x*10)).To(merge.In(1));
return ClosedShape.Instance;
})).Run(Materializer);
ValidateProbe(probe, 10, new[] {2, 4, 6, 8, 10, 20, 40, 60, 80, 100});
}