예제 #1
0
        public static void Remove_CustomComparerTest()
        {
            ObservableStringComparer comparer = new ObservableStringComparer();
            ListDictionary           ld       = Fill(new ListDictionary(comparer), s_dictionaryData);

            Assert.All(s_dictionaryData.Reverse(), element =>
            {
                int originalSize = ld.Count;
                Assert.True(ld.Contains(element.Key));
                // Removing items in reverse order, so iterates over everything.
                comparer.AssertCompared(originalSize, () => ld.Remove(element.Key));
                Assert.False(ld.Contains(element.Key));
            });
            Assert.Equal(0, ld.Count);
        }
예제 #2
0
        public static void Set_CustomComparerTest()
        {
            ObservableStringComparer comparer = new ObservableStringComparer();
            ListDictionary           ld       = Fill(new ListDictionary(comparer), s_dictionaryData);

            int visited = s_dictionaryData.Length;

            Assert.All(s_dictionaryData.Reverse(), element =>
            {
                string newValue = "new" + element.Value;
                Assert.True(ld.Contains(element.Key));
                // Removing items in reverse order, so iterates over everything ahead of the key.
                comparer.AssertCompared(visited--, () => ld[element.Key] = newValue);
                Assert.True(ld.Contains(element.Key));
                Assert.Equal(newValue, ld[element.Key]);
            });
        }
예제 #3
0
        public static void Add_CustomComparerTest(bool addViaSet)
        {
            ObservableStringComparer comparer = new ObservableStringComparer();
            ListDictionary           added    = new ListDictionary(comparer);

            for (int i = 0; i < s_dictionaryData.Length; i++)
            {
                string key   = s_dictionaryData[i].Key;
                string value = s_dictionaryData[i].Value;

                Assert.Equal(i, added.Count);
                comparer.AssertCompared(i, () => Assert.Null(added[key]));
                comparer.AssertCompared(i, () => Assert.False(added.Contains(key)));

                // comparer is called for each element in sequence during add.
                comparer.AssertCompared(i, () => added.Add(addViaSet, key, value));
                comparer.AssertCompared(i + 1, () => Assert.Equal(value, added[key]));
                comparer.AssertCompared(i + 1, () => Assert.True(added.Contains(key)));
                Assert.Equal(i + 1, added.Count);
                comparer.AssertCompared(i + 1, () => AssertExtensions.Throws <ArgumentException>(null, () => added.Add(key, "duplicate")));
            }
            Assert.Equal(s_dictionaryData.Length, added.Count);

            // Because the dictionary maintains insertion order, "add"-ing an already-present element only iterates
            // until the initial key is reached.
            int    middleIndex = s_dictionaryData.Length / 2;
            string middleKey   = s_dictionaryData[middleIndex].Key;
            string middleValue = s_dictionaryData[middleIndex].Value;

            Assert.Equal(middleValue, added[middleKey]);
            Assert.True(added.Contains(middleKey));
            // Index is 0-based, count is 1-based
            //  ... Add throws exception
            comparer.AssertCompared(middleIndex + 1, () => AssertExtensions.Throws <ArgumentException>(null, () => added.Add(middleKey, "middleValue")));
            Assert.Equal(middleValue, added[middleKey]);
            Assert.True(added.Contains(middleKey));
        }
예제 #4
0
        public static void Add_CustomComparerTest(bool addViaSet)
        {
            ObservableStringComparer comparer = new ObservableStringComparer();
            ListDictionary added = new ListDictionary(comparer);

            for (int i = 0; i < s_dictionaryData.Length; i++)
            {
                string key = s_dictionaryData[i].Key;
                string value = s_dictionaryData[i].Value;

                Assert.Equal(i, added.Count);
                comparer.AssertCompared(i, () => Assert.Null(added[key]));
                comparer.AssertCompared(i, () => Assert.False(added.Contains(key)));

                // comparer is called for each element in sequence during add.
                comparer.AssertCompared(i, () => added.Add(addViaSet, key, value));
                comparer.AssertCompared(i + 1, () => Assert.Equal(value, added[key]));
                comparer.AssertCompared(i + 1, () => Assert.True(added.Contains(key)));
                Assert.Equal(i + 1, added.Count);
                comparer.AssertCompared(i + 1, () => Assert.Throws<ArgumentException>(() => added.Add(key, "duplicate")));
            }
            Assert.Equal(s_dictionaryData.Length, added.Count);

            // Because the dictionary maintains insertion order, "add"-ing an already-present element only iterates
            // until the initial key is reached.
            int middleIndex = s_dictionaryData.Length / 2;
            string middleKey = s_dictionaryData[middleIndex].Key;
            string middleValue = s_dictionaryData[middleIndex].Value;

            Assert.Equal(middleValue, added[middleKey]);
            Assert.True(added.Contains(middleKey));
            // Index is 0-based, count is 1-based
            //  ... Add throws exception
            comparer.AssertCompared(middleIndex + 1, () => Assert.Throws<ArgumentException>(() => added.Add(middleKey, "middleValue")));
            Assert.Equal(middleValue, added[middleKey]);
            Assert.True(added.Contains(middleKey));
        }
예제 #5
0
        public static void Remove_CustomComparerTest()
        {
            ObservableStringComparer comparer = new ObservableStringComparer();
            ListDictionary ld = Fill(new ListDictionary(comparer), s_dictionaryData);

            Assert.All(s_dictionaryData.Reverse(), element =>
            {
                int originalSize = ld.Count;
                Assert.True(ld.Contains(element.Key));
                // Removing items in reverse order, so iterates over everything.
                comparer.AssertCompared(originalSize, () => ld.Remove(element.Key));
                Assert.False(ld.Contains(element.Key));
            });
            Assert.Equal(0, ld.Count);
        }
예제 #6
0
        public static void Set_CustomComparerTest()
        {
            ObservableStringComparer comparer = new ObservableStringComparer();
            ListDictionary ld = Fill(new ListDictionary(comparer), s_dictionaryData);

            int visited = s_dictionaryData.Length;

            Assert.All(s_dictionaryData.Reverse(), element =>
            {
                string newValue = "new" + element.Value;
                Assert.True(ld.Contains(element.Key));
                // Removing items in reverse order, so iterates over everything ahead of the key.
                comparer.AssertCompared(visited--, () => ld[element.Key] = newValue);
                Assert.True(ld.Contains(element.Key));
                Assert.Equal(newValue, ld[element.Key]);
            });
        }