27 lines
758 B
C#
27 lines
758 B
C#
using System;
|
|
using ReflectionMagic;
|
|
|
|
namespace UnitTests.Common.Utils
|
|
{
|
|
[System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage]
|
|
internal class TimeZoneInfoLocalMock : IDisposable
|
|
{
|
|
private readonly TimeZoneInfo localTimeZoneInfo;
|
|
|
|
private TimeZoneInfoLocalMock(TimeZoneInfo timeZoneInfo)
|
|
{
|
|
localTimeZoneInfo = TimeZoneInfo.Local;
|
|
SetLocalTimeZone(timeZoneInfo);
|
|
}
|
|
|
|
public static IDisposable Create(TimeZoneInfo mockTimeZoneInfo)
|
|
=> new TimeZoneInfoLocalMock(mockTimeZoneInfo);
|
|
|
|
public void Dispose()
|
|
=> SetLocalTimeZone(localTimeZoneInfo);
|
|
|
|
private static void SetLocalTimeZone(TimeZoneInfo timeZoneInfo)
|
|
=> typeof(TimeZoneInfo).AsDynamicType().s_cachedData._localTimeZone = timeZoneInfo;
|
|
}
|
|
}
|