Esempio n. 1
0
 public void GetExistingWrongKey()
 {
     using (var existingSingleton = new DummyDisposable())
     {
         SingletonsContainer.Add("foo", existingSingleton);
         Assert.Throws(typeof(InvalidCastException),
                       () => SingletonsContainer.Get <MyDisposable>("foo"));
     }
 }
        public void DisposeServiceOnUnload()
        {
            var disposeOnServiceCalled = false;
            var dummyDisposable        = new DummyDisposable(
                () => disposeOnServiceCalled = true);

            using (_ = FirLibApplication.GetLoader()
                       .AddService(typeof(IDisposable), dummyDisposable)
                       .Load())
            {
                Assert.IsFalse(disposeOnServiceCalled, nameof(disposeOnServiceCalled));
            }
            Assert.IsTrue(disposeOnServiceCalled, nameof(disposeOnServiceCalled));
        }
Esempio n. 3
0
        public async Task TestCacheDelete_CollectionDataShouldBeDisposedAsync()
        {
            ICacheInstance cache = MemoryCache.GetNamedInstance(nameof(TestCacheDelete_DataShouldBeDisposedAsync));

            cache.CleanInternal = TimeSpan.FromSeconds(1);
            var data = new DummyDisposable();
            var key  = Guid.NewGuid().ToString();

            cache.SetData(key, new[] { data }, TimeSpan.MaxValue);
            cache.TryDeleteKey(key).Should().BeTrue();
            data.IsDisposed.Should().Be(false);
            await Task.Delay(cache.CleanInternal.Add(TimeSpan.FromMilliseconds(500)));

            cache.CleanIfNeeded();
            data.IsDisposed.Should().Be(true);
        }
        public async Task TestDeleteKey_DisposableAsync()
        {
            ICacheInstance cache = MemoryCache.GetNamedInstance(nameof(TestDeleteKey_DisposableAsync));

            cache.CleanInternal = TimeSpan.FromMilliseconds(200);
            var key  = Guid.NewGuid().ToString();
            var data = new DummyDisposable();

            cache.SetData(key, data, TimeSpan.MaxValue);
            data.IsDisposed.Should().BeFalse();
            cache.TryDeleteKey(key).Should().BeTrue();
            cache.TryDeleteKey(key).Should().BeFalse();
            data.IsDisposed.Should().BeFalse();
            await Task.Delay(TimeSpan.FromMilliseconds(300));

            data.IsDisposed.Should().BeTrue();
        }
Esempio n. 5
0
        public void EnsureValueDisposed_NotCreated()
        {
            var disposable = new DummyDisposable();

            disposable.IsDisposed.Should().BeFalse();

            var lazyAsync = LazyUtils.ToLazy(() => disposable);

            if (lazyAsync is IDisposable disposableLazyAsync)
            {
                disposableLazyAsync.Dispose();
                disposable.IsDisposed.Should().BeFalse();
            }
            else
            {
                Assert.Fail("lazy should be disposable");
            }
        }
        public void EnsureAllItemsDisposed()
        {
            var container = new DisposableContainer();
            var items     = new List <DummyDisposable>();

            for (var i = 0; i < 10; i++)
            {
                var item = new DummyDisposable();
                items.Add(item);
                container.Register(item);
            }

            items.ForEach(_ => _.IsDisposed.Should().BeFalse());

            container.Dispose();
            container.IsDisposed.Should().BeTrue();
            items.ForEach(_ => _.IsDisposed.Should().BeTrue());
        }
        public void TestCreateDeleteInstance()
        {
            var            cacheName = Guid.NewGuid().ToString();
            ICacheInstance cache     = MemoryCache.GetNamedInstance(cacheName);

            cache.Should().NotBeNull();

            var data = new DummyDisposable();

            cache.SetData(nameof(data), data, Timeout.InfiniteTimeSpan);

            MemoryCache.GetNamedInstance(cacheName).Should().Be(cache);

            data.IsDisposed.Should().BeFalse();
            MemoryCache.TryDeleteNamedInstance(cacheName).Should().BeTrue();
            data.IsDisposed.Should().BeTrue();

            MemoryCache.GetNamedInstance(cacheName).Should().NotBe(cache);
        }
Esempio n. 8
0
        public async Task AsyncLazy_EnsureValueDisposedAsync()
        {
            var disposable = new DummyDisposable();

            disposable.IsDisposed.Should().BeFalse();

            var lazyAsync = LazyUtils.ToAsyncLazy(async() => disposable);

            (await lazyAsync.GetValueAsync().ConfigureAwait(false)).Should().NotBeNull();
            if (lazyAsync is IDisposable disposableLazyAsync)
            {
                disposableLazyAsync.Dispose();
                disposable.IsDisposed.Should().BeTrue();
            }
            else
            {
                Assert.Fail("lazy should be disposable");
            }
        }
        public async Task TestClearAsync()
        {
            ICacheInstance cache = MemoryCache.GetNamedInstance(Guid.NewGuid().ToString());

            cache.CleanInternal = TimeSpan.FromMilliseconds(200);
            var key  = Guid.NewGuid().ToString();
            var data = new DummyDisposable();

            cache.SetData(key, data, TimeSpan.MaxValue);
            cache.Size.Should().Be(1);
            data.IsDisposed.Should().BeFalse();
            cache.Clear();
            cache.Size.Should().Be(0);
            data.IsDisposed.Should().BeFalse();
            await Task.Delay(TimeSpan.FromMilliseconds(300));

            cache.CleanIfNeeded();
            data.IsDisposed.Should().BeTrue();
        }
Esempio n. 10
0
 public bool isDisposable(DummyDisposable d) => d is IDisposable;