Skip to content

Instantly share code, notes, and snippets.

@mscottreed
Last active October 10, 2015 00:38
Show Gist options
  • Save mscottreed/ad1994367d5fc7688194 to your computer and use it in GitHub Desktop.
Save mscottreed/ad1994367d5fc7688194 to your computer and use it in GitHub Desktop.
DateTimeProvider and friends
public abstract class DateTimeProvider
{
public static DateTimeProvider Current = new DefaultDateTimeProvider();
public abstract DateTime UtcNow { get; }
}
public class DefaultDateTimeProvider : DateTimeProvider
{
public override DateTime UtcNow
{
get { return DateTime.UtcNow; }
}
}
public class MockDateTimeContext : IDisposable
{
public MockDateTimeContext(DateTime dateTime)
{
DateTimeProvider.Current = new MockDateTimeProvider(dateTime);
}
public void Dispose()
{
DateTimeProvider.Current = new DefaultDateTimeProvider();
}
}
public class MockDateTimeProvider : DateTimeProvider
{
private readonly DateTime dateTime;
public MockDateTimeProvider(DateTime dateTime)
{
this.dateTime = dateTime;
}
public override DateTime UtcNow
{
get { return dateTime.ToUniversalTime(); }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment