Esempio n. 1
0
        public static void GetExpiredEntries_WhenCacheExhausted_ReturnsLeastRecentlyUsedValue()
        {
            var policy = new LruCachePolicy <string>();

            var cacheEntry1 = new Mock <ICacheEntry <string> >();

            cacheEntry1.Setup(k => k.CreationTime).Returns(new DateTime(2017, 1, 1));
            cacheEntry1.Setup(k => k.LastAccessed).Returns(new DateTime(2017, 2, 1));
            cacheEntry1.Setup(k => k.Size).Returns(5);
            cacheEntry1.Setup(k => k.Key).Returns("test1");

            var cacheEntry2 = new Mock <ICacheEntry <string> >();

            cacheEntry2.Setup(k => k.CreationTime).Returns(new DateTime(2017, 1, 2));
            cacheEntry2.Setup(k => k.LastAccessed).Returns(new DateTime(2017, 2, 2));
            cacheEntry2.Setup(k => k.Size).Returns(5);
            cacheEntry2.Setup(k => k.Key).Returns("test2");

            var cacheEntry3 = new Mock <ICacheEntry <string> >();

            cacheEntry3.Setup(k => k.CreationTime).Returns(new DateTime(2017, 1, 3));
            cacheEntry3.Setup(k => k.LastAccessed).Returns(new DateTime(2017, 2, 3));
            cacheEntry3.Setup(k => k.Size).Returns(5);
            cacheEntry3.Setup(k => k.Key).Returns("test3");

            var expired    = policy.GetExpiredEntries(new[] { cacheEntry1.Object, cacheEntry2.Object, cacheEntry3.Object }, 12).ToList();
            var expiredKey = expired.Single().Key;

            Assert.AreEqual(cacheEntry1.Object.Key, expiredKey);
        }
Esempio n. 2
0
        private static void Main()
        {
            var         cacheDir    = new DirectoryInfo(@"C:\Users\sjp\Downloads\tmp\cache");
            var         cachePolicy = new LruCachePolicy <string>();
            const ulong maxSize     = 1024L * 1024L * 1024L * 1024L; // 1GB

            using (var diskCache = new DiskCache <string>(cacheDir, cachePolicy, maxSize))
            {
                diskCache.EntryAdded += (_, e) => Console.WriteLine($"Added: { e.Key }, { e.Size }");

                using (var flacStream = File.OpenRead(@"C:\Users\sjp\Downloads\05. End Of Days.flac"))
                    diskCache.SetValue("flacFile", flacStream);

                var containsTest = diskCache.ContainsKey("flacFile");
                if (containsTest)
                {
                    using (var outStr = diskCache.GetValue("flacFile"))
                        using (var tmpFile = File.OpenWrite(@"C:\Users\sjp\Downloads\tmp.flac"))
                            outStr.CopyTo(tmpFile);
                }

                Console.WriteLine("Press any key to exit...");
                Console.ReadKey(true);
            }
        }
Esempio n. 3
0
        public static void GetExpiredEntries_WhenCacheExhausted_ReturnsNonEmptyCollection()
        {
            var policy = new LruCachePolicy <string>();

            var cacheEntry1 = new Mock <ICacheEntry <string> >();

            cacheEntry1.Setup(k => k.CreationTime).Returns(new DateTime(2017, 1, 1));
            cacheEntry1.Setup(k => k.LastAccessed).Returns(new DateTime(2017, 2, 1));
            cacheEntry1.Setup(k => k.Size).Returns(5);
            cacheEntry1.Setup(k => k.Key).Returns("test1");

            var cacheEntry2 = new Mock <ICacheEntry <string> >();

            cacheEntry2.Setup(k => k.CreationTime).Returns(new DateTime(2017, 1, 2));
            cacheEntry1.Setup(k => k.LastAccessed).Returns(new DateTime(2017, 2, 2));
            cacheEntry2.Setup(k => k.Size).Returns(5);
            cacheEntry2.Setup(k => k.Key).Returns("test2");

            var cacheEntry3 = new Mock <ICacheEntry <string> >();

            cacheEntry3.Setup(k => k.CreationTime).Returns(new DateTime(2017, 1, 3));
            cacheEntry1.Setup(k => k.LastAccessed).Returns(new DateTime(2017, 2, 3));
            cacheEntry3.Setup(k => k.Size).Returns(5);
            cacheEntry3.Setup(k => k.Key).Returns("test3");

            var expired = policy.GetExpiredEntries(new[] { cacheEntry1.Object, cacheEntry2.Object, cacheEntry3.Object }, 12).ToList();

            Assert.AreEqual(1, expired.Count);
        }
Esempio n. 4
0
        public static void GetExpiredEntries_WhenOnlyValueExceedsSize_ReturnsValue()
        {
            var policy = new LruCachePolicy <string>();

            var cacheEntry = new Mock <ICacheEntry <string> >();

            cacheEntry.Setup(k => k.CreationTime).Returns(DateTime.Now);
            cacheEntry.Setup(k => k.Size).Returns(101);
            cacheEntry.Setup(k => k.Key).Returns("test");

            var expired = policy.GetExpiredEntries(new[] { cacheEntry.Object }, 100).ToList();

            Assert.AreEqual(1, expired.Count);
        }
Esempio n. 5
0
        public static void GetExpiredEntries_WhenCacheNotExhausted_ReturnsEmptySet()
        {
            var policy = new LruCachePolicy <string>();

            var cacheEntry = new Mock <ICacheEntry <string> >();

            cacheEntry.Setup(k => k.CreationTime).Returns(DateTime.Now);
            cacheEntry.Setup(k => k.Size).Returns(1);
            cacheEntry.Setup(k => k.Key).Returns("test");

            var expired = policy.GetExpiredEntries(new[] { cacheEntry.Object }, 100).ToList();

            Assert.AreEqual(0, expired.Count);
        }
Esempio n. 6
0
        public static void GetExpiredEntries_GivenZeroSize_ThrowsArgOutOfRangeException()
        {
            var policy = new LruCachePolicy <string>();

            Assert.Throws <ArgumentOutOfRangeException>(() => policy.GetExpiredEntries(Enumerable.Empty <ICacheEntry <string> >(), 0));
        }
Esempio n. 7
0
        public static void GetExpiredEntries_GivenNullEntries_ThrowsArgNullException()
        {
            var policy = new LruCachePolicy <string>();

            Assert.Throws <ArgumentNullException>(() => policy.GetExpiredEntries(null, 1));
        }