public void FlowGraphs_when_used_together_should_materialize_properly()
{
var probe = TestSubscriber.CreateManualProbe<int>(this);
var inSource = Source.AsSubscriber<int>();
var outSink = Sink.AsPublisher<int>(false);
var flow = Flow.FromGraph(GraphDsl.Create(PartialGraph(), (b, partial) =>
{
var o = b.From(partial.Outlet).Via(Flow.Create<string>().Select(int.Parse));
return new FlowShape<int, int>(partial.Inlet, o.Out);
}));
var source =
Source.FromGraph(GraphDsl.Create(Flow.Create<int>().Select(x => x.ToString()), inSource, Keep.Right,
(b, f, src) =>
{
b.From(src.Outlet).To(f.Inlet);
return new SourceShape<string>(f.Outlet);
}));
var sink = Sink.FromGraph(GraphDsl.Create(Flow.Create<string>().Select(int.Parse), outSink, Keep.Right,
(b, f, s) =>
{
b.From(f.Outlet).To(s.Inlet);
return new SinkShape<string>(f.Inlet);
}));
var t = RunnableGraph.FromGraph(GraphDsl.Create(source, flow, sink, (src, _, snk) => Tuple.Create(src, snk),
(b, src, f, snk) =>
{
b.From(src.Outlet).Via(Flow.Create<string>().Select(int.Parse)).To(f.Inlet);
b.From(f.Outlet).Via(Flow.Create<int>().Select(x => x.ToString())).To(snk.Inlet);
return ClosedShape.Instance;
})).Run(Materializer);
var subscriber = t.Item1;
var publisher = t.Item2;
Source1.RunWith(Sink.AsPublisher<int>(false), Materializer).Subscribe(subscriber);
publisher.Subscribe(probe);
ValidateProbe(probe, StandardRequests, StandardResult);
}