public void A_Broadcast_must_pass_along_early_cancellation()
{
this.AssertAllStagesStopped(() =>
{
var c1 = TestSubscriber.CreateManualProbe<int>(this);
var c2 = TestSubscriber.CreateManualProbe<int>(this);
var sink = Sink.FromGraph(GraphDsl.Create(b =>
{
var broadcast = b.Add(new Broadcast<int>(2));
b.From(broadcast.Out(0)).To(Sink.FromSubscriber(c1));
b.From(broadcast.Out(1)).To(Sink.FromSubscriber(c2));
return new SinkShape<int>(broadcast.In);
}));
var s = Source.AsSubscriber<int>().To(sink).Run(Materializer);
var up = TestPublisher.CreateManualProbe<int>(this);
var downSub1 = c1.ExpectSubscription();
var downSub2 = c2.ExpectSubscription();
downSub1.Cancel();
downSub2.Cancel();
up.Subscribe(s);
var upSub = up.ExpectSubscription();
upSub.ExpectCancellation();
}, Materializer);
}