Akka.Streams.Tests.Dsl.FlowExpandSpec.Expand_musst_backpressure_publisher_when_subscriber_is_slower C# (CSharp) Method

Expand_musst_backpressure_publisher_when_subscriber_is_slower() private method

        public void Expand_musst_backpressure_publisher_when_subscriber_is_slower()
        {
            var publisher = TestPublisher.CreateProbe<int>(this);
            var subscriber = TestSubscriber.CreateProbe<int>(this);

            // Simply repeat the last element as an extrapolation step
            Source.FromPublisher(publisher)
                .Expand(i => Enumerable.Repeat(i, 200).GetEnumerator())
                .To(Sink.FromSubscriber(subscriber))
                .Run(Materializer);

            publisher.SendNext(1);
            subscriber.RequestNext(1);
            subscriber.RequestNext(1);

            var pending = publisher.Pending;
            // Deplete pending requests coming from input buffer
            while (pending > 0)
            {
                publisher.UnsafeSendNext(2);
                pending--;
            }

            // The above sends are absorbed in the input buffer, and will result in two one-sized batch requests
            pending += publisher.ExpectRequest();
            pending += publisher.ExpectRequest();
            while (pending > 0)
            {
                publisher.UnsafeSendNext(2);
                pending--;
            }

            publisher.ExpectNoMsg(TimeSpan.FromSeconds(1));

            subscriber.Request(2);
            subscriber.ExpectNext(2);
            subscriber.ExpectNext(2);

            //now production is resumed
            publisher.ExpectRequest();
        }