public void WhenCacheIsEmptyAndCacheItemPolicyOverrideOnUpdateWithNullThenUseDefaultPolicy() { // arrange var expectedResult = "expectedResult"; var cacheKey = "key"; var defaultTimeout = 1; var defaultPolicy = new CacheItemPolicy { AbsoluteExpiration = DateTime.UtcNow.AddSeconds(defaultTimeout) }; using (var cache = new SaintModeCache()) { var startTests = new EventWaitHandle(false, EventResetMode.ManualReset); // act cache.GetOrCreate(cacheKey, (key, cancel) => { cancel.CacheItemPolicy = null; startTests.Set(); return(expectedResult); }, defaultPolicy); // assert startTests.WaitOne(); Thread.Sleep(defaultTimeout * 1000); Assert.That(cache.Expired(cacheKey), Is.True); } }
public void WhenActiveCacheItemThenIsNotExpired() { // arrange var expectedResult = "expectedResult"; var cacheKey = "key"; using (var cache = new SaintModeCache()) { var policy = new CacheItemPolicy { AbsoluteExpiration = ObjectCache.InfiniteAbsoluteExpiration }; cache.GetOrCreate(cacheKey, (key, cancel) => expectedResult, policy); // act var result = cache.Expired(cacheKey); // assert Assert.That(result, Is.False); } }
public void WhenStaleCacheItemExistsThenCacheItemIsExpired() { // arrange var expectedResult = "expectedResult"; var cacheKey = "key"; using (var cache = new SaintModeCache()) { var policy = new CacheItemPolicy { AbsoluteExpiration = DateTime.UtcNow.AddMilliseconds(10) }; cache.GetOrCreate(cacheKey, (key, cancel) => expectedResult, policy); Thread.Sleep(20); // act var result = cache.Expired(cacheKey); // assert Assert.That(result, Is.True); } }