public void MultiValueDictionaryClearTest()
        {
            MultiValueDictionary <Int32, String> dictionary = new MultiValueDictionary <Int32, String>();

            foreach (KeyValuePair <Int32, List <String> > item in _items)
            {
                dictionary.Add(item.Key, item.Value);
            }

            Assert.AreEqual(10, dictionary.Count());

            dictionary.Clear();
            Assert.AreEqual(0, dictionary.Count());
        }
        public void MultiValueDictionaryConstructorTest()
        {
            // No parameters

            MultiValueDictionary <Int32, String> dictionary = new MultiValueDictionary <Int32, String>();

            Assert.AreEqual(0, dictionary.Count());
            Assert.AreEqual(false, dictionary.IsReadOnly);

            // Comparer parameter

            dictionary = new MultiValueDictionary <Int32, String>(EqualityComparer <Int32> .Default);
            Assert.AreEqual(0, dictionary.Count());
            Assert.AreEqual(false, dictionary.IsReadOnly);

            // Copy constructor

            dictionary.Add(1, "one");
            MultiValueDictionary <Int32, String> secondDictionary = new MultiValueDictionary <Int32, String>(dictionary);

            Assert.AreEqual(1, secondDictionary.Count);
            Assert.AreEqual(new List <String> {
                "one"
            }, secondDictionary[1]);
            Assert.AreEqual(false, dictionary.IsReadOnly);

            // Copy constructor with comparer parameter

            secondDictionary = new MultiValueDictionary <Int32, String>(dictionary, EqualityComparer <Int32> .Default);
            Assert.AreEqual(1, secondDictionary.Count);
            Assert.AreEqual(new List <String> {
                "one"
            }, secondDictionary[1]);
            Assert.AreEqual(false, dictionary.IsReadOnly);
        }
Example #3
0
        public virtual void EmptyTests()
        {
            var key   = NextKey();
            var empty = new MultiValueDictionary <TKey, TValue>();
            var xvs   = new List <TValue>();

            Assert.False(empty.ContainsKey(key));
            Assert.False(empty.TryGetValue(key, out var _));
            Assert.False(empty.TryGetValues(key, out var arr));
            Assert.Null(arr);
            Assert.False(empty.TryGetValues(key, xvs));
            Assert.Empty(xvs);
            var count = empty.Count;

            Assert.Equal(0, count);
            count = empty.Count();
            Assert.Equal(0, count);
            Assert.Empty(empty.Keys);
            Assert.Equal(0, empty.Remove(key));
            Assert.False(((ICollection <KeyValuePair <TKey, TValue> >)empty).Remove(new KeyValuePair <TKey, TValue>(key, default(TValue))));
            Assert.False(((ICollection <KeyValuePair <TKey, TValue> >)empty).IsReadOnly);
        }
Example #4
0
        public virtual void BasicOperationsTest()
        {
            var    data    = new MultiValueDictionary <TKey, TValue>();
            var    key0    = NextKey();
            var    key1    = NextKey();
            var    value00 = NextValue();
            var    value01 = NextValue();
            var    value10 = NextValue();
            var    value11 = NextValue();
            TValue v;

            TValue[] vs;
            var      xvs = new List <TValue>();

            // single key, single value
            data.Add(key0, value00);
            Assert.True(data.ContainsKey(key0));
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value00)));
            Assert.False(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value01)));
            Assert.True(data.TryGetValue(key0, out v));
            Assert.Equal(value00, v);
            Assert.True(data.TryGetValues(key0, out vs));
            Assert.NotNull(vs);
            Assert.Single(vs, v);
            xvs.Clear();
            Assert.True(data.TryGetValues(key0, xvs));
            Assert.Single(xvs, v);
            var count = data.Count;

            Assert.Equal(1, count);
            count = data.Count();
            Assert.Equal(1, count);
            Assert.Single(data.Keys, key0);
            data.Clear();
            Assert.Empty(data);
            // single key, two values (added separately)
            data.Add(key0, value00);
            data.Add(key0, value01);
            Assert.True(data.ContainsKey(key0));
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value00)));
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value01)));
            Assert.True(data.TryGetValue(key0, out v));
            Assert.True(EqualityComparer <TValue> .Default.Equals(value00, v) || EqualityComparer <TValue> .Default.Equals(value01, v));
            Assert.True(data.TryGetValues(key0, out vs));
            Assert.NotNull(vs);
            Assert.True(HashSet <TValue> .CreateSetComparer().Equals(new HashSet <TValue>(vs), new HashSet <TValue> {
                value00, value01
            }));
            xvs.Clear();
            Assert.True(data.TryGetValues(key0, xvs));
            count = xvs.Count;
            Assert.Equal(2, count);
            Assert.Contains(value00, xvs);
            Assert.Contains(value01, xvs);
            count = data.Count;
            Assert.Equal(2, count);
            count = data.Count();
            Assert.Equal(2, count);
            Assert.Single(data.Keys, key0);
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Remove(new KeyValuePair <TKey, TValue>(key0, value00)));
            count = data.Count;
            Assert.Equal(1, count);
            count = data.Count();
            Assert.Equal(1, count);
            data.Add(key0, value00);
            Assert.Equal(2, data.Remove(key0));
            Assert.Empty(data);
            // single key, two values (added as enumerable)
            data.Add(key0, value00, value01);
            Assert.True(data.ContainsKey(key0));
            Assert.True(data.TryGetValue(key0, out v));
            Assert.True(EqualityComparer <TValue> .Default.Equals(value00, v) || EqualityComparer <TValue> .Default.Equals(value01, v));
            Assert.True(data.TryGetValues(key0, out vs));
            Assert.NotNull(vs);
            Assert.True(HashSet <TValue> .CreateSetComparer().Equals(new HashSet <TValue>(vs), new HashSet <TValue> {
                value00, value01
            }));
            count = data.Count;
            Assert.Equal(2, count);
            count = data.Count();
            Assert.Equal(2, count);
            Assert.Single(data.Keys, key0);
            data.Set(key0, value01);
            count = data.Count;
            Assert.Equal(1, count);
            count = data.Count();
            Assert.Equal(1, count);
            data.Set(key0, value00, value01);
            Assert.Equal(2, data.Remove(key0));
            Assert.Empty(data);
            // single key, two values (added as keyvalue pairs)
            ((ICollection <KeyValuePair <TKey, TValue> >)data).Add(new KeyValuePair <TKey, TValue>(key0, value00));
            ((ICollection <KeyValuePair <TKey, TValue> >)data).Add(new KeyValuePair <TKey, TValue>(key0, value01));
            Assert.True(data.ContainsKey(key0));
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value00)));
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value01)));
            Assert.True(data.TryGetValue(key0, out v));
            Assert.True(EqualityComparer <TValue> .Default.Equals(value00, v) || EqualityComparer <TValue> .Default.Equals(value01, v));
            Assert.True(data.TryGetValues(key0, out vs));
            Assert.NotNull(vs);
            Assert.True(HashSet <TValue> .CreateSetComparer().Equals(new HashSet <TValue>(vs), new HashSet <TValue> {
                value00, value01
            }));
            count = data.Count;
            Assert.Equal(2, count);
            count = data.Count();
            Assert.Equal(2, count);
            Assert.Single(data.Keys, key0);
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Remove(new KeyValuePair <TKey, TValue>(key0, value00)));
            count = data.Count;
            Assert.Equal(1, count);
            count = data.Count();
            Assert.Equal(1, count);
            data.Add(key0, value00);
            Assert.Equal(2, data.Remove(key0));
            Assert.Empty(data);
            // two keys, two values (added separately)
            data.Add(key0, value00);
            data.Add(key0, value01);
            data.Add(key1, value10);
            data.Add(key1, value11);
            Assert.True(data.ContainsKey(key0));
            Assert.True(data.ContainsKey(key1));
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value00)));
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value01)));
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key1, value10)));
            Assert.True(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key1, value11)));
            Assert.False(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key1, value00)));
            Assert.False(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key1, value01)));
            Assert.False(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value10)));
            Assert.False(((ICollection <KeyValuePair <TKey, TValue> >)data).Contains(new KeyValuePair <TKey, TValue>(key0, value11)));
            Assert.True(data.TryGetValue(key0, out v));
            Assert.True(EqualityComparer <TValue> .Default.Equals(value00, v) || EqualityComparer <TValue> .Default.Equals(value01, v));
            Assert.True(data.TryGetValues(key0, out vs));
            Assert.NotNull(vs);
            Assert.True(HashSet <TValue> .CreateSetComparer().Equals(new HashSet <TValue>(vs), new HashSet <TValue> {
                value00, value01
            }));
            xvs.Clear();
            Assert.True(data.TryGetValues(key0, xvs));
            count = xvs.Count;
            Assert.Equal(2, count);
            Assert.Contains(value00, xvs);
            Assert.Contains(value01, xvs);
            Assert.True(data.TryGetValue(key1, out v));
            Assert.True(EqualityComparer <TValue> .Default.Equals(value10, v) || EqualityComparer <TValue> .Default.Equals(value11, v));
            Assert.True(data.TryGetValues(key1, out vs));
            Assert.NotNull(vs);
            Assert.True(HashSet <TValue> .CreateSetComparer().Equals(new HashSet <TValue>(vs), new HashSet <TValue> {
                value10, value11
            }));
            xvs.Clear();
            Assert.True(data.TryGetValues(key1, xvs));
            count = xvs.Count;
            Assert.Equal(2, count);
            Assert.Contains(value10, xvs);
            Assert.Contains(value11, xvs);
            count = data.Count;
            Assert.Equal(4, count);
            count = data.Count();
            Assert.Equal(4, count);
            Assert.True(HashSet <TKey> .CreateSetComparer().Equals(new HashSet <TKey>(data.Keys), new HashSet <TKey> {
                key0, key1
            }));
            count = data.Keys.Count();
            Assert.Equal(2, count);
            Assert.Equal(2, data.Remove(key0));
            count = data.Count;
            Assert.Equal(2, count);
            count = data.Count();
            Assert.Equal(2, count);
            data.Clear();
            Assert.Empty(data);
        }