@@ -6,13 +6,13 @@ namespace Revo.Testing.Core
6
6
{
7
7
public static class FakeClock
8
8
{
9
- private static readonly AsyncLocal < FakeClockImpl > ClockLocal = new AsyncLocal < FakeClockImpl > ( ) ;
10
- private static readonly object SetupLock = new object ( ) ;
9
+ private static readonly AsyncLocal < FakeClockImpl > ClockLocal = new ( ) ;
10
+ private static readonly object SetupLock = new ( ) ;
11
11
12
12
public static DateTimeOffset Now
13
13
{
14
- get { return Clock . Now ; }
15
- set { Clock . Now = value ; }
14
+ get => Clock . Now ;
15
+ set => Clock . Now = value ;
16
16
}
17
17
18
18
private static FakeClockImpl Clock
@@ -30,21 +30,33 @@ private static FakeClockImpl Clock
30
30
31
31
public static void Setup ( )
32
32
{
33
+ Now = DateTimeOffset . Now ;
34
+
33
35
lock ( SetupLock )
34
36
{
35
37
if ( ! ( Revo . Core . Core . Clock . Current is FakeClockImpl ) )
36
38
{
37
39
Revo . Core . Core . Clock . SetClock ( ( ) => Clock ) ;
38
40
}
39
41
}
40
-
41
- Now = DateTimeOffset . Now ;
42
42
}
43
43
44
44
public class FakeClockImpl : IClock
45
45
{
46
- public DateTimeOffset Now { get ; set ; }
46
+ private DateTimeOffsetBoxed boxed = new ( DateTimeOffset . Now ) ;
47
+
48
+ public DateTimeOffset Now
49
+ {
50
+ get => boxed . Value ;
51
+ set => boxed = new DateTimeOffsetBoxed ( value ) ;
52
+ }
53
+
47
54
public DateTimeOffset UtcNow => Now . ToUniversalTime ( ) ;
48
55
}
56
+
57
+ private class DateTimeOffsetBoxed ( DateTimeOffset value )
58
+ {
59
+ public DateTimeOffset Value { get ; } = value ;
60
+ }
49
61
}
50
62
}
0 commit comments