public void A_Delay_must_emit_early_when_buffer_is_full_and_in_EmitEarly_mode()
{
this.AssertAllStagesStopped(() =>
{
var c = TestSubscriber.CreateManualProbe<int>(this);
var p = TestPublisher.CreateManualProbe<int>(this);
Source.FromPublisher(p)
.Delay(TimeSpan.FromSeconds(10), DelayOverflowStrategy.EmitEarly)
.WithAttributes(Attributes.CreateInputBuffer(16, 16))
.To(Sink.FromSubscriber(c))
.Run(Materializer);
var cSub = c.ExpectSubscription();
var pSub = p.ExpectSubscription();
cSub.Request(20);
Enumerable.Range(1, 16).ForEach(i => pSub.SendNext(i));
c.ExpectNoMsg(TimeSpan.FromMilliseconds(300));
pSub.SendNext(17);
c.ExpectNext(1, TimeSpan.FromMilliseconds(100));
// fail will terminate despite of non empty internal buffer
pSub.SendError(new SystemException());
}, Materializer);
}
}