示例#1
0
        public void ShouldPutEntriesFromMultiDictionary(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <int, string>();

            multiDictionary.PutAll(1, context.CollectionOf("E", "F"));
            multiDictionary.Put(3, "R");
            var anotherMultiDictionary = new ArrayListMultiDictionary <int, string>();

            anotherMultiDictionary.PutAll(1, Lists.AsList("A", "B", "C"));
            anotherMultiDictionary.PutAll(2, Lists.AsList("X", "Y", "Z"));
            anotherMultiDictionary.PutAll(3, Lists.AsList("Q", "W", "E"));

            // when
            multiDictionary.PutAll(anotherMultiDictionary);

            // then
            Check.That(multiDictionary.Count).IsEqualTo(12);
            Check.That(multiDictionary.Values).HasSize(12);
            Check.That(multiDictionary.Values).Contains(
                "A", "B", "C", "E", "F", "Q", "W", "E", "R", "X", "Y", "Z");
            Check.That(multiDictionary[1]).HasSize(5).And.Contains("A", "B", "C", "E", "F");
            Check.That(multiDictionary[2]).HasSize(3).And.Contains("X", "Y", "Z");
            Check.That(multiDictionary[3]).HasSize(4).And.Contains("Q", "W", "E", "R");
        }
示例#2
0
        public void ShouldReturnEntries(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <int, string>();

            multiDictionary.Put(1, "A");
            multiDictionary.Put(1, "B");
            multiDictionary.Put(1, "C");
            multiDictionary.Put(2, "A");
            multiDictionary.PutAll(3, Lists.AsList("X", "Y", "Z"));

            // when
            var entries = multiDictionary.Entries;

            // then
            Check.That(entries).HasSize(7);
            Check.That(entries).Contains(
                Dictionaries.Entry(1, "A"),
                Dictionaries.Entry(1, "B"),
                Dictionaries.Entry(1, "C"),
                Dictionaries.Entry(2, "A"),
                Dictionaries.Entry(3, "X"),
                Dictionaries.Entry(3, "Y"),
                Dictionaries.Entry(3, "Z"));
        }
示例#3
0
        public void RetunedCollectionsShouldNotAffectDictionary(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <int, string>();

            multiDictionary.PutAll(1, Lists.AsList("X", "Y", "Z"));
            multiDictionary.PutAll(2, Lists.AsList("A", "B"));
            var keys       = multiDictionary.Keys;
            var values     = multiDictionary.Values;
            var key1Values = multiDictionary.Get(1);
            var key2Values = multiDictionary[2];

            // when
            keys.Clear();
            values.Clear();
            key1Values.Remove("Y");
            key2Values.Remove("B");

            // then
            Check.That(multiDictionary.Keys).HasSize(2);
            Check.That(multiDictionary.Keys).Contains(1, 2);

            Check.That(multiDictionary.Values).HasSize(5);
            Check.That(multiDictionary.Values).Contains("X", "Y", "Z", "A", "B");

            Check.That(multiDictionary.Get(1)).ContainsExactly("X", "Y", "Z");
            Check.That(multiDictionary.Get(2)).ContainsExactly("A", "B");
        }
示例#4
0
        public void ShouldPutMultipleValuesForKey(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <int, string>();

            // when
            multiDictionary.Put(1, "A");
            multiDictionary.Put(1, "B");
            multiDictionary.Put(1, "C");
            multiDictionary.Put(2, "A");
            multiDictionary.PutAll(3, Lists.AsList("X", "Y", "Z"));

            // then
            Check.That(multiDictionary.Count).IsEqualTo(7);
            Check.That(multiDictionary.Values).HasSize(7);
            Check.That(multiDictionary.Values).Contains("A", "B", "C", "A", "X", "Y", "Z");

            Check.That(multiDictionary.Get(1)).ContainsExactly("A", "B", "C");
            Check.That(multiDictionary.ValuesCount(1)).IsEqualTo(3);

            Check.That(multiDictionary.Get(2)).ContainsExactly("A");
            Check.That(multiDictionary.ValuesCount(2)).IsEqualTo(1);

            Check.That(multiDictionary[3]).ContainsExactly("X", "Y", "Z");
            Check.That(multiDictionary.ValuesCount(3)).IsEqualTo(3);
        }
示例#5
0
        public void ShouldReturnEmptyListForNotExitingKey(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <int, string>();

            // when
            var notExistingKeyValues  = multiDictionary.Get(1);
            var notExistingKeyValues2 = multiDictionary[2];

            // then
            Check.That(notExistingKeyValues).IsEmpty();
            Check.That(notExistingKeyValues2).IsEmpty();
        }
示例#6
0
        public void ShouldReplaceKeyValues(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <string, int>();

            multiDictionary.PutAll("A", Lists.AsList(1, 2, 3, 4));

            // when
            var replaced = multiDictionary.ReplaceValues("A", Lists.AsList(5, 6));

            // when
            Check.That(multiDictionary.Count).IsEqualTo(2);
            Check.That(replaced).ContainsExactly(1, 2, 3, 4);
            Check.That(multiDictionary.Get("A")).ContainsExactly(5, 6);
        }
示例#7
0
        public void ShouldRemoveDictionaryKeyWhenAllValuesRemoved(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <string, int>();

            multiDictionary.PutAll("A", Lists.AsList(1, 2));

            // when
            multiDictionary.Remove("A", 1);
            multiDictionary.Remove("A", 2);

            // then
            Check.That(multiDictionary.Count).IsEqualTo(0);
            Check.That(multiDictionary.Keys).IsEmpty();
            Check.That(multiDictionary.Values).IsEmpty();
            Check.That(multiDictionary["A"]).IsEmpty();
        }
示例#8
0
        public void ShouldClearMultiDictionary(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <string, string>();

            multiDictionary.PutAll("A", Lists.AsList("A1", "A2", "A3"));
            multiDictionary.Put("B", "B1");
            multiDictionary.Put("C", "C1");

            // when
            multiDictionary.Clear();

            // then
            Check.That(multiDictionary.Count).IsEqualTo(0);
            Check.That(multiDictionary.Values).IsEmpty();
            Check.That(multiDictionary.Keys).IsEmpty();
            Check.That(multiDictionary.IsEmpty).IsTrue();
        }
示例#9
0
        public void ShouldConvertMultiDictionaryToDictionary(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <string, string>();

            multiDictionary.PutAll("A", Lists.AsList("A1", "A2", "A3"));
            multiDictionary.Put("B", "B1");
            multiDictionary.Put("C", "C1");

            // when
            var dictionary = multiDictionary.ToDictionary();

            // then
            Check.That(Objects.Equal(dictionary, Dictionaries.Create(
                                         "A", context.CollectionOf("A1", "A2", "A3"),
                                         "B", context.CollectionOf("B1"),
                                         "C", context.CollectionOf("C1"))))
            .IsTrue();
        }
示例#10
0
        public void ShouldPutEntriesFromDictionary(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <int, string>();

            multiDictionary.Put(1, "B");
            var dictionary = Dictionaries.Create(1, "A", 2, "B", 3, "C");

            // when
            multiDictionary.PutAll(dictionary);

            // then
            Check.That(multiDictionary.Count).IsEqualTo(4);
            Check.That(multiDictionary.Values).HasSize(4);
            Check.That(multiDictionary.Values).Contains("A", "B", "B", "C");
            Check.That(multiDictionary[1]).HasSize(2);
            Check.That(multiDictionary[1]).Contains("A", "B");
            Check.That(multiDictionary[2]).ContainsExactly("B");
            Check.That(multiDictionary[3]).ContainsExactly("C");
        }
示例#11
0
        public void ShouldRemoveDictionaryEntry(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <string, int>();

            multiDictionary.PutAll("A", Lists.AsList(1, 2, 3, 4));

            // when
            var removed1 = multiDictionary.Remove("A", 3);
            var removed2 = multiDictionary.Remove("B", 1);
            var removed3 = multiDictionary.Remove("A", 5);

            // then
            Check.That(removed1).IsTrue();
            Check.That(removed2).IsFalse();
            Check.That(removed3).IsFalse();

            Check.That(multiDictionary.Count).IsEqualTo(3);
            Check.That(multiDictionary.Get("A")).ContainsExactly(1, 2, 4);
        }
示例#12
0
        public void ShouldRemoveDictionaryKey(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <string, int>();

            multiDictionary.PutAll("A", context.CollectionOf(1, 2));
            multiDictionary.Put("B", 1);

            // when
            var removedA = multiDictionary.Remove("A");
            var removedC = multiDictionary.Remove("C");

            // then
            Check.That(removedA).IsTrue();
            Check.That(removedC).IsFalse();

            Check.That(multiDictionary.Count).IsEqualTo(1);
            Check.That(multiDictionary.Values).HasSize(1);
            Check.That(multiDictionary.Values).Contains(1);
            Check.That(multiDictionary.Keys).HasSize(1);
            Check.That(multiDictionary.Keys).Contains("B");
        }
示例#13
0
        public void ShouldReturnMultiEntries(MultiDictionaryContext context)
        {
            // given
            var multiDictionary = context.Create <int, string>();

            multiDictionary.Put(1, "A");
            multiDictionary.Put(1, "B");
            multiDictionary.Put(1, "C");
            multiDictionary.Put(2, "A");
            multiDictionary.PutAll(3, Lists.AsList("X", "Y", "Z"));

            // when
            var entries = multiDictionary.MultiEntries;

            // then
            Check.That(entries).HasSize(3);
            var entry1 = entries.First(entry => entry.Key == 1);
            var entry2 = entries.First(entry => entry.Key == 2);
            var entry3 = entries.First(entry => entry.Key == 3);

            Check.That(entry1.Value).IsEqualTo(context.CollectionOf("A", "B", "C"));
            Check.That(entry2.Value).IsEqualTo(context.CollectionOf("A"));
            Check.That(entry3.Value).IsEqualTo(context.CollectionOf("X", "Y", "Z"));
        }