public void A_Broadcast_must_broadcast_to_other_subscriber()
{
this.AssertAllStagesStopped(() =>
{
var c1 = TestSubscriber.CreateManualProbe<int>(this);
var c2 = TestSubscriber.CreateManualProbe<int>(this);
RunnableGraph.FromGraph(GraphDsl.Create (b =>
{
var broadcast = b.Add(new Broadcast<int>(2));
var source = Source.From(Enumerable.Range(1, 3));
b.From(source).To(broadcast.In);
b.From(broadcast.Out(0))
.Via(Flow.Create<int>().Buffer(16, OverflowStrategy.Backpressure))
.To(Sink.FromSubscriber(c1));
b.From(broadcast.Out(1))
.Via(Flow.Create<int>().Buffer(16, OverflowStrategy.Backpressure))
.To(Sink.FromSubscriber(c2));
return ClosedShape.Instance;
})).Run(Materializer);
var sub1 = c1.ExpectSubscription();
var sub2 = c2.ExpectSubscription();
sub1.Request(1);
sub2.Request(2);
c1.ExpectNext(1).ExpectNoMsg(TimeSpan.FromMilliseconds(100));
c2.ExpectNext(1, 2).ExpectNoMsg(TimeSpan.FromMilliseconds(100));
sub1.Request(3);
c1.ExpectNext(2, 3).ExpectComplete();
sub2.Request(3);
c2.ExpectNext(3).ExpectComplete();
}, Materializer);
}