This repository has been archived by the owner on Jan 23, 2023. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added Collection<T> AddRange and InsertRange and added new XUnit test…
…s to cover new APIs Added missing APIs from Collection<T>; Added new unit tests for RemoveRange, ReplaceRange, InsertItemsRange and RemoveItemsRange Updated AddRange in Collection<T> to add items to the end of the collection Added CollectionChanged tests for ObservableCollection<T> for InsertRange, AddRange, RemoveRange and ReplaceRange Removing API changes as these will be mirrored from CoreCLR Updated array assertions to use Span<T> to simplify logic Sorted order of new API methods Simplified CollectionTests Assertion to use Span<T> instead of calling out each item in the array Added missing API ReplaceItemsRange and updated unit tests for check for overflow errors on RemoveItems Added overrides for ObservableCollection<T> ItemsRange API to only fire CollectionChanged once per API call. Before this was firing for each item in the collection which is not the desired result. Updated unit tests to verify this logic Updated RemoveItemsRange to prevent int.MaxValue overflow errors Added int.MaxValue overflow tests for Collection<T> and ObservableCollection<T> when invoking RemoveItemsRange API Added additional RemoveRange unit tests to cover when Count is Less than 0 or when Count is 0 Updated RemoveRange overflow tests to check for ArgumentException for new business rules Updated ObservableCollection overflow test to assert ArgumentException Added try-finally block to ObservableCollection<T> to certify that _skipCollectionChanged is always set to false after a collection manipulation in case an exception is thrown in a subclass. Added new test class to test the new rules on the example of a NonNullObservableCollection<T> CollectionChanged events do not fire on RemoveRange if the count == 0 Updated ObservableCollection<T> to only throw the 3 required events when ReplaceItemsRange is invoked. Updated OnChangedEvent methods to check for IList and cast as necessary. Added additional exception handling to reset _skipRaisingEvents bool. Added unit tests to verify event and event parameters are being passed correctly. Added Collection<T> AddRange and InsertRange and added new XUnit tests to cover new APIs Simplified CollectionTests Assertion to use Span<T> instead of calling out each item in the array Added additional RemoveRange unit tests to cover when Count is Less than 0 or when Count is 0 Updated ObservableCollection<T> to only throw the 3 required events when ReplaceItemsRange is invoked. Updated OnChangedEvent methods to check for IList and cast as necessary. Added additional exception handling to reset _skipRaisingEvents bool. Added unit tests to verify event and event parameters are being passed correctly. Updated ReplaceRange event to pass in the OldItems and NewItems to match the event docs Simplified CollectionChanged 'NewItems for InsertItemsRange Updated removedItems to use an array instead of a List<T> Added new OnCollectionChanged overloads to reduce need for additional if checks. Removed stale code Optimized ReplaceItemsRange by simplifying the itemsToReplace which is no an array instead of a List<T> Removed (IList) cast in ReplaceItemsRange when raising CollectionChanged Removed temp array in RemoveRange which decreases memory allocation needed
- Loading branch information