public void TestExpiryPolicy() { var cache = new CacheEx(); Assert.IsNull(cache.ExpiryPolicy); var holder = new ExpiryCacheHolder <int, int>(cache); // Check same cache for same expiry. var cache1 = (CacheEx)holder.GetCacheWithExpiry(15); CheckExpiry(TimeSpan.FromSeconds(15), cache1); Assert.AreNotSame(cache, cache1); Assert.AreSame(cache1, holder.GetCacheWithExpiry(15)); // Check rounding. var cache2 = (CacheEx)holder.GetCacheWithExpiry(DateTime.UtcNow.AddSeconds(15.1)); Assert.AreSame(cache1, cache2); // Check no expiration. var cache3 = (CacheEx)holder.GetCacheWithExpiry(DateTime.MaxValue); Assert.AreSame(cache, cache3); }
public void NoneDoesntCache() { var cache = CacheEx.None <int, string>(); var str1 = cache.GetOrAdd(1, MakeValue); Assert.Equal("1", str1); var str2 = cache.GetOrAdd(1, MakeValue); Assert.Equal("1", str2); Assert.False(ReferenceEquals(str1, str2)); cache.Upsert(1, "test"); var str3 = cache.GetOrAdd(1, MakeValue, out bool added); Assert.True(added); Assert.Equal("1", str3); Assert.False(ReferenceEquals(str1, str3)); Assert.False(ReferenceEquals(str2, str3)); Assert.False(cache.TryGetValue(1, out string str4)); Assert.Null(str4); cache.Clear(); }
/// <summary> /// Checks the expiry. /// </summary> private static void CheckExpiry(TimeSpan timeSpan, CacheEx cache) { Assert.AreEqual(timeSpan, cache.ExpiryPolicy.GetExpiryForCreate()); Assert.IsNull(cache.ExpiryPolicy.GetExpiryForUpdate()); Assert.IsNull(cache.ExpiryPolicy.GetExpiryForAccess()); }
public void ConcurrentOk() { CacheOk(CacheEx.Concurrent <int, string>()); }
public void ThreadUnsafeOk() { CacheOk(CacheEx.ThreadUnsafe <int, string>()); }
public void ThreadSafeLockingOk() { CacheOk(CacheEx.ThreadSafeLocking <int, string>()); }