public void A_Flow_with_SelectAsyncUnordered_must_produce_task_elements_in_the_order_they_are_ready()
{
this.AssertAllStagesStopped(() =>
{
var c = TestSubscriber.CreateManualProbe<int>(this);
var latch = Enumerable.Range(0, 4).Select(_ => new TestLatch(1)).ToArray();
Source.From(Enumerable.Range(0, 4)).SelectAsyncUnordered(4, n => Task.Run(() =>
{
latch[n].Ready(TimeSpan.FromSeconds(5));
return n;
})).To(Sink.FromSubscriber(c)).Run(Materializer);
var sub = c.ExpectSubscription();
sub.Request(5);
latch[1].CountDown();
c.ExpectNext(1);
latch[3].CountDown();
c.ExpectNext(3);
latch[2].CountDown();
c.ExpectNext(2);
latch[0].CountDown();
c.ExpectNext(0);
c.ExpectComplete();
}, Materializer);
}