public void A_Flow_with_SelectAsync_must_not_run_more_futures_than_requested_parallelism()
{
var probe = CreateTestProbe();
var c = TestSubscriber.CreateManualProbe<int>(this);
Source.From(Enumerable.Range(1, 20))
.SelectAsync(8, n => Task.Run(() =>
{
probe.Ref.Tell(n);
return n;
}))
.RunWith(Sink.FromSubscriber(c), Materializer);
var sub = c.ExpectSubscription();
probe.ExpectNoMsg(TimeSpan.FromMilliseconds(500));
sub.Request(1);
probe.ReceiveN(9).ShouldAllBeEquivalentTo(Enumerable.Range(1, 9));
probe.ExpectNoMsg(TimeSpan.FromMilliseconds(500));
sub.Request(2);
probe.ReceiveN(2).ShouldAllBeEquivalentTo(Enumerable.Range(10, 2));
probe.ExpectNoMsg(TimeSpan.FromMilliseconds(500));
sub.Request(10);
probe.ReceiveN(9).ShouldAllBeEquivalentTo(Enumerable.Range(12, 9));
probe.ExpectNoMsg(TimeSpan.FromMilliseconds(200));
Enumerable.Range(1, 13).ForEach(n => c.ExpectNext(n));
c.ExpectNoMsg(TimeSpan.FromMilliseconds(200));
}