public void GetOrAdd_WithEmptyDictionary_ReturnsAddedObject() { LocalCache cache = new LocalCache(); TestStringObject resultString = cache.GetOrAdd(typeof(TestStringObject), () => new TestStringObject(TestString1), out bool wasAdded) as TestStringObject; Assert.Equal(TestString1, resultString.Value); Assert.True(wasAdded); }
public void AddOrUpdate_WithEmptyDictionary_ReturnsUpdatedObject() { FailOnErrors = false; LocalCache cache = new LocalCache(); TestStringObject resultString = cache.AddOrUpdate(typeof(TestStringObject), () => new TestStringObject(TestString1), out bool wasUpdated) as TestStringObject; Assert.Equal(TestString1, resultString.Value); Assert.True(wasUpdated); }
public void Get_WithExistingTypeParameter_ReturnsValue() { LocalCache cache = new LocalCache(); TestStringObject getOrAddResult = cache.GetOrAdd(typeof(TestStringObject), () => new TestStringObject(TestString1), out bool wasAdded) as TestStringObject; Assert.Equal(TestString1, getOrAddResult.Value); Assert.True(wasAdded); TestStringObject getResult = cache.Get(typeof(TestStringObject)) as TestStringObject; Assert.Equal(TestString1, getResult.Value); }
public void AddOrUpdate_WithRepeatedEntry_ReturnsSecondObject() { LocalCache cache = new LocalCache(); TestStringObject resultString1 = cache.GetOrAdd(typeof(TestStringObject), () => new TestStringObject(TestString1), out bool wasAdded) as TestStringObject; Assert.Equal(TestString1, resultString1.Value); Assert.True(wasAdded); TestStringObject resultString2 = cache.AddOrUpdate(typeof(TestStringObject), () => new TestStringObject(TestString2), out bool wasUpdated) as TestStringObject; Assert.Equal(resultString2.Value, TestString2); Assert.True(wasUpdated); }
public void GetOrAdd_WithRepeatedEntry_ReturnsFirstObject() { LocalCache cache = new LocalCache(); TestStringObject resultString1 = cache.GetOrAdd(typeof(TestStringObject), () => new TestStringObject(TestString1), out bool wasAdded) as TestStringObject; Assert.Equal(TestString1, resultString1.Value); Assert.True(wasAdded); TestStringObject resultString2 = cache.GetOrAdd(typeof(TestStringObject), () => new TestStringObject(TestString2), out wasAdded) as TestStringObject; Assert.Equal(TestString1, resultString2.Value); Assert.False(wasAdded); }
public void GetOrAdd_WithNonEmptyDictionary_ReturnsAddedObject() { LocalCache cache = new LocalCache(); TestIntegerObject resultInt = cache.GetOrAdd(typeof(TestIntegerObject), () => new TestIntegerObject(TestInteger), out bool wasAdded) as TestIntegerObject; Assert.Equal(TestInteger, resultInt.Value); Assert.True(wasAdded, "GetOrAdd added an entry to the cache."); TestStringObject resultString = cache.GetOrAdd(typeof(TestStringObject), () => new TestStringObject(TestString1), out wasAdded) as TestStringObject; Assert.Equal(TestString1, resultString.Value); Assert.True(wasAdded, "GetOrAdd added an entry to the cache."); }
public void AddOrUpdate_InParallelWithNonEmptyDictionary_ReturnsUpdatedObject() { FailOnErrors = false; LocalCache cache = new LocalCache(); Parallel.For(0, 10, i => { TestIntegerObject resultInt = cache.AddOrUpdate(typeof(TestIntegerObject), () => new TestIntegerObject(TestInteger), out bool wasUpdated) as TestIntegerObject; Assert.Equal(TestInteger, resultInt.Value); Assert.True(wasUpdated); TestStringObject resultString = cache.AddOrUpdate(typeof(TestStringObject), () => new TestStringObject(TestString1), out wasUpdated) as TestStringObject; Assert.Equal(TestString1, resultString.Value); Assert.True(wasUpdated); }); }
public void GetOrAdd_InParallelWithEmptyDictionary_ReturnsAddedObject() { LocalCache cache = new LocalCache(); int addCount = 0; Parallel.For(0, 10, i => { TestStringObject resultString = cache.GetOrAdd(typeof(TestStringObject), () => new TestStringObject(TestString1), out bool wasAdded) as TestStringObject; Assert.Equal(TestString1, resultString.Value); if (wasAdded) { Interlocked.Increment(ref addCount); } }); Assert.Equal(addCount, 1); }