public void ReadOperation_DelegatesToSourceDictionary_IfNoMutationsArePerformed()
    {
        // Arrange
        var values           = new List <object>();
        var enumerator       = Mock.Of <IEnumerator <KeyValuePair <string, object> > >();
        var sourceDictionary = new Mock <IDictionary <string, object> >(MockBehavior.Strict);

        sourceDictionary
        .SetupGet(d => d.Count)
        .Returns(100)
        .Verifiable();
        sourceDictionary
        .SetupGet(d => d.Values)
        .Returns(values)
        .Verifiable();
        sourceDictionary
        .Setup(d => d.ContainsKey("test-key"))
        .Returns(value: true)
        .Verifiable();
        sourceDictionary
        .Setup(d => d.GetEnumerator())
        .Returns(enumerator)
        .Verifiable();
        sourceDictionary
        .Setup(d => d["key2"])
        .Returns("key2-value")
        .Verifiable();
        object value;

        sourceDictionary.Setup(d => d.TryGetValue("different-key", out value))
        .Returns(false)
        .Verifiable();

        var copyOnWriteDictionary = new CopyOnWriteDictionary <string, object>(sourceDictionary.Object,
                                                                               StringComparer.OrdinalIgnoreCase);

        // Act and Assert
        Assert.Equal("key2-value", copyOnWriteDictionary["key2"]);
        Assert.Equal(100, copyOnWriteDictionary.Count);
        Assert.Same(values, copyOnWriteDictionary.Values);
        Assert.True(copyOnWriteDictionary.ContainsKey("test-key"));
        Assert.Same(enumerator, copyOnWriteDictionary.GetEnumerator());
        Assert.False(copyOnWriteDictionary.TryGetValue("different-key", out value));
        sourceDictionary.Verify();
    }
        public void ReadOperation_DelegatesToSourceDictionary_IfNoMutationsArePerformed()
        {
            // Arrange
            var values = new List<object>();
            var enumerator = Mock.Of<IEnumerator<KeyValuePair<string, object>>>();
            var sourceDictionary = new Mock<IDictionary<string, object>>(MockBehavior.Strict);
            sourceDictionary
                .SetupGet(d => d.Count)
                .Returns(100)
                .Verifiable();
            sourceDictionary
                .SetupGet(d => d.Values)
                .Returns(values)
                .Verifiable();
            sourceDictionary
                .Setup(d => d.ContainsKey("test-key"))
                .Returns(value: true)
                .Verifiable();
            sourceDictionary
                .Setup(d => d.GetEnumerator())
                .Returns(enumerator)
                .Verifiable();
            sourceDictionary
                .Setup(d => d["key2"])
                .Returns("key2-value")
                .Verifiable();
            object value;
            sourceDictionary.Setup(d => d.TryGetValue("different-key", out value))
                            .Returns(false)
                            .Verifiable();

            var copyOnWriteDictionary = new CopyOnWriteDictionary<string, object>(sourceDictionary.Object,
                                                                                  StringComparer.OrdinalIgnoreCase);

            // Act and Assert
            Assert.Equal("key2-value", copyOnWriteDictionary["key2"]);
            Assert.Equal(100, copyOnWriteDictionary.Count);
            Assert.Same(values, copyOnWriteDictionary.Values);
            Assert.True(copyOnWriteDictionary.ContainsKey("test-key"));
            Assert.Same(enumerator, copyOnWriteDictionary.GetEnumerator());
            Assert.False(copyOnWriteDictionary.TryGetValue("different-key", out value));
            sourceDictionary.Verify();
        }
Exemple #3
0
 /// <summary>
 /// Returns an enumerator that iterates through an AttributeStore.
 /// </summary>
 /// <returns>An IEnumerator object that can be used to iterate through the collection.</returns>
 public IEnumerator GetEnumerator()
 {
     return(_attributes.GetEnumerator());
 }