public void Timed_Flow_must_measure_time_it_takes_between_elements_matching_a_predicate()
{
this.AssertAllStagesStopped(() =>
{
var probe = CreateTestProbe();
var flow =
Flow.Create<int>().Select(x => (long) x).TimedIntervalBetween(i => i%2 == 1, d => probe.Tell(d));
var c1 = TestSubscriber.CreateManualProbe<long>(this);
Source.From(Enumerable.Range(1, 3)).Via(flow).RunWith(Sink.FromSubscriber(c1), Materializer);
var s = c1.ExpectSubscription();
s.Request(100);
c1.ExpectNext(1L);
c1.ExpectNext(2L);
c1.ExpectNext(3L);
c1.ExpectComplete();
var duration = probe.ExpectMsg<TimeSpan>();
_helper.WriteLine($"Got duration (first): {duration}");
}, Materializer);
}