public void ObservableItemContentRangeCollection_WhenCreatedWithoutItems_CreatesEmptyCollection()
        {
            var collection = new ObservableItemContentRangeCollection <ObservableObject>();

            Assert.IsAssignableFrom <ObservableCollection <ObservableObject> >(collection);
            Assert.Empty(collection);
        }
        public void ObservableItemContentRangeCollection_WhenCreatedWithItems_AddsAllItems(
            IEnumerable <ObservableObject> items)
        {
            var collection = new ObservableItemContentRangeCollection <ObservableObject>(items);

            Assert.IsAssignableFrom <ObservableCollection <ObservableObject> >(collection);
            Assert.Equal(items.Count(), collection.Count);
            Assert.Equal(collection, items);
        }
        public void ObservableItemContentRangeCollection_WhenCreatedWithItems_DoesNotNotifyForRemovedItems()
        {
            var item  = new TestObservableObject();
            var items = new List <TestObservableObject>()
            {
                item, new TestObservableObject(), new TestObservableObject()
            };
            var collection = new ObservableItemContentRangeCollection <TestObservableObject>(items);

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