public async Task Kick() { var interval = TimeSpan.FromSeconds(1); var stopwatch = Stopwatch.StartNew(); var watchdog = new WatchdogTimer(() => stopwatch.Stop()) { Interval = interval }; const int count = 4; const int delay = 500; for (var i = 0; i < count; i++) { watchdog.Kick(); // kick start. await Task.Delay(delay); } Assert.True(watchdog.IsEnabled); // ReSharper disable once ArrangeRedundantParentheses Assert.True(stopwatch.ElapsedMilliseconds <= (count * delay) + 200); // ReSharper disable once ArrangeRedundantParentheses Assert.True(stopwatch.ElapsedMilliseconds >= (count * delay) - 200); }
public async Task Timeout() { var interval = TimeSpan.FromMilliseconds(500); var stopwatch = Stopwatch.StartNew(); // ReSharper disable once UnusedVariable var watchdog = new WatchdogTimer(() => stopwatch.Stop()) { Interval = interval }; watchdog.Kick(); // kick start. await Task.Delay(1000); Assert.True(stopwatch.ElapsedMilliseconds <= interval.TotalMilliseconds + 200); Assert.True(stopwatch.ElapsedMilliseconds >= interval.TotalMilliseconds - 200); }