public void CloneWritesNotVisibleToOriginal() { var dictionary = new CopyOnWriteDictionary <string, string>(); dictionary["test"] = "1"; Assert.Equal("1", dictionary["test"]); var clone = dictionary.Clone(); var clone2 = dictionary.Clone(); Assert.True(dictionary.HasSameBacking(clone)); Assert.True(dictionary.HasSameBacking(clone2)); clone["test"] = "2"; Assert.False(dictionary.HasSameBacking(clone)); Assert.False(clone2.HasSameBacking(clone)); Assert.True(dictionary.HasSameBacking(clone2)); clone2["test"] = "3"; Assert.False(dictionary.HasSameBacking(clone2)); Assert.Equal("1", dictionary["test"]); Assert.Equal("2", clone["test"]); }
public void CloneWritesNotVisibleToOriginal() { var dictionary = new CopyOnWriteDictionary<string, string>(); dictionary["test"] = "1"; Assert.AreEqual(dictionary["test"], "1"); var clone = dictionary.Clone(); var clone2 = dictionary.Clone(); Assert.IsTrue(dictionary.HasSameBacking(clone)); Assert.IsTrue(dictionary.HasSameBacking(clone2)); clone["test"] = "2"; Assert.IsFalse(dictionary.HasSameBacking(clone)); Assert.IsFalse(clone2.HasSameBacking(clone)); Assert.IsTrue(dictionary.HasSameBacking(clone2)); clone2["test"] = "3"; Assert.IsFalse(dictionary.HasSameBacking(clone2)); Assert.AreEqual(dictionary["test"], "1"); Assert.AreEqual(clone["test"], "2"); }
public void OriginalWritesNotVisibleToClones() { var dictionary = new CopyOnWriteDictionary<string, string>(); dictionary["test"] = "1"; Assert.Equal(dictionary["test"], "1"); var clone = dictionary.Clone(); var clone2 = dictionary.Clone(); Assert.True(dictionary.HasSameBacking(clone)); Assert.True(dictionary.HasSameBacking(clone2)); dictionary["test"] = "2"; Assert.False(dictionary.HasSameBacking(clone)); Assert.False(dictionary.HasSameBacking(clone2)); Assert.True(clone.HasSameBacking(clone2)); Assert.Equal(clone["test"], "1"); Assert.Equal(clone2["test"], "1"); }