Beispiel #1
0
        public void ResetTest()
        {
            ConcurrentObservableSortedCollection <int> subject = new ConcurrentObservableSortedCollection <int>();
            // Use a fixed seed for consistency in results
            Random random = new Random(2);

            for (int item = 0; item < _itemsPerCollection; ++item)
            {
                // Ensure we have some duplicates by picking a random number
                // less than half the number of items.
                subject.Add(random.Next(_itemsPerCollection / 2));
            }

            subject.Reset(_testCollections.SelectMany(x => x).ToList());

            // Compare test subject with expected result
            Assert.AreEqual(subject.Count, _sortedCollection.Count);
            bool itemsEqual = _sortedCollection
                              .Zip(subject, (a, b) => a == b)
                              .All(b => b);

            Assert.IsTrue(itemsEqual);

            // Compare collectionView
            var view = subject.CollectionView;

            Assert.AreEqual(view.Count, _sortedCollection.Count);
            bool viewItemsEqual = _sortedCollection
                                  .Zip(view, (a, b) => a == b)
                                  .All(b => b);

            Assert.IsTrue(viewItemsEqual);
        }
Beispiel #2
0
        public void Test_ConcurrentObservableSortedCollection_Reset()
        {
            var initial    = Enumerable.Range(0, 100).ToList();
            var toAdd      = Enumerable.Range(100, 100).ToList();
            var collection = new ConcurrentObservableSortedCollection <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.Reset(toAdd);

            // Check two collection changed events were fired
            Assert.AreEqual(2, returnedList.Count);
            (var returnedObject0, var returnedArgs0) = returnedList[0];
            (var returnedObject1, var returnedArgs1) = returnedList[1];

            Assert.IsNotNull(returnedObject0);
            Assert.IsNotNull(returnedArgs0);
            Assert.IsNotNull(returnedObject1);
            Assert.IsNotNull(returnedArgs1);

            Assert.AreEqual(returnedObject0, collection);
            Assert.AreEqual(returnedObject1, collection);
            Assert.AreEqual(NotifyCollectionChangedAction.Remove, returnedArgs0.Action);
            Assert.AreEqual(NotifyCollectionChangedAction.Add, returnedArgs1.Action);

            Assert.IsNull(returnedArgs0.NewItems);
            Assert.IsNotNull(returnedArgs0.OldItems);
            Assert.AreEqual(initial.Count(), returnedArgs0.OldItems.Count);
            Assert.IsTrue(CollectionsAreEqual(initial, returnedArgs0.OldItems));


            Assert.IsNull(returnedArgs1.OldItems);
            Assert.IsNotNull(returnedArgs1.NewItems);
            Assert.AreEqual(toAdd.Count(), returnedArgs1.NewItems.Count);
            Assert.IsTrue(CollectionsAreEqual(toAdd, returnedArgs1.NewItems));
        }