using MoShiro.Probe; namespace MoShiro.Probe.Tests; public sealed class ProbeReconnectBackoffTests { [Fact] public void Next_UsesRequestedEscalationThenCapsAtOneMinute() { var backoff = new ProbeReconnectBackoff(); TimeSpan[] expected = [ TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(4), TimeSpan.FromSeconds(8), TimeSpan.FromSeconds(16), TimeSpan.FromSeconds(32), TimeSpan.FromSeconds(32), TimeSpan.FromSeconds(32), TimeSpan.FromSeconds(32), TimeSpan.FromSeconds(32), TimeSpan.FromMinutes(1), TimeSpan.FromMinutes(1), ]; Assert.Equal(expected, expected.Select(_ => backoff.Next())); } [Fact] public void Reset_RestartsAtOneSecond() { var backoff = new ProbeReconnectBackoff(); _ = backoff.Next(); _ = backoff.Next(); backoff.Reset(); Assert.Equal(TimeSpan.FromSeconds(1), backoff.Next()); } }