Akka.Streams.Tests.Dsl.FlowGroupedWithinSpec.A_GroupedWithin_must_group_elements_within_the_duration C# (CSharp) Method

A_GroupedWithin_must_group_elements_within_the_duration() private method

        public void A_GroupedWithin_must_group_elements_within_the_duration()
        {
            this.AssertAllStagesStopped(() =>
            {
                var input = new Iterator<int>(Enumerable.Range(1, 10000));
                var p = TestPublisher.CreateManualProbe<int>(this);
                var c = TestSubscriber.CreateManualProbe<IEnumerable<int>>(this);

                Source.FromPublisher(p)
                    .GroupedWithin(1000, TimeSpan.FromSeconds(1))
                    .To(Sink.FromSubscriber(c))
                    .Run(Materializer);

                var pSub = p.ExpectSubscription();
                var cSub = c.ExpectSubscription();

                cSub.Request(100);

                var demand1 = (int)pSub.ExpectRequest();
                for (var i = 1; i <= demand1; i++)
                    pSub.SendNext(input.Next());

                var demand2 = (int)pSub.ExpectRequest();
                for (var i = 1; i <= demand2; i++)
                    pSub.SendNext(input.Next());

                var demand3 = (int)pSub.ExpectRequest();
                c.ExpectNext().ShouldAllBeEquivalentTo(Enumerable.Range(1, demand1 + demand2));
                for (var i = 1; i <= demand3; i++)
                    pSub.SendNext(input.Next());

                c.ExpectNoMsg(TimeSpan.FromMilliseconds(300));
                c.ExpectNext()
                    .ShouldAllBeEquivalentTo(Enumerable.Range(demand1 + demand2 + 1, demand3));
                c.ExpectNoMsg(TimeSpan.FromMilliseconds(300));
                pSub.ExpectRequest();

                var last = input.Next();
                pSub.SendNext(last);
                pSub.SendComplete();

                c.ExpectNext().Should().HaveCount(1).And.HaveElementAt(0, last);
                c.ExpectComplete();
                c.ExpectNoMsg(TimeSpan.FromMilliseconds(200));

            }, Materializer);
        }