public void FromCache()
        {
            var cache1 = new CacheTest();
            var cache2 = new CacheTest();

            int cache1_1 = cache1.FromCache(i => cache1.Increment());
            int cache1_2 = cache1.FromCache(i => cache1.Increment());

            int cache2_1 = cache1.FromCache("CustomKey", i => cache2.Increment());
            int cache2_2 = cache1.FromCache("CustomKey", i => cache2.Increment());

            int cache3_1 = cache1.FromCache("CustomKeyWithValue", 1);
            int cache3_2 = cache1.FromCache("CustomKeyWithValue", 2);

            Assert.AreEqual(1, cache1_1);
            Assert.AreEqual(1, cache1_2);

            Assert.AreEqual(1, cache2_1);
            Assert.AreEqual(1, cache2_2);

            Assert.AreEqual(1, cache3_1);
            Assert.AreEqual(1, cache3_2);
        }
        public void FromCache()
        {
            var cache1 = new CacheTest();
            var cache2 = new CacheTest();

            int cache1_1 = cache1.FromCache(i => cache1.Increment());
            int cache1_2 = cache1.FromCache(i => cache1.Increment());

            int cache2_1 = cache1.FromCache("CustomKey", i => cache2.Increment());
            int cache2_2 = cache1.FromCache("CustomKey", i => cache2.Increment());

            int cache3_1 = cache1.FromCache("CustomKeyWithValue", 1);
            int cache3_2 = cache1.FromCache("CustomKeyWithValue", 2);

            Assert.AreEqual(1, cache1_1);
            Assert.AreEqual(1, cache1_2);

            Assert.AreEqual(1, cache2_1);
            Assert.AreEqual(1, cache2_2);

            Assert.AreEqual(1, cache3_1);
            Assert.AreEqual(1, cache3_2);
        }