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)); }
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); }
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); }
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); }