Akka.Streams.Tests.Dsl.FlowSelectAsyncUnorderedSpec.A_Flow_with_SelectAsyncUnordered_must_produce_task_elements_in_the_order_they_are_ready C# (CSharp) Method

A_Flow_with_SelectAsyncUnordered_must_produce_task_elements_in_the_order_they_are_ready() private method

        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);
            
        }