public void IdleTimeout_must_fail_if_time_between_elements_is_too_large()
{
this.AssertAllStagesStopped(() =>
{
var upstreamProbe = TestPublisher.CreateProbe<int>(this);
var downstreamProbe = this.CreateProbe<int>();
Source.FromPublisher<int>(upstreamProbe)
.IdleTimeout(TimeSpan.FromSeconds(1))
.RunWith(Sink.FromSubscriber(downstreamProbe), Materializer);
// Two seconds in overall, but won't timeout until time between elements is large enough
// (i.e. this works differently from completionTimeout)
for (var i = 1; i <= 4; i++)
{
upstreamProbe.SendNext(1);
downstreamProbe.RequestNext(1);
downstreamProbe.ExpectNoMsg(TimeSpan.FromMilliseconds(500)); // No timeout yet
}
var ex = downstreamProbe.ExpectError();
ex.Message.Should().Be($"No elements passed in the last {TimeSpan.FromSeconds(1)}.");
}, Materializer);
}