/// <summary> /// Converts dictionary to LinkedListMultiDictionary. /// </summary> /// <typeparam name="TKey">Type of dictionary key</typeparam> /// <typeparam name="TValue">Type of dictionary value</typeparam> /// <param name="source">this</param> /// <returns>LinkedListMultiDictionary</returns> public static LinkedListMultiDictionary <TKey, TValue> ToLinkedListMultiDictionary <TKey, TValue>( this IReadOnlyDictionary <TKey, TValue> source) { Preconditions.IsNotNull(source, () => new ArgumentNullException("source")); var result = new LinkedListMultiDictionary <TKey, TValue>(); result.PutAll(source); return(result); }
public void ShouldAllowDuplicatedValuesForKey() { // given var multiDictionary = new LinkedListMultiDictionary <int, string>(); // when multiDictionary.Put(1, "A"); multiDictionary.Put(1, "A"); multiDictionary.PutAll(2, Lists.AsList("A", "B", "B")); // then Check.That(multiDictionary.Count).IsEqualTo(5); Check.That(multiDictionary.Values).ContainsExactly("A", "A", "A", "B", "B"); Check.That(multiDictionary[1]).ContainsExactly("A", "A"); Check.That(multiDictionary[1]).IsInstanceOf <LinkedList <string> >(); Check.That(multiDictionary[2]).ContainsExactly("A", "B", "B"); Check.That(multiDictionary[2]).IsInstanceOf <LinkedList <string> >(); }
public void ShouldConvertMultiDictionaryToDictionaryWithLinkedLists() { // given var multiDictionary = new LinkedListMultiDictionary <int, string>(); multiDictionary.Put(1, "A"); multiDictionary.Put(2, "B"); multiDictionary.PutAll(3, Lists.AsList("A", "B", "C", "C")); // when var dictionary = multiDictionary.ToDictionary(); // then Check.That(dictionary[1]).IsInstanceOf <LinkedList <string> >() .And.ContainsExactly("A"); Check.That(dictionary[2]).IsInstanceOf <LinkedList <string> >() .And.ContainsExactly("B"); Check.That(dictionary[3]).IsInstanceOf <LinkedList <string> >() .And.ContainsExactly("A", "B", "C", "C"); }