public async Task WhenKeyIsRequesteItIsCreatedAndCachedAsync() { var result1 = await lru.GetOrAddAsync(1, valueFactory.CreateAsync).ConfigureAwait(false); var result2 = await lru.GetOrAddAsync(1, valueFactory.CreateAsync).ConfigureAwait(false); valueFactory.timesCalled.Should().Be(1); result1.Should().Be(result2); }
public async Task WhenValueExpiresAsyncItIsDisposed() { var lruOfDisposable = new ClassicLru <int, DisposableItem>(1, 6, EqualityComparer <int> .Default); var disposableValueFactory = new DisposableValueFactory(); for (int i = 0; i < 7; i++) { await lruOfDisposable.GetOrAddAsync(i, disposableValueFactory.CreateAsync); } disposableValueFactory.Items[0].IsDisposed.Should().BeTrue(); disposableValueFactory.Items[1].IsDisposed.Should().BeFalse(); }