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); }
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)); }