Ejemplo n.º 1
0
        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");
        }