@@ -17,31 +17,26 @@ public class TimeZoneInfoMockerTests
1717 [ MemberData ( nameof ( TimeZoneIdData ) ) ]
1818 public void TestLocalTimeZoneInfoMocker ( string timeZoneId )
1919 {
20- TimeZoneInfo localTimeZoneInfo = TimeZoneInfo . Local ;
20+ TimeZoneInfo actualLocalTimeZoneInfo = TimeZoneInfo . Local ;
2121 TimeZoneInfo mockTimeZoneInfo = TimeZoneInfo . FindSystemTimeZoneById ( timeZoneId ) ;
2222
23- TimeSpan mockedUtcOffset ;
24- TimeSpan actualLocalUtcOffset = localTimeZoneInfo . BaseUtcOffset ;
25-
26- if ( localTimeZoneInfo . StandardName == mockTimeZoneInfo . StandardName )
27- {
28- // same TZ as local machine, pass test
29- return ;
30- }
31-
23+ // compare against the expected zone rather than asserting it differs from the local zone,
24+ // so the test does not depend on the runner's time zone - e.g. a UTC runner and the London
25+ // sample zone have different names but the same base UTC offset
3226 using ( new LocalTimeZoneInfoMocker ( mockTimeZoneInfo ) )
3327 {
34- TimeZoneInfo currentTimeZoneInfo = TimeZoneInfo . Local ;
35-
36- mockedUtcOffset = currentTimeZoneInfo . BaseUtcOffset ;
28+ TimeZoneInfo mockedLocalTimeZoneInfo = TimeZoneInfo . Local ;
3729
38- Assert . Equal ( mockTimeZoneInfo . StandardName , currentTimeZoneInfo . StandardName ) ;
39- Assert . NotEqual ( currentTimeZoneInfo . BaseUtcOffset , actualLocalUtcOffset ) ;
30+ Assert . Equal ( mockTimeZoneInfo . Id , mockedLocalTimeZoneInfo . Id ) ;
31+ Assert . Equal ( mockTimeZoneInfo . StandardName , mockedLocalTimeZoneInfo . StandardName ) ;
32+ Assert . Equal ( mockTimeZoneInfo . BaseUtcOffset , mockedLocalTimeZoneInfo . BaseUtcOffset ) ;
4033 }
4134
42- // back to local machine's TZ
43- Assert . NotEqual ( localTimeZoneInfo . StandardName , mockTimeZoneInfo . StandardName ) ;
44- Assert . NotEqual ( localTimeZoneInfo . BaseUtcOffset , mockedUtcOffset ) ;
35+ // disposing the mocker should restore the local machine's time zone
36+ TimeZoneInfo restoredLocalTimeZoneInfo = TimeZoneInfo . Local ;
37+
38+ Assert . Equal ( actualLocalTimeZoneInfo . Id , restoredLocalTimeZoneInfo . Id ) ;
39+ Assert . Equal ( actualLocalTimeZoneInfo . BaseUtcOffset , restoredLocalTimeZoneInfo . BaseUtcOffset ) ;
4540 }
4641
4742 [ Fact ]
0 commit comments