コード例 #1
0
        public void Get_ExpiredValue_SavesNewValueWithCorrectExpirationTime()
        {
            // this test extends just checking a new value is returned, it ensures the new value is stored in the dictionary for subsequent cached requests after initial expiration, this fixes a bug where the cache never stored the value after an initial expiration.
            var itemLifeSpan = TimeSpan.FromMinutes(1);
            var cache        = new ExpiringCache <int, object>(k => null, itemLifeSpan);
            var key          = default(int);
            var value        = cache[key];
            var expiredValue = cache.GetCurrentValue(key);

            expiredValue.ExpiresAt = DateTime.Now.Add(-itemLifeSpan);
            Expect(expiredValue.Equals(expiredValue));
            Expect(expiredValue.IsExpired());

            var beforeLoaded = DateTime.Now;

            value = cache[key];
            var afterLoaded = DateTime.Now;

            var currentValue = cache.GetCurrentValue(key);

            Expect(currentValue != expiredValue);
            var lowerEnd = beforeLoaded.Add(itemLifeSpan);
            var upperEnd = afterLoaded.Add(itemLifeSpan);

            Expect(currentValue.ExpiresAt, Is.InRange(lowerEnd, upperEnd));
        }
コード例 #2
0
        public void Get_ExpiredValue_SavesNewValueWithCorrectExpirationTime()
        {
            // this test extends just checking a new value is returned, it ensures the new value is stored in the dictionary for subsequent cached requests after initial expiration, this fixes a bug where the cache never stored the value after an initial expiration.
            var itemLifeSpan = TimeSpan.FromMinutes(1);
            var cache = new ExpiringCache<int, object>(k => null, itemLifeSpan);
            var key = default(int);
            var value = cache[key];
            var expiredValue = cache.GetCurrentValue(key);
            expiredValue.ExpiresAt = DateTime.Now.Add(-itemLifeSpan);
            Expect(expiredValue.Equals(expiredValue));
            Expect(expiredValue.IsExpired());

            var beforeLoaded = DateTime.Now;
            value = cache[key];
            var afterLoaded = DateTime.Now;

            var currentValue = cache.GetCurrentValue(key);
            Expect(currentValue != expiredValue);
            var lowerEnd = beforeLoaded.Add(itemLifeSpan);
            var upperEnd = afterLoaded.Add(itemLifeSpan);
            Expect(currentValue.ExpiresAt, Is.InRange(lowerEnd, upperEnd));
        }