Пример #1
0
        public void SlidingConcurrentCacheTest()
        {
            ISlidingConcurrentCache <int, string> tempCache = new SlidingConcurrentCache <int, string>();

            Assert.IsNotNull(tempCache);
            Assert.False(tempCache.IsDisposed);
        }
        public async Task RenewCacheTest()
        {
            ISlidingConcurrentCache<int, string> tempCache = new SlidingConcurrentCache<int, string>(100);

            await tempCache.GetOrAdd(3, i => Task.FromResult(i.ToString()), 1).ConfigureAwait(false);
            await Task.Delay(1100).ConfigureAwait(false);
            string s = await tempCache.GetOrAdd(3, ValueFactoryForRenewCacheTest, 1).ConfigureAwait(false);

            Assert.AreEqual(3.ToString(), s);
        }
Пример #3
0
        public async Task RenewCacheTest()
        {
            ISlidingConcurrentCache <int, string> tempCache = new SlidingConcurrentCache <int, string>(100);

            await tempCache.GetOrAdd(3, i => Task.FromResult(i.ToString()), 1).ConfigureAwait(false);

            await Task.Delay(1100).ConfigureAwait(false);

            string s = await tempCache.GetOrAdd(3, ValueFactoryForRenewCacheTest, 1).ConfigureAwait(false);

            Assert.AreEqual(3.ToString(), s);
        }
Пример #4
0
        public async Task GetOrAddTest()
        {
            ISlidingConcurrentCache <int, string> tempCache = new SlidingConcurrentCache <int, string>();

            string addOne = await tempCache.GetOrAdd(1, i => Task.FromResult(i.ToString())).ConfigureAwait(false);

            Assert.IsFalse(string.IsNullOrEmpty(addOne));

            string actual = await tempCache.GetOrAdd(1, ValueFactoryForGetOrAddTest).ConfigureAwait(false);

            Assert.AreEqual(1.ToString(), actual);
        }
        public async Task SlideTest()
        {
            ISlidingConcurrentCache<int, string> tempCache = new SlidingConcurrentCache<int, string>(100);

            await tempCache.GetOrAdd(2, i => Task.FromResult(i.ToString()), 1, 1).ConfigureAwait(false);

            await Task.Delay(500).ConfigureAwait(false);
            await tempCache.GetOrAdd(2, ValueFactoryForGetOrAddTest).ConfigureAwait(false); //Must fetch from cache

            await Task.Delay(550).ConfigureAwait(false);
            await tempCache.GetOrAdd(2, ValueFactoryForGetOrAddTest).ConfigureAwait(false); //Must fetch from cache, even we passed 1 second mark. Cache should be slided.
            
            Assert.Pass();
        }
        public void DisposeTest()
        {
            ISlidingConcurrentCache<int, string> tempCache;
            TestDelegate testDelegate;

            using (tempCache = new SlidingConcurrentCache<int, string>(100))
            {
                // ReSharper disable once UnusedVariable
                testDelegate = () => { bool disposed = tempCache.IsDisposed; };
                Assert.IsFalse(tempCache.IsDisposed);
                Assert.DoesNotThrow(testDelegate);
            }

            Assert.Throws<ObjectDisposedException>(testDelegate);
        }
Пример #7
0
        public void DisposeTest()
        {
            ISlidingConcurrentCache <int, string> tempCache;
            TestDelegate testDelegate;

            using (tempCache = new SlidingConcurrentCache <int, string>(100))
            {
                // ReSharper disable once UnusedVariable
                testDelegate = () => { bool disposed = tempCache.IsDisposed; };
                Assert.IsFalse(tempCache.IsDisposed);
                Assert.DoesNotThrow(testDelegate);
            }

            Assert.Throws <ObjectDisposedException>(testDelegate);
        }
Пример #8
0
        public async Task SlideTest()
        {
            ISlidingConcurrentCache <int, string> tempCache = new SlidingConcurrentCache <int, string>(100);

            await tempCache.GetOrAdd(2, i => Task.FromResult(i.ToString()), 1, 1).ConfigureAwait(false);

            await Task.Delay(500).ConfigureAwait(false);

            await tempCache.GetOrAdd(2, ValueFactoryForGetOrAddTest).ConfigureAwait(false); //Must fetch from cache

            await Task.Delay(550).ConfigureAwait(false);

            await tempCache.GetOrAdd(2, ValueFactoryForGetOrAddTest).ConfigureAwait(false); //Must fetch from cache, even we passed 1 second mark. Cache should be slided.

            Assert.Pass();
        }
Пример #9
0
        public async Task ExpireTest()
        {
            ISlidingConcurrentCache <int, string> tempCache = new SlidingConcurrentCache <int, string>(100);

            await tempCache.GetOrAdd(1, i => Task.FromResult(i.ToString()), 1).ConfigureAwait(false);

            await Task.Delay(500).ConfigureAwait(false);

            await tempCache.GetOrAdd(1, ValueFactoryForGetOrAddTest).ConfigureAwait(false); //Must fetch from cache

            await Task.Delay(550).ConfigureAwait(false);

            await tempCache.GetOrAdd(1, ValueFactoryForExpireTest).ConfigureAwait(false); //Must fetch from repository

            Assert.Fail("Musn't hit here");
        }
        public async Task MemoryTest1()
        {
           ISlidingConcurrentCache<Guid, string> tempCache;

            using (tempCache = new SlidingConcurrentCache<Guid, string>(1000))
            {
                await Task.Run(() => Parallel.For(0, 1000000, async i =>
                {
                    Guid guid = Guid.NewGuid();
                    await tempCache.GetOrAdd(guid, ValueFactoryForMemoryTest1, 1).ConfigureAwait(false);
                })).ConfigureAwait(false);

                await Task.Delay(1000).ConfigureAwait(false);
                Assert.AreEqual(0, tempCache.CachedItemCount);
            }

            // ReSharper disable once UnusedVariable
            Assert.ThrowsAsync<ObjectDisposedException>(async () => { bool temp = await Task.FromResult(tempCache.IsDisposed).ConfigureAwait(false); });
        }
Пример #11
0
        public async Task MemoryTest1()
        {
            ISlidingConcurrentCache <Guid, string> tempCache;

            using (tempCache = new SlidingConcurrentCache <Guid, string>(1000))
            {
                await Task.Run(() => Parallel.For(0, 1000000, async i =>
                {
                    Guid guid = Guid.NewGuid();
                    await tempCache.GetOrAdd(guid, ValueFactoryForMemoryTest1, 1).ConfigureAwait(false);
                })).ConfigureAwait(false);

                await Task.Delay(1000).ConfigureAwait(false);

                Assert.AreEqual(0, tempCache.CachedItemCount);
            }

            // ReSharper disable once UnusedVariable
            Assert.ThrowsAsync <ObjectDisposedException>(async() => { bool temp = await Task.FromResult(tempCache.IsDisposed).ConfigureAwait(false); });
        }
        public async Task ExpireTest()
        {
            ISlidingConcurrentCache<int, string> tempCache = new SlidingConcurrentCache<int, string>(100);

            await tempCache.GetOrAdd(1, i => Task.FromResult(i.ToString()), 1).ConfigureAwait(false);

            await Task.Delay(500).ConfigureAwait(false);
            await tempCache.GetOrAdd(1, ValueFactoryForGetOrAddTest).ConfigureAwait(false); //Must fetch from cache

            await Task.Delay(550).ConfigureAwait(false);
            await tempCache.GetOrAdd(1, ValueFactoryForExpireTest).ConfigureAwait(false); //Must fetch from repository
            Assert.Fail("Musn't hit here");
        }
 public void SlidingConcurrentCacheTest()
 {
     ISlidingConcurrentCache<int, string> tempCache = new SlidingConcurrentCache<int, string>();
     Assert.IsNotNull(tempCache);
     Assert.False(tempCache.IsDisposed);
 }
        public async Task GetOrAddTest()
        {
            ISlidingConcurrentCache<int, string> tempCache = new SlidingConcurrentCache<int, string>();

            string addOne = await tempCache.GetOrAdd(1, i => Task.FromResult(i.ToString())).ConfigureAwait(false);
            Assert.IsFalse(string.IsNullOrEmpty(addOne));

            string actual = await tempCache.GetOrAdd(1, ValueFactoryForGetOrAddTest).ConfigureAwait(false);
            Assert.AreEqual(1.ToString(), actual);
        }