Files
MoShiro/backend/fleet/tests/Fleet.Tests/BoundedTests.cs
T
justme d95acc6575
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
refactor(link): bound every teardown and handler wait behind one helper [CI]
2026-10-19 10:07:36 +08:00

29 lines
1.2 KiB
C#

using Fleet.Core;
namespace Fleet.Tests;
public sealed class BoundedTests
{
[Fact]
public async Task WaitAsync_ReturnsFalse_WhenTheWorkNeverFinishes()
{
var never = new TaskCompletionSource();
Assert.False(await Bounded.WaitAsync(never.Task, TimeSpan.FromMilliseconds(100), TimeProvider.System));
}
[Fact]
public async Task WaitAsync_ReturnsTrue_WhenTheWorkFinishes_OrFailsWithSessionNoise()
{
Assert.True(await Bounded.WaitAsync(Task.CompletedTask, TimeSpan.FromSeconds(5), TimeProvider.System));
Assert.True(await Bounded.WaitAsync(Task.FromException(new IOException("closed")), TimeSpan.FromSeconds(5), TimeProvider.System));
Assert.True(await Bounded.WaitAsync(Task.FromException(new ObjectDisposedException("x")), TimeSpan.FromSeconds(5), TimeProvider.System));
Assert.True(await Bounded.WaitAsync(Task.FromCanceled(new CancellationToken(true)), TimeSpan.FromSeconds(5), TimeProvider.System));
}
[Fact]
public async Task WaitAsync_DoesNotHideRealFailures()
{
await Assert.ThrowsAsync<FormatException>(() => Bounded.WaitAsync(Task.FromException(new FormatException()), TimeSpan.FromSeconds(5), TimeProvider.System));
}
}