public void GetCacheItem () { var mc = new PokerMemoryCache ("MyCache"); AssertExtensions.Throws<NotSupportedException> (() => { mc.GetCacheItem ("key", "region"); }, "#A1-1"); AssertExtensions.Throws<ArgumentNullException> (() => { mc.GetCacheItem (null); }, "#A1-2"); CacheItem value; mc.Set ("key", "value", null); value = mc.GetCacheItem ("key"); Assert.IsNotNull (value, "#A2-1"); Assert.AreEqual ("value", value.Value, "#A2-2"); Assert.AreEqual ("key", value.Key, "#A2-3"); value = mc.GetCacheItem ("doesnotexist"); Assert.IsNull (value, "#A3"); var cip = new CacheItemPolicy (); bool callbackInvoked; CacheEntryRemovedReason reason = (CacheEntryRemovedReason) 1000; cip.AbsoluteExpiration = DateTimeOffset.Now.AddMilliseconds (50); cip.RemovedCallback = (CacheEntryRemovedArguments args) => { callbackInvoked = true; reason = args.RemovedReason; }; mc.Set ("key", "value", cip); Thread.Sleep (500); callbackInvoked = false; reason = (CacheEntryRemovedReason) 1000; value = mc.GetCacheItem ("key"); Assert.IsNull (value, "#B1-1"); Assert.IsTrue (callbackInvoked, "#B1-2"); Assert.AreEqual (CacheEntryRemovedReason.Expired, reason, "#B1-3"); cip = new CacheItemPolicy (); cip.AbsoluteExpiration = DateTimeOffset.Now.AddMilliseconds (50); cip.RemovedCallback = (CacheEntryRemovedArguments args) => { callbackInvoked = true; reason = args.RemovedReason; throw new ApplicationException ("test"); }; mc.Set ("key", "value", cip); Thread.Sleep (500); callbackInvoked = false; reason = (CacheEntryRemovedReason) 1000; value = mc.GetCacheItem ("key"); Assert.IsNull (value, "#B2-1"); Assert.IsTrue (callbackInvoked, "#B2-2"); Assert.AreEqual (CacheEntryRemovedReason.Expired, reason, "#B2-3"); }