SystemClock
Time related delegates used to improve testability of the code
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Polly.Utilities
{
public static class SystemClock
{
public static Action<TimeSpan> Sleep = delegate(TimeSpan timespan) {
new ManualResetEvent(false).WaitOne(timespan);
};
public static Func<TimeSpan, CancellationToken, Task> SleepAsync = Task.Delay;
public static Func<DateTime> UtcNow = () => DateTime.UtcNow;
public static void Reset()
{
Sleep = delegate(TimeSpan timeSpan) {
new ManualResetEvent(false).WaitOne(timeSpan);
};
SleepAsync = Task.Delay;
UtcNow = (() => DateTime.UtcNow);
}
}
}