using System; using ReflectionMagic; namespace AMWD.Common.Tests.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; } }