예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
            }
        }