public void ShouldLoadTheValueForMissingKey() { CacheBuilder<string> cache_builder = new CacheBuilder<string>(); LoadingCacheMock<string> cache = new LoadingCacheMock<string>(cache_builder); CacheLoader<string> loader = new StringCacheLoader(); string cached = cache.GetIfPresent("missing-key"); Assert.IsNull(cached); cached = cache.Get("missing-key", loader); Assert.IsNotNull(cached); }
public void ShouldThrowExceptionWhenCacheLoaderReturnsNull() { CacheBuilder<string> ref_cache_builder = new CacheBuilder<string>(); LoadingCacheMock<string> ref_cache = new LoadingCacheMock<string>(ref_cache_builder); CacheBuilder<long> val_cache_builder = new CacheBuilder<long>(); LoadingCacheMock<long> val_cache = new LoadingCacheMock<long>(val_cache_builder); CacheLoader<string> ref_loader = new StringCacheLoader(); try { ref_cache.Get("missing-ref-key", ref_loader); } catch (ExecutionException exception) { Assert.IsAssignableFrom<InvalidCacheLoadException>( exception.InnerException); } CacheLoader<long> val_loader = CacheLoader<long>.From(delegate(string key) { return default(long); }); Assert.DoesNotThrow( delegate() { val_cache.Get("missing-ref-key", val_loader); }); }
public void ShouldThrowExceptionWhenKeyIsNull() { CacheBuilder<string> cache_builder = new CacheBuilder<string>(); LoadingCacheMock<string> cache = new LoadingCacheMock<string>(cache_builder); CacheLoader<string> loader = new StringCacheLoader(); Assert.Throws<ArgumentNullException>( delegate() { cache.Get(null, loader); }); Assert.Throws<ArgumentNullException>( delegate() { cache.GetIfPresent(null); }); Assert.Throws<ArgumentNullException>( delegate() { cache.Put(null, string.Empty); }); Assert.Throws<ArgumentNullException>(delegate() { cache.Remove(null); }); }