public void GetValue_ValueIsCorrect()
        {
            int    expirationTimeoutInMs = 10;
            string testCachedName        = "1";

            IFastCacheEngine fastCache = new FastCacheEngine(expirationTimeoutInMs, new FakeSlowCacheEngine());
            string           value     = fastCache.GetValue(testCachedName);

            Assert.AreEqual("The First", value, "GetValue works incorrect");
        }
        public void GetValue_GetValueAfterExpirationTimeout_FastCacheDoUpdateCache()
        {
            int    waytTimeoutInMs = 100;
            string testCachedName1 = "1";
            string testCachedName2 = "2";

            IFastCacheEngine fastCache = new FastCacheEngine(waytTimeoutInMs * 10, new FakeSlowCacheEngine(waytTimeoutInMs));
            string           value1    = fastCache.GetValue(testCachedName1);

            Thread.Sleep(waytTimeoutInMs * 10);

            var stopwatch = new Stopwatch();

            stopwatch.Start();
            string value2 = fastCache.GetValue(testCachedName2);

            stopwatch.Stop();

            Assert.AreEqual("The First", value1, "GetValue works incorrect");
            Assert.AreEqual("The Second", value2, "GetValue works incorrect");
            Assert.IsTrue(stopwatch.ElapsedMilliseconds >= waytTimeoutInMs, "FastCache updates cache incorrectly");
        }