public void Add_CallsHandleChangeWithItemInsertedArgs()
        {
            var item = CreateItem();

            Collection.Add(item);

            AssertChangeArgs(
                CollectionChangedArgs <IViewModel> .ItemInserted(Collection, item, 0)
                );
        }
        /// <inheritdoc />
        protected override void InsertItem(int index, TItemVM item)
        {
            base.InsertItem(index, item);

            if (IsPopulating)
            {
                return;
            }

            CallBehaviors(CollectionChangedArgs <TItemVM> .ItemInserted(this, item, index));
        }
        public void Insert_CallsHandleChangeWithItemInsertedArgs()
        {
            Collection.Add(CreateItem());
            Collection.Add(CreateItem());

            ResetStub();
            var item = CreateItem();

            Collection.Insert(1, item);

            AssertChangeArgs(
                CollectionChangedArgs <IViewModel> .ItemInserted(Collection, item, 1)
                );
        }
        public void Move_CallsHandleChangeTwoTimes()
        {
            var item0 = CreateItem();
            var item1 = CreateItem();

            Collection.Add(item0);
            Collection.Add(item1);

            ResetStub();
            Collection.Move(fromIndex: 0, toIndex: 1);

            AssertChangeArgs(
                CollectionChangedArgs <IViewModel> .ItemRemoved(Collection, item0, 0),
                CollectionChangedArgs <IViewModel> .ItemInserted(Collection, item0, 1)
                );
        }
        protected void HandleItemInserted(TItemVM item, int index = 0)
        {
            var args = CollectionChangedArgs <TItemVM> .ItemInserted(Collection, item, index);

            Behavior.HandleChange(Context, args);
        }