Skip to content

Commit

Permalink
Using TimeProvider for the Awaiter
Browse files Browse the repository at this point in the history
  • Loading branch information
ladeak committed Oct 5, 2023
1 parent 37427d7 commit d47f8a9
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 6 deletions.
14 changes: 13 additions & 1 deletion src/CHttp/Abstractions/Awaiter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,17 @@

internal sealed class Awaiter : IAwaiter
{
public Task WaitAsync() => Task.Delay(50);
private readonly TimeProvider _timeProvider;

public Awaiter()
{
_timeProvider = TimeProvider.System;
}

public Awaiter(TimeProvider timeProvider)
{
_timeProvider = timeProvider ?? TimeProvider.System;
}

public Task WaitAsync() => Task.Delay(TimeSpan.FromMilliseconds(50), _timeProvider);
}
19 changes: 19 additions & 0 deletions tests/CHttp.Tests/AwaiterTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using CHttp.Abstractions;
using Microsoft.Extensions.Time.Testing;

namespace CHttp.Tests;

public class AwaiterTests
{
[Fact]
public async Task WaitAsync_Waits50Ms()
{
var timeProvider = new FakeTimeProvider();
var sut = new Awaiter(timeProvider);
var waiting = sut.WaitAsync();
timeProvider.Advance(TimeSpan.FromMilliseconds(49));
Assert.False(waiting.IsCompleted);
timeProvider.Advance(TimeSpan.FromMilliseconds(1));
await waiting.WaitAsync(TimeSpan.FromSeconds(1));
}
}
11 changes: 6 additions & 5 deletions tests/CHttp.Tests/CHttp.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="7.0.5" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.2" />
<PackageReference Include="NSubstitute" Version="5.0.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="7.0.11" />
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" Version="8.0.0-rc.1.23453.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.2" />
<PackageReference Include="NSubstitute" Version="5.1.0" />
<PackageReference Include="xunit" Version="2.5.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.1">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
Expand Down

0 comments on commit d47f8a9

Please sign in to comment.