diff --git a/Tharga.Cache.Tests/FetchDataThrottleTests.cs b/Tharga.Cache.Tests/FetchDataThrottleTests.cs index 23ec59e..56839cf 100644 --- a/Tharga.Cache.Tests/FetchDataThrottleTests.cs +++ b/Tharga.Cache.Tests/FetchDataThrottleTests.cs @@ -99,7 +99,7 @@ public async Task ManyParallelCallsAreQueued(int fetchCount, int maxConcurrentFe monitorGetEventCount.Should().Be(fetchCount); monitorDropEventCount.Should().Be(0); stopwatch.Elapsed.TotalMilliseconds.Should().BeGreaterThan(minTime); - stopwatch.Elapsed.TotalMilliseconds.Should().BeLessThan(maxTime + 200); + stopwatch.Elapsed.TotalMilliseconds.Should().BeLessThan(maxTime + 400); } [Theory] diff --git a/Tharga.Cache.Tests/InvalidateTests.cs b/Tharga.Cache.Tests/InvalidateTests.cs index 0775abc..49dd634 100644 --- a/Tharga.Cache.Tests/InvalidateTests.cs +++ b/Tharga.Cache.Tests/InvalidateTests.cs @@ -34,12 +34,13 @@ public async Task GetAfterInvalidate(Type type, EvictionPolicy? evictionPolicy, var item = await sut.GetAsync("Key", () => Task.FromResult(value)); //Assert - _dataSetEventCount.Should().Be(staleWhileRevalidate ? 0 : 1); + // With staleWhileRevalidate, background refresh may or may not complete before assertions + _dataSetEventCount.Should().BeInRange(staleWhileRevalidate ? 0 : 1, 1); _dataGetEventCount.Should().Be(1); - _dataDropEventCount.Should().Be(staleWhileRevalidate ? 0 : 1); - _monitorSetEventCount.Should().Be(staleWhileRevalidate ? 0 : 1); + _dataDropEventCount.Should().BeInRange(staleWhileRevalidate ? 0 : 1, 1); + _monitorSetEventCount.Should().BeInRange(staleWhileRevalidate ? 0 : 1, 1); _monitorGetEventCount.Should().Be(1); - _monitorDropEventCount.Should().Be(staleWhileRevalidate ? 0 : 1); + _monitorDropEventCount.Should().BeInRange(staleWhileRevalidate ? 0 : 1, 1); item.Should().Be(value); result.Monitor.GetInfos().SelectMany(x => x.Items).Sum(x => x.Value.Size).Should().BeGreaterThan(0); } diff --git a/Tharga.Cache.Tests/TimeToIdleCacheTests.cs b/Tharga.Cache.Tests/TimeToIdleCacheTests.cs index 98ca2e8..805b45a 100644 --- a/Tharga.Cache.Tests/TimeToIdleCacheTests.cs +++ b/Tharga.Cache.Tests/TimeToIdleCacheTests.cs @@ -40,13 +40,13 @@ public async Task KeepIfUsed(bool keep) _cacheMonitor.DataDropEvent += (_, _) => { monitorDropEventCount++; }; //Act - _ = await sut.GetAsync("a", () => Task.FromResult("a1"), TimeSpan.FromMilliseconds(200)); - await Task.Delay(100); - _ = await sut.GetAsync("a", () => Task.FromResult("a2"), TimeSpan.FromMilliseconds(200)); - await Task.Delay(100); - if (keep) _ = await sut.GetAsync("a", () => Task.FromResult("a3"), TimeSpan.FromMilliseconds(200)); - await Task.Delay(100); - var result = await sut.GetAsync("a", () => Task.FromResult("a4"), TimeSpan.FromMilliseconds(200)); + _ = await sut.GetAsync("a", () => Task.FromResult("a1"), TimeSpan.FromMilliseconds(400)); + await Task.Delay(200); + _ = await sut.GetAsync("a", () => Task.FromResult("a2"), TimeSpan.FromMilliseconds(400)); + await Task.Delay(200); + if (keep) _ = await sut.GetAsync("a", () => Task.FromResult("a3"), TimeSpan.FromMilliseconds(400)); + await Task.Delay(250); + var result = await sut.GetAsync("a", () => Task.FromResult("a4"), TimeSpan.FromMilliseconds(400)); //Assert result.Should().Be(keep ? "a1" : "a4"); diff --git a/Tharga.Cache.Tests/TimeToLiveCacheTests.cs b/Tharga.Cache.Tests/TimeToLiveCacheTests.cs index 1ad7e3c..ee54220 100644 --- a/Tharga.Cache.Tests/TimeToLiveCacheTests.cs +++ b/Tharga.Cache.Tests/TimeToLiveCacheTests.cs @@ -40,13 +40,13 @@ public async Task DropEvenIfUsed(bool keep) _cacheMonitor.DataDropEvent += (_, _) => { monitorDropEventCount++; }; //Act - _ = await sut.GetAsync("a", () => Task.FromResult("a1"), TimeSpan.FromMilliseconds(200)); - await Task.Delay(100); - _ = await sut.GetAsync("a", () => Task.FromResult("a2"), TimeSpan.FromMilliseconds(200)); - await Task.Delay(100); - if (keep) _ = await sut.GetAsync("a", () => Task.FromResult("a3"), TimeSpan.FromMilliseconds(200)); - await Task.Delay(100); - var result = await sut.GetAsync("a", () => Task.FromResult("a4"), TimeSpan.FromMilliseconds(200)); + _ = await sut.GetAsync("a", () => Task.FromResult("a1"), TimeSpan.FromMilliseconds(400)); + await Task.Delay(200); + _ = await sut.GetAsync("a", () => Task.FromResult("a2"), TimeSpan.FromMilliseconds(400)); + await Task.Delay(200); + if (keep) _ = await sut.GetAsync("a", () => Task.FromResult("a3"), TimeSpan.FromMilliseconds(400)); + await Task.Delay(250); + var result = await sut.GetAsync("a", () => Task.FromResult("a4"), TimeSpan.FromMilliseconds(400)); //Assert result.Should().Be(keep ? "a3" : "a4");