public void GetOrCreateValue_AfterTokenWasInvalidated_RefreshesRevision_ReturnsValue() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var key = new object(); cache.Add(key, "Value1"); decorator.InvalidationToken.Invalidate(); var valueOnFirstCall = decorator.GetOrCreateValue(key, o => "Value2"); Assert.That(valueOnFirstCall, Is.EqualTo("Value2")); var valueOnSecondCall = decorator.GetOrCreateValue(key, o => { throw new InvalidOperationException(); }); Assert.That(valueOnSecondCall, Is.EqualTo("Value2")); }
public void GetOrCreateValue_WithValueInCache_ReturnsValue() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var key = new object(); cache.Add(key, "Value"); var value = decorator.GetOrCreateValue(key, o => { throw new InvalidOperationException(); }); Assert.That(value, Is.EqualTo("Value")); }
public void GetOrCreateValue_WithValueNotInCache_CreatedValue_ReturnsValue() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var key = new object(); var value = decorator.GetOrCreateValue(key, o => "Value"); Assert.That(value, Is.EqualTo("Value")); string cachedValue; cache.TryGetValue(key, out cachedValue); Assert.That(cachedValue, Is.EqualTo("Value")); }
public void GetOrCreateValue_AfterTokenWasInvalidated_CreatesNewValue_ReturnsValue() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var key = new object(); cache.Add(key, "Value1"); decorator.InvalidationToken.Invalidate(); var value = decorator.GetOrCreateValue(key, o => "Value2"); Assert.That(value, Is.EqualTo("Value2")); string cachedValue; cache.TryGetValue(key, out cachedValue); Assert.That(cachedValue, Is.EqualTo("Value2")); }