예제 #1
0
        public void AddWithTagsTest()
        {
            var    provider = new MemoryCacheProvider();
            string key      = "AddTest" + DateTime.Now.Ticks;

            string[] tags        = new[] { "a", "b" };
            var      cacheKey    = new CacheKey(key, tags);
            var      value       = "Test Value " + DateTime.Now;
            var      cachePolicy = new CachePolicy();

            bool result = provider.Add(cacheKey, value, cachePolicy);

            result.Should().BeTrue();

            // look in underlying MemoryCache
            string innerKey    = MemoryCacheProvider.GetKey(cacheKey);
            var    cachedValue = MemoryCache.Default.Get(innerKey);

            cachedValue.Should().NotBeNull();
            cachedValue.Should().Be(value);

            // make sure cache key is in underlying MemoryCache
            var    cacheTag = new CacheTag("a");
            string tagKey   = MemoryCacheProvider.GetTagKey(cacheTag);

            tagKey.Should().NotBeNullOrEmpty();

            var cachedTag = MemoryCache.Default.Get(tagKey);

            cachedTag.Should().NotBeNull();
        }
예제 #2
0
        public void RemoveTest()
        {
            var provider    = new MemoryCacheProvider();
            var cacheKey    = new CacheKey("AddTest" + DateTime.Now.Ticks);
            var value       = "Test Value " + DateTime.Now;
            var cachePolicy = new CachePolicy();

            bool result = provider.Add(cacheKey, value, cachePolicy);

            result.Should().BeTrue();

            // look in underlying MemoryCache
            string innerKey    = MemoryCacheProvider.GetKey(cacheKey);
            var    cachedValue = MemoryCache.Default.Get(innerKey);

            cachedValue.Should().NotBeNull();
            cachedValue.Should().Be(value);

            var removed = provider.Remove(cacheKey);

            removed.Should().NotBeNull();
            removed.Should().Be(value);

            // look in underlying MemoryCache
            var previous = MemoryCache.Default.Get(innerKey);

            previous.Should().BeNull();
        }
예제 #3
0
        public void SetTest()
        {
            var provider    = new MemoryCacheProvider();
            var cacheKey    = new CacheKey("SetTest" + DateTime.Now.Ticks);
            var value       = "Set Value " + DateTime.Now;
            var cachePolicy = new CachePolicy();

            bool result = provider.Set(cacheKey, value, cachePolicy);

            result.Should().BeTrue();

            // look in underlying MemoryCache
            string innerKey    = MemoryCacheProvider.GetKey(cacheKey);
            var    cachedValue = MemoryCache.Default.Get(innerKey);

            cachedValue.Should().NotBeNull();
            cachedValue.Should().Be(value);

            var  value2  = "Set Value " + DateTime.Now;
            bool result2 = provider.Set(cacheKey, value2, cachePolicy);

            result2.Should().BeTrue();

            var cachedValue2 = MemoryCache.Default.Get(innerKey);

            cachedValue2.Should().NotBeNull();
            cachedValue2.Should().Be(value2);
        }
예제 #4
0
        public void GetOrAddTest()
        {
            var provider    = new MemoryCacheProvider();
            var cacheKey    = new CacheKey("AddTest" + DateTime.Now.Ticks);
            var value       = "Test Value " + DateTime.Now;
            var cachePolicy = new CachePolicy();
            int callCount   = 0;

            Func <CacheKey, object> valueFactory = k =>
            {
                callCount++;
                return(value);
            };

            var result = provider.GetOrAdd(cacheKey, valueFactory, cachePolicy);

            result.Should().Be(value);
            callCount.Should().Be(1);

            // look in underlying MemoryCache
            string innerKey    = MemoryCacheProvider.GetKey(cacheKey);
            var    cachedValue = MemoryCache.Default.Get(innerKey);

            cachedValue.Should().NotBeNull();
            cachedValue.Should().Be(value);

            callCount = 0;
            var result2 = provider.GetOrAdd(cacheKey, valueFactory, cachePolicy);

            result2.Should().Be(value);
            callCount.Should().Be(0);
        }