public void A_PublisherSink_must_be_unique_when_created_twice()
{
this.AssertAllStagesStopped(() =>
{
var t =
RunnableGraph.FromGraph(
GraphDsl.Create(Sink.AsPublisher<int>(false),
Sink.AsPublisher<int>(false), Keep.Both,
(b, p1, p2) =>
{
var broadcast = b.Add(new Broadcast<int>(2));
var source =
Source.From(Enumerable.Range(0, 6))
.MapMaterializedValue<Tuple<IPublisher<int>, IPublisher<int>>>(_ => null);
b.From(source).To(broadcast.In);
b.From(broadcast.Out(0)).Via(Flow.Create<int>().Select(i => i * 2)).To(p1.Inlet);
b.From(broadcast.Out(1)).To(p2.Inlet);
return ClosedShape.Instance;
})).Run(Materializer);
var pub1 = t.Item1;
var pub2 = t.Item2;
var f1 = Source.FromPublisher(pub1).Select(x => x).RunAggregate(0, (sum, i) => sum + i, Materializer);
var f2 = Source.FromPublisher(pub2).Select(x => x).RunAggregate(0, (sum, i) => sum + i, Materializer);
f1.Wait(TimeSpan.FromSeconds(3)).Should().BeTrue();
f2.Wait(TimeSpan.FromSeconds(3)).Should().BeTrue();
f1.Result.Should().Be(30);
f2.Result.Should().Be(15);
}, Materializer);
}