Akka.Streams.Tests.Dsl.FlowSelectAsyncUnorderedSpec.A_Flow_with_SelectAsyncUnordered_must_not_run_more_futures_than_requested_elements C# (CSharp) Метод

A_Flow_with_SelectAsyncUnordered_must_not_run_more_futures_than_requested_elements() приватный Метод

        public void A_Flow_with_SelectAsyncUnordered_must_not_run_more_futures_than_requested_elements()
        {
            var probe = CreateTestProbe();
            var c = TestSubscriber.CreateManualProbe<int>(this);
            Source.From(Enumerable.Range(1, 20))
                .SelectAsyncUnordered(4, n => Task.Run(() =>
                {
                    probe.Ref.Tell(n);
                    return n;
                }))
                .To(Sink.FromSubscriber(c)).Run(Materializer);
            var sub = c.ExpectSubscription();
            c.ExpectNoMsg(TimeSpan.FromMilliseconds(200));
            probe.ExpectNoMsg(TimeSpan.Zero);
            sub.Request(1);
            var got = new List<int> {c.ExpectNext()};
            probe.ExpectMsgAllOf(1, 2, 3, 4, 5);
            probe.ExpectNoMsg(TimeSpan.FromMilliseconds(500));
            sub.Request(25);
            probe.ExpectMsgAllOf(Enumerable.Range(6, 15).ToArray());
            c.Within(TimeSpan.FromSeconds(3), () =>
            {
                Enumerable.Range(2, 19).ForEach(_ => got.Add(c.ExpectNext()));
                return NotUsed.Instance;
            });
            got.ShouldAllBeEquivalentTo(Enumerable.Range(1, 20));
            c.ExpectComplete();
        }