public void Create_WithGoodPredicate_Succeeds() { Predicate<CachedValue<string>> predicate = (item) => true; var strategy = new GenericExpirationStrategy<string>(predicate); Assert.IsNotNull(strategy); }
public void IsExpired_WorksCorrectly_Test() { Predicate<CachedValue<string>> predicate = (item) => (item.Value == "expired"); var strategy = new GenericExpirationStrategy<string>(predicate); Assert.IsFalse(strategy.IsExpired(new CachedValue<string>("good"))); Assert.IsTrue(strategy.IsExpired(new CachedValue<string>("expired"))); }
public void CheckAndSetCache_Clean_Works() { var strategy = new GenericExpirationStrategy<object>(v => (int)v.Value == 2); using (var cache = new CheckAndSetCache<string, object>(strategy)) { cache.Add("1", 1); cache.Add("2", 2); cache.Add("3", 3); Assert.AreEqual(3, cache.Count); cache.Clean(); Assert.AreEqual(2, cache.Count); } }
public void GenericOnDemandRefreshCache_Clean_Functions() { var strategy = new GenericExpirationStrategy<string>(v => v.Value == "value1"); Func<string, string> missing = (key) => key; var cache = GenericOnDemandRefreshCache.Create(strategy, missing); cache.Add("key1", "value1"); cache.Add("key2", key => key + "value2"); cache.Add("key3", "value3", key => key + "value3"); Assert.AreEqual(3, cache.Count); cache.Clean(); Assert.AreEqual(2, cache.Count); Assert.AreEqual(1, cache.Statistics.Cleanings.Value); Assert.AreEqual(0, cache.Statistics.Evictions.Value); Assert.AreEqual(0, cache.Statistics.Requests.Value); Assert.AreEqual(0, cache.Statistics.Hits.Value); Assert.AreEqual(3, cache.Statistics.Updates.Value); Assert.AreEqual(0, cache.Statistics.Misses.Value); }
public void GenericBackgroundRefreshCache_Clean_Functions() { var timespan = TimeSpan.FromDays(1); var strategy = new GenericExpirationStrategy<string>(v => v.Value == "value1"); Func<string, string> factory = (key) => key; var cache = GenericBackgroundRefreshCache.Create(timespan, strategy, factory); cache.Add("key1", "value1"); cache.Add("key2", key => key + "value2"); cache.Add("key3", "value3", key => key + "value3"); Assert.AreEqual(3, cache.Count); cache.Clean(); Assert.AreEqual(2, cache.Count); Assert.AreEqual(1, cache.Statistics.Cleanings.Value); Assert.AreEqual(0, cache.Statistics.Evictions.Value); Assert.AreEqual(0, cache.Statistics.Requests.Value); Assert.AreEqual(0, cache.Statistics.Hits.Value); Assert.AreEqual(3, cache.Statistics.Updates.Value); Assert.AreEqual(0, cache.Statistics.Misses.Value); }
public void Create_WithBadPredicate_Throws() { Predicate<CachedValue<string>> predicate = null; var strategy = new GenericExpirationStrategy<string>(predicate); }