コード例 #1
0
        public void Test_ConcurrentObservableSortedDictionary_Clear()
        {
            var initial    = Enumerable.Range(0, 100).Select(x => new KeyValuePair <int, int>(x, x));
            var collection = new ConcurrentObservableSortedDictionary <int, int>();

            collection.AddRange(initial);
            Assert.AreEqual(100, collection.Count);

            // Record all the collection changed events
            List <(object, NotifyCollectionChangedEventArgs)> returnedList = new List <(object, NotifyCollectionChangedEventArgs)>();

            collection.CollectionChanged += (s, e) => returnedList.Add((s, e));

            collection.Clear();

            // Check just one collection changed event was fired
            Assert.AreEqual(1, returnedList.Count);
            (var returnedObject, var returnedArgs) = returnedList[0];

            Assert.AreEqual(0, collection.Count);

            Assert.AreEqual(returnedObject, collection);
            Assert.AreEqual(NotifyCollectionChangedAction.Remove, returnedArgs.Action);

            Assert.IsNull(returnedArgs.NewItems);

            Assert.IsNotNull(returnedArgs.OldItems);
            Assert.AreEqual(initial.Count(), returnedArgs.OldItems.Count);
            Assert.IsTrue(initial.Zip(returnedArgs.OldItems.OfType <KeyValuePair <int, int> >(), (a, b) => a.Key == b.Key && a.Value == b.Value).All(c => c));
        }
コード例 #2
0
        public void Test_ConcurrentObservableSortedDictionary_RemoveRange_ByItems_IEnumerable()
        {
            var initial    = Enumerable.Range(0, 100).Select(x => new KeyValuePair <int, int>(x, x));
            var toRemove   = Enumerable.Range(1, 40).Select(x => x * 2);
            var collection = new ConcurrentObservableSortedDictionary <int, int>();

            collection.AddRange(initial);
            Assert.AreEqual(100, collection.Count);

            // Record all the collection changed events
            List <(object, NotifyCollectionChangedEventArgs)> returnedList = new List <(object, NotifyCollectionChangedEventArgs)>();

            collection.CollectionChanged += (s, e) => returnedList.Add((s, e));

            collection.RemoveRange(toRemove);

            // Check just one collection changed event was fired
            Assert.AreEqual(1, returnedList.Count);
            (var returnedObject, var returnedArgs) = returnedList[0];

            Assert.IsNotNull(returnedObject);
            Assert.IsNotNull(returnedArgs);

            Assert.AreEqual(returnedObject, collection);
            Assert.AreEqual(NotifyCollectionChangedAction.Remove, returnedArgs.Action);
            Assert.AreEqual(-1, returnedArgs.OldStartingIndex);
            Assert.IsNull(returnedArgs.NewItems);
            Assert.IsNotNull(returnedArgs.OldItems);
            Assert.AreEqual(toRemove.Count(), returnedArgs.OldItems.Count);
            Assert.IsTrue(CollectionsAreEqual(toRemove, returnedArgs.OldItems));
        }
コード例 #3
0
        public void Test_ConcurrentObservableSortedDictionary_AddRange_Dictionary()
        {
            var toAdd      = Enumerable.Range(0, 100).Select(x => new KeyValuePair <int, int>(x, x)).ToDictionary(x => x.Key, x => x.Value);
            var collection = new ConcurrentObservableSortedDictionary <int, int>();

            // Record all the collection changed events
            List <(object, NotifyCollectionChangedEventArgs)> returnedList = new List <(object, NotifyCollectionChangedEventArgs)>();

            collection.CollectionChanged += (s, e) => returnedList.Add((s, e));

            collection.AddRange(toAdd);

            // Check just one collection changed event was fired
            Assert.AreEqual(1, returnedList.Count);
            (var returnedObject, var returnedArgs) = returnedList[0];

            Assert.AreEqual(returnedObject, collection);
            Assert.AreEqual(returnedArgs.Action, NotifyCollectionChangedAction.Add);
            Assert.IsNotNull(returnedArgs.NewItems);
            Assert.IsNull(returnedArgs.OldItems);
            Assert.AreEqual(toAdd.Count(), returnedArgs.NewItems.Count);
            Assert.IsTrue(CollectionsAreEqual(toAdd, returnedArgs.NewItems));
        }