コード例 #1
0
        public void WhenKeyExistsTryRemoveRemovesItemAndReturnsTrue()
        {
            lru.GetOrAdd(1, valueFactory.Create);

            lru.TryRemove(1).Should().BeTrue();
            lru.TryGet(1, out var value).Should().BeFalse();
        }
コード例 #2
0
        public void WhenItemIsRemovedItIsDisposed()
        {
            var lruOfDisposable        = new ConcurrentLru <int, DisposableItem>(1, 6, EqualityComparer <int> .Default);
            var disposableValueFactory = new DisposableValueFactory();

            lruOfDisposable.GetOrAdd(1, disposableValueFactory.Create);
            lruOfDisposable.TryRemove(1);

            disposableValueFactory.Items[1].IsDisposed.Should().BeTrue();
        }
コード例 #3
0
        public void WhenScopedIsCreatedFromCacheItemHasExpectedLifetime()
        {
            var lru          = new ConcurrentLru <int, Scoped <Disposable> >(2, 9, EqualityComparer <int> .Default);
            var valueFactory = new DisposableValueFactory();

            using (var lifetime = lru.GetOrAdd(1, valueFactory.Create).CreateLifetime())
            {
                lifetime.Value.IsDisposed.Should().BeFalse();
            }

            valueFactory.Disposable.IsDisposed.Should().BeFalse();

            lru.TryRemove(1);

            valueFactory.Disposable.IsDisposed.Should().BeTrue();
        }