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); }
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); }
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); }