public void GivenSimpleValues_WithDifferentParams_EnsureCachedSeparately()
        {
            var cache = new FunctionCacheProvider(new MemoryCache("Test"));
            var sw1   = new Stopwatch();

            sw1.Start();
            cache.ExecuteWithCache("Test2", () => SimpleAdditionSlow(2, 3, 2000), DateTimeOffset.Now.AddSeconds(10), 2, 3);
            sw1.Stop();

            var sw2 = new Stopwatch();

            sw2.Start();
            cache.ExecuteWithCache("Test2", () => SimpleAdditionSlow(2, 3, 2000), DateTimeOffset.Now.AddSeconds(10), 2, 4);
            sw2.Stop();

            Assert.IsTrue(sw1.ElapsedMilliseconds >= 2000 && sw2.ElapsedMilliseconds >= 2000);
        }
        public void GivenSimpleValues_CorrectValueReturned()
        {
            var cache = new FunctionCacheProvider(new MemoryCache("Test"));

            var result = cache.ExecuteWithCache("Test1", () => SimpleAddition(2, 3), DateTimeOffset.Now.AddSeconds(10));

            Assert.AreEqual(5, result);
        }
        public void GivenSimpleValues_WithSlowMethod_EnsureCacheExpires()
        {
            var cache = new FunctionCacheProvider(new MemoryCache("Test"));
            var sw1   = new Stopwatch();

            sw1.Start();
            cache.ExecuteWithCache("Test3", () => SimpleAdditionSlow(2, 3, 2000), DateTimeOffset.Now.AddSeconds(2));
            sw1.Stop();

            Thread.Sleep(5000);

            var sw2 = new Stopwatch();

            sw2.Start();
            cache.ExecuteWithCache("Test3", () => SimpleAdditionSlow(2, 3, 2000), DateTimeOffset.Now.AddSeconds(2));
            sw2.Stop();

            Assert.IsTrue(sw1.ElapsedMilliseconds >= 2000 && sw2.ElapsedMilliseconds >= 2000);
        }