public void TryGetValue_OnExistingKey_YieldsCorrectValue()
        {
            var dict = new ConcurrentDataDictionary <string, string>(InitialData);

            dict.TryGetValue(InitialExistingKey, out var value);
            Assert.AreEqual(InitialExistingValue, value);
        }
        public void ConstructorWithComparer_AppliesComparer()
        {
            var dict = new ConcurrentDataDictionary <string, string>(StringComparer.OrdinalIgnoreCase);

            dict.TryAdd(InitialExistingKey, InitialExistingValue);
            Assert.IsTrue(dict.TryGetValue(InitialExistingKeyWithDifferentCasing, out _));
        }
        public void IDictionary_Add_OnNonExistingKeyAndNullValue_DoesNotAdd()
        {
            IDictionary <string, string> dict = new ConcurrentDataDictionary <string, string>(InitialData);

            dict.Add(InitialNonExistingKey, null);
            Assert.IsFalse(dict.TryGetValue(InitialNonExistingKey, out _));
        }
        public void TryGetValue_OnNullKey_ThrowsArgumentNullException()
        {
            var dict = new ConcurrentDataDictionary <string, string>();

            Assert.Throws <ArgumentNullException>(
                () => dict.TryGetValue(null, out _));
        }
        public void ICollection_Add_OnNonExistingKeyAndNullValue_DoesNotAdd()
        {
            var dict = new ConcurrentDataDictionary <string, string>();
            ICollection <KeyValuePair <string, string> > collection = dict;

            collection.Add(new KeyValuePair <string, string>(InitialNonExistingKey, null));
            Assert.IsFalse(dict.TryGetValue(InitialNonExistingKey, out _));
        }
        public void ICollection_Remove_OnExistingKeyValuePair_RemovesKey()
        {
            var dict = new ConcurrentDataDictionary <string, string>(InitialData);
            ICollection <KeyValuePair <string, string> > collection = dict;
            var kvp = new KeyValuePair <string, string>(InitialExistingKey, InitialExistingValue);

            collection.Remove(kvp);
            Assert.IsFalse(dict.TryGetValue(InitialExistingKey, out _));
        }
        public void SetItem_OnExistingKeyAndNullValue_RemovesKey()
        {
            var dict = new ConcurrentDataDictionary <string, string>(InitialData)
            {
                [InitialExistingKey] = null,
            };

            Assert.IsFalse(dict.TryGetValue(InitialExistingKey, out _));
        }
        public void ConstructorWithCollection_DoesNotCopyNullValues()
        {
            var dict = new ConcurrentDataDictionary <string, string>(InitialData);

            Assert.IsFalse(dict.TryGetValue(InitialKeyWithNullValue, out _));
        }
        public void TryGetValue_OnNonExistingKey_ReturnsFalse()
        {
            var dict = new ConcurrentDataDictionary <string, string>(InitialData);

            Assert.IsFalse(dict.TryGetValue(InitialNonExistingKey, out _));
        }
        public void ConstructorWithConcurrencyLevelCollectionAndComparer_AppliesComparer()
        {
            var dict = new ConcurrentDataDictionary <string, string>(4, InitialData, StringComparer.InvariantCultureIgnoreCase);

            Assert.IsTrue(dict.TryGetValue(InitialExistingKeyWithDifferentCasing, out _));
        }
        public void ConstructorWithConcurrencyLevelCollectionAndComparer_DoesNotCopyNullValues()
        {
            var dict = new ConcurrentDataDictionary <string, string>(4, InitialData, StringComparer.InvariantCultureIgnoreCase);

            Assert.IsFalse(dict.TryGetValue(InitialKeyWithNullValue, out _));
        }