public void PrefixAndTail_must_handle_substream_cacellation()
{
this.AssertAllStagesStopped(() =>
{
var publisher = TestPublisher.CreateManualProbe<int>(this);
var subscriber = TestSubscriber.CreateManualProbe<Tuple<IImmutableList<int>, Source<int, NotUsed>>>(this);
Source.FromPublisher(publisher)
.PrefixAndTail(1)
.To(Sink.FromSubscriber(subscriber))
.Run(Materializer);
var upstream = publisher.ExpectSubscription();
var downstream = subscriber.ExpectSubscription();
downstream.Request(1000);
upstream.ExpectRequest();
upstream.SendNext(1);
var t = subscriber.ExpectNext();
t.Item1.Should().ContainSingle(i => i == 1);
var tail = t.Item2;
subscriber.ExpectComplete();
var substreamSubscriber = TestSubscriber.CreateManualProbe<int>(this);
tail.To(Sink.FromSubscriber(substreamSubscriber)).Run(Materializer);
substreamSubscriber.ExpectSubscription().Cancel();
upstream.ExpectCancellation();
}, Materializer);
}