public void A_GroupedWithin_must_buffer_groups_until_requested_from_downstream()
{
var input = new Iterator<int>(Enumerable.Range(1, 10000));
var p = TestPublisher.CreateManualProbe<int>(this);
var c = TestSubscriber.CreateManualProbe<IEnumerable<int>>(this);
Source.FromPublisher(p)
.GroupedWithin(1000, TimeSpan.FromSeconds(1))
.To(Sink.FromSubscriber(c))
.Run(Materializer);
var pSub = p.ExpectSubscription();
var cSub = c.ExpectSubscription();
cSub.Request(1);
var demand1 = (int)pSub.ExpectRequest();
for (var i = 1; i <= demand1; i++)
pSub.SendNext(input.Next());
c.ExpectNext().ShouldAllBeEquivalentTo(Enumerable.Range(1, demand1));
var demand2 = (int)pSub.ExpectRequest();
for (var i = 1; i <= demand2; i++)
pSub.SendNext(input.Next());
c.ExpectNoMsg(TimeSpan.FromMilliseconds(300));
cSub.Request(1);
c.ExpectNext().ShouldAllBeEquivalentTo(Enumerable.Range(demand1 + 1, demand2));
pSub.SendComplete();
c.ExpectComplete();
c.ExpectNoMsg(TimeSpan.FromMilliseconds(100));
}