Пример #1
0
        public async Task Default_key_cache_can_be_cleared()
        {
            var item = new Item();
            var key  = item.Id;

            var asyncFactoryMock = new Mock <Func <Task <Item> > >();

            asyncFactoryMock.Setup(asyncFactory => asyncFactory()).Returns(Task.FromResult(item));

            var cache = new MKCache <Item>();

            var foundItem = await cache.GetOrCreateAsync(key, asyncFactoryMock.Object, Expiration);

            asyncFactoryMock.Verify(asyncFactory => asyncFactory(), Times.Once);
            Assert.Same(item, foundItem);

            var cachedItem = await cache.GetOrCreateAsync(key, asyncFactoryMock.Object, Expiration);

            asyncFactoryMock.Verify(asyncFactory => asyncFactory(), Times.Once);
            Assert.Same(item, cachedItem);

            cache.Clear();

            var _ = await cache.GetOrCreateAsync(key, asyncFactoryMock.Object, Expiration);

            asyncFactoryMock.Verify(asyncFactory => asyncFactory(), Times.Exactly(2));
        }
Пример #2
0
        public void Cache_can_be_cleared()
        {
            var item = new Item();
            var key  = item.Id;

            var factoryMock = new Mock <Func <Item> >();

            factoryMock.Setup(factory => factory()).Returns(item);

            var cache = new MKCache <Item>();

            var foundItem = cache.GetOrCreate(key, factoryMock.Object, Expiration);

            factoryMock.Verify(factory => factory(), Times.Once);
            Assert.Same(item, foundItem);

            var cachedItem = cache.GetOrCreate(key, factoryMock.Object, Expiration);

            factoryMock.Verify(factory => factory(), Times.Once);
            Assert.Same(item, cachedItem);

            cache.Clear();

            var newlyCachedItem = cache.GetOrCreate(key, factoryMock.Object, Expiration);

            factoryMock.Verify(factory => factory(), Times.Exactly(2));
            Assert.Same(item, newlyCachedItem);
        }
Пример #3
0
        public void Can_inspect_items_count()
        {
            var cache = new MKCache <int>();

            Assert.Equal(0, cache.Count);

            cache.GetOrCreate("1", () => 1, Expiration);
            Assert.Equal(1, cache.Count);

            cache.GetOrCreate("2", () => 2, Expiration);
            Assert.Equal(2, cache.Count);

            cache.Clear();
            Assert.Equal(0, cache.Count);
        }
Пример #4
0
        public void Can_inspect_items_count()
        {
            var cache = new MKCache <Item>(
                x => x.Id,
                x => x.Name);

            Assert.Equal(0, cache.Count);

            cache.GetOrCreate("1", () => new Item(), Expiration);
            Assert.Equal(1, cache.Count);

            cache.GetOrCreate("name", () => new Item(), Expiration);
            Assert.Equal(2, cache.Count);

            cache.Clear();
            Assert.Equal(0, cache.Count);
        }