public void QueueSource_should_buffer_when_needed()
{
var s = this.CreateManualProbe<int>();
var queue =
Source.Queue<int>(100, OverflowStrategy.DropHead)
.To(Sink.FromSubscriber(s))
.Run(_materializer);
var sub = s.ExpectSubscription();
for (var i = 1; i <= 20; i++) AssertSuccess(queue.OfferAsync(i));
sub.Request(10);
for (var i = 1; i <= 10; i++) AssertSuccess(queue.OfferAsync(i));
sub.Request(10);
for (var i = 11; i <= 20; i++) AssertSuccess(queue.OfferAsync(i));
for (var i = 200; i <= 399; i++) AssertSuccess(queue.OfferAsync(i));
sub.Request(100);
for (var i = 300; i <= 399; i++) AssertSuccess(queue.OfferAsync(i));
sub.Cancel();
}