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); }
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); } }
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); }
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); }
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); }
public static void GetExpiredEntries_GivenZeroSize_ThrowsArgOutOfRangeException() { var policy = new LruCachePolicy <string>(); Assert.Throws <ArgumentOutOfRangeException>(() => policy.GetExpiredEntries(Enumerable.Empty <ICacheEntry <string> >(), 0)); }
public static void GetExpiredEntries_GivenNullEntries_ThrowsArgNullException() { var policy = new LruCachePolicy <string>(); Assert.Throws <ArgumentNullException>(() => policy.GetExpiredEntries(null, 1)); }