public void Save_null_then_get()
        {
            var            key   = "key-object-null";
            ICacheProvider cache = new MemoryCacheProvider("region3");

            Person id1 = null;
            var    id2 = cache.GetOrCreate(key, _ => id1);

            Assert.IsNull(id2);

            Person id3;
            var    exists = cache.TryGet(key, out id3);

            Assert.IsTrue(exists);
        }
        public void Save_ReferenceType_then_get()
        {
            var            key   = "key-object";
            ICacheProvider cache = new MemoryCacheProvider("region2");
            var            id1   = new Object();
            var            id2   = cache.GetOrCreate(key, _ => id1);

            Assert.AreEqual(id1, id2);

            cache.Expire(key);
            Object id3;
            var    exists = cache.TryGet(key, out id3);

            Assert.IsFalse(exists);
            Assert.AreNotEqual(id1, id3);
            Assert.AreEqual(id3, null);
        }
        public void Save_ValueType_then_get()
        {
            var            key   = "key-guid";
            ICacheProvider cache = new MemoryCacheProvider("region1");
            var            id1   = Guid.NewGuid();
            var            id2   = cache.GetOrCreate(key, _ => id1);

            Assert.AreEqual(id1, id2);

            cache.Expire(key);
            Guid id3;
            var  exists = cache.TryGet(key, out id3);

            Assert.IsFalse(exists);
            Assert.AreNotEqual(id1, id3);
            Assert.AreEqual(id3, Guid.Empty);
        }