public void IsNull_WithNullCache_ReturnsTrue() { var cache = new NullCache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); Assert.That(((ICache <object, string>)decorator).IsNull, Is.True); }
public void Serializable() { var cache = new Cache <object, string>(); var invalidationTokenBasedCacheDecorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var deserializedInstance = Serializer.SerializeAndDeserialize(invalidationTokenBasedCacheDecorator); Assert.That(deserializedInstance, Is.Not.SameAs(invalidationTokenBasedCacheDecorator)); Assert.That(deserializedInstance.InvalidationToken, Is.Not.SameAs(invalidationTokenBasedCacheDecorator.InvalidationToken)); }
public void Clear_DoesNotInvalidateToken() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var revision = decorator.InvalidationToken.GetCurrent(); ((ICache <object, string>)decorator).Clear(); Assert.That(decorator.InvalidationToken.IsCurrent(revision), Is.True); }
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 TryGetValue_WithValueNotInCache_ReturnsFalse() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var key = new object(); string value; var result = decorator.TryGetValue(key, out value); Assert.That(result, Is.False); Assert.That(value, Is.Null); }
public void TryGetValue_WithValueInCache_ReturnsTrueAndSetsOutValue() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var key = new object(); cache.Add(key, "Value"); string value; var result = decorator.TryGetValue(key, out value); Assert.That(result, Is.True); 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 Clear_ClearsInnerCache() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var key = new object(); cache.Add(key, "Value"); ((ICache <object, string>)decorator).Clear(); string cachedValue; bool cachedResult = cache.TryGetValue(key, out cachedValue); Assert.That(cachedResult, Is.False); }
public void GetEnumerator_NonGeneric_AfterTokenWasInvalidated_ReturnsEmptySequence() { var cache = new Cache <string, object>(); object exptected1 = new object(); object exptected2 = new object(); cache.Add("key1", exptected1); cache.Add("key2", exptected2); var decorated = new InvalidationTokenBasedCacheDecorator <string, object> (cache, InvalidationToken.Create()); decorated.InvalidationToken.Invalidate(); Assert.That(decorated.ToNonGenericEnumerable().Cast <KeyValuePair <string, object> >(), Is.Empty); }
public void Clear_RefreshesRevision() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); decorator.InvalidationToken.Invalidate(); ((ICache <object, string>)decorator).Clear(); var key = new object(); cache.Add(key, "Value"); string value; var result = decorator.TryGetValue(key, out value); Assert.That(result, Is.True); Assert.That(value, Is.EqualTo("Value")); }
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_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")); }
public void GetEnumerator_NonGeneric_ReturnsItemsFromCache() { var cache = new Cache <string, object>(); var decorator = new InvalidationTokenBasedCacheDecorator <string, object> (cache, InvalidationToken.Create()); object exptected1 = new object(); object exptected2 = new object(); cache.Add("key1", exptected1); cache.Add("key2", exptected2); Assert.That( decorator.ToNonGenericEnumerable(), Is.EquivalentTo( new[] { new KeyValuePair <string, object> ("key1", exptected1), new KeyValuePair <string, object> ("key2", exptected2) } )); }
public void TryGetValue_AfterTokenWasInvalidated_ReturnsFalse() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var key = new object(); cache.Add(key, "Value"); decorator.InvalidationToken.Invalidate(); string value; var result = decorator.TryGetValue(key, out value); Assert.That(result, Is.False); Assert.That(value, Is.Null); string cachedValue; bool cachedResult = cache.TryGetValue(key, out cachedValue); Assert.That(cachedResult, Is.False); }
public void TryGetValue_AfterTokenWasInvalidated_RefreshesRevision_ReturnsFalse() { var cache = new Cache <object, string>(); var decorator = new InvalidationTokenBasedCacheDecorator <object, string> (cache, InvalidationToken.Create()); var key = new object(); decorator.InvalidationToken.Invalidate(); cache.Add(key, "Value"); string valueOnFirstCall; var resultOnFirstCall = decorator.TryGetValue(key, out valueOnFirstCall); Assert.That(resultOnFirstCall, Is.False); Assert.That(valueOnFirstCall, Is.Null); cache.Add(key, "Value2"); string valueOnSecondCall; var resultOnSecondCall = decorator.TryGetValue(key, out valueOnSecondCall); Assert.That(resultOnSecondCall, Is.True); Assert.That(valueOnSecondCall, Is.EqualTo("Value2")); }