| File: TestServices\AdjustableFakeTimeProvider.cs | Web Access |
| Project: src\tests\Aspire.Hosting.Native.Core.Tests\Aspire.Hosting.Native.Core.Tests.csproj (Aspire.Hosting.Native.Core.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.Extensions.Time.Testing; namespace Aspire.Hosting.Native.Core.Tests.TestServices; /// <summary>Adjusts wall time independently of FakeTimeProvider's monotonic timers.</summary> internal sealed class AdjustableFakeTimeProvider : TimeProvider { private readonly FakeTimeProvider _clock = new(); public TimeSpan UtcOffset { get; set; } public Action<TimeSpan>? TimerCreated { get; set; } public void Advance(TimeSpan delta) => _clock.Advance(delta); public override DateTimeOffset GetUtcNow() => _clock.GetUtcNow() + UtcOffset; public override long GetTimestamp() => _clock.GetTimestamp(); public override long TimestampFrequency => _clock.TimestampFrequency; public override ITimer CreateTimer(TimerCallback callback, object? state, TimeSpan dueTime, TimeSpan period) { var timer = _clock.CreateTimer(callback, state, dueTime, period); TimerCreated?.Invoke(dueTime); return timer; } }