コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }