public void Buffer_must_drop_head_elements_if_buffer_is_full_and_configured_so()
{
var publisher = TestPublisher.CreateProbe<int>(this);
var subscriber = TestSubscriber.CreateManualProbe<int>(this);
Source.FromPublisher(publisher)
.Buffer(100, OverflowStrategy.DropHead)
.To(Sink.FromSubscriber(subscriber))
.Run(Materializer);
var sub = subscriber.ExpectSubscription();
// Fill up buffer
Enumerable.Range(1, 200).ForEach(i => publisher.SendNext(i));
// The next request would be otherwise in race with the last onNext in the above loop
subscriber.ExpectNoMsg(TimeSpan.FromMilliseconds(500));
// drain
for (var i = 101; i <= 200; i++)
{
sub.Request(1);
subscriber.ExpectNext(i);
}
sub.Request(1);
subscriber.ExpectNoMsg(TimeSpan.FromSeconds(1));
publisher.SendNext(-1);
sub.Request(1);
subscriber.ExpectNext(-1);
sub.Cancel();
}