Akka.Streams.Tests.Extra.FlowTimedSpec.Timed_Source_must_measure_time_it_takes_between_elements_matching_a_predicate C# (CSharp) Метод

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

        public void Timed_Source_must_measure_time_it_takes_between_elements_matching_a_predicate()
        {
            var testActor = CreateTestProbe();
            const int measureBetweenEvery = 5;

            Action<TimeSpan> printInfo = interval =>
            {
                testActor.Tell(interval);
                _helper.WriteLine($"Measured interval between {measureBetweenEvery} elements was {interval}");
            };

            var n = 20;
            var testRuns = new[] {1, 2};
            Func<Script<int, int>> script =
                () =>
                    Script.Create(
                        Enumerable.Range(1, n)
                            .Select(x => new Tuple<ICollection<int>, ICollection<int>>(new[] {x}, new[] {x})).ToArray());
            testRuns.ForEach(
                _ =>
                    RunScript(script(), Materializer.Settings,
                        flow =>flow.Select(x => x)
                                .TimedIntervalBetween(i => i%measureBetweenEvery == 0, printInfo)));

            var expectedNrOfOnIntervalCalls = testRuns.Length*((n/measureBetweenEvery) - 1); // first time has no value to compare to, so skips calling onInterval
            Enumerable.Range(1,expectedNrOfOnIntervalCalls).ForEach(_=> testActor.ExpectMsg<TimeSpan>());
        }