main
 1using System;
 2
 3namespace jive
 4{
 5  public static class Clock
 6  {
 7    private static Func<DateTime> time_provider;
 8
 9    static Clock()
10    {
11      reset();
12    }
13
14    public static Date today()
15    {
16      return time_provider();
17    }
18
19    public static DateTime now()
20    {
21      return time_provider();
22    }
23
24#if DEBUG
25    public static void change_time_provider_to(Func<DateTime> new_time_provider)
26    {
27      if (new_time_provider != null) time_provider = new_time_provider;
28    }
29#endif
30
31    public static void reset()
32    {
33      time_provider = () => DateTime.Now;
34    }
35  }
36}