public void ObservableItemContentRangeCollection_WhenCreatedWithoutItems_DoesNotNotifyForRemovedItems()
        {
            var item       = new TestObservableObject();
            var collection = new ObservableItemContentRangeCollection <TestObservableObject>();

            CustomAsserts.Assert_NotRaises <NotifyCollectionChangedEventArgs>(
                handler => collection.CollectionChanged += (s, e) => handler.Invoke(s, e),
                handler => { },
                () => item.TestProperty = TestPropertyValue);

            collection.Add(item);
            collection.Remove(item);

            CustomAsserts.Assert_NotRaises <NotifyCollectionChangedEventArgs>(
                handler => collection.CollectionChanged += (s, e) => handler.Invoke(s, e),
                handler => { },
                () => item.TestProperty = TestPropertyValue2);
        }
        public void ObservableItemContentRangeCollection_WhenCreatedWithoutItems_NotifiesForAddedItems()
        {
            var item       = new TestObservableObject();
            var collection = new ObservableItemContentRangeCollection <TestObservableObject>();

            collection.Add(item);
            var itemIndex = collection.IndexOf(item);

            var raisedEvent = Assert.Raises <NotifyCollectionChangedEventArgs>(
                handler => collection.CollectionChanged += (s, e) => handler.Invoke(s, e),
                handler => { },
                () => item.TestProperty = TestPropertyValue);

            Assert.NotNull(raisedEvent);
            Assert.Equal(NotifyCollectionChangedAction.Replace, raisedEvent.Arguments.Action);
            Assert.Equal(itemIndex, raisedEvent.Arguments.NewStartingIndex);
            Assert.Equal(itemIndex, raisedEvent.Arguments.OldStartingIndex);
        }