示例#1
0
        public void WhenActiveCacheItemRemovedThenGetOrCreateTriggersUpdate()
        {
            // arrange
            var expectedResult   = "expectedResult";
            var unexpectedResult = "unexpectedResult";
            var cacheKey         = "key";
            var triggerUpdate    = false;

            using (var cache = new SaintModeCache())
            {
                var policy = new CacheItemPolicy {
                    AbsoluteExpiration = ObjectCache.InfiniteAbsoluteExpiration
                };
                cache.GetOrCreate(cacheKey, (key, cancel) => unexpectedResult, policy);
                cache.Remove(cacheKey);
                var ewh = new EventWaitHandle(false, EventResetMode.ManualReset);

                // act
                cache.GetOrCreate(cacheKey, (key, cancel) =>
                {
                    triggerUpdate = true;
                    ewh.Set();
                    return(expectedResult);
                }, policy);

                // assert
                ewh.WaitOne(5000);
                Assert.That(triggerUpdate, Is.True);
            }
        }
示例#2
0
        public void WhenActiveCacheAndRemoveThenKeyIsCaseSensitive()
        {
            // arrange
            var expectedResult1 = "expectedResult1";
            var expectedResult2 = "expectedResult2";
            var cacheKey1       = "key";
            var cacheKey2       = "KEY";

            using (var cache = new SaintModeCache())
            {
                cache.SetOrUpdateWithoutCreate(cacheKey1, expectedResult1);
                cache.SetOrUpdateWithoutCreate(cacheKey2, expectedResult2);
                cache.Remove(cacheKey2);

                // act
                var result1 = cache.GetWithoutCreateOrNull(cacheKey1);
                var result2 = cache.GetWithoutCreateOrNull(cacheKey2);

                // assert
                Assert.That(result1, Is.EqualTo(expectedResult1));
                Assert.That(result2, Is.Null);
            }
        }