void Verify_OnSelectionChanged_OldRowIsNotBlank_RowNotRemoved(int startItemCount, int indexNumber)
        {
            //------------Setup for test--------------------------
            var items = CreateItemsList(startItemCount);
            var modelItem = CreateModelItem(items);
            var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem);

            for(var i = 0; i < startItemCount; i++)
            {
                Assert.AreEqual(i == startItemCount - 1, items[i].CanRemove());
            }

            var idx = indexNumber - 1;

            //------------Execute Test---------------------------
            items[idx].FieldName = string.Empty;  // CanRemove() checks this
            viewModel.OnSelectionChanged(viewModel.ModelItemCollection[idx], viewModel.ModelItemCollection[idx + 1]);

            //------------Assert Results-------------------------
            Assert.IsFalse(items[idx].CanRemove());

            Verify_CollectionUnchanged(items, viewModel);
        }
        void Verify_OnSelectionChanged_OldRowIsBlank_RowRemoved(int startItemCount, int indexNumber)
        {
            //------------Setup for test--------------------------
            var items = CreateItemsList(startItemCount);
            var modelItem = CreateModelItem(items);
            var viewModel = new TestActivityDesignerCollectionViewModelItemsInitialized(modelItem);

            for(var i = 0; i < startItemCount; i++)
            {
                Assert.AreEqual(i == startItemCount - 1, items[i].CanRemove());
            }

            var idx = indexNumber - 1;

            //------------Execute Test---------------------------
            items[idx].FieldName = string.Empty;  // CanRemove() checks this
            items[idx].FieldValue = string.Empty; // CanRemove() checks this
            viewModel.OnSelectionChanged(viewModel.ModelItemCollection[idx], viewModel.ModelItemCollection[idx + 1]);

            //------------Assert Results-------------------------
            Assert.IsTrue(items[idx].CanRemove());

            var expectedItemCount = startItemCount - 1;
            var expectedNonBlankItemCount = expectedItemCount - 1;
            Assert.AreEqual(expectedItemCount, viewModel.ItemCount);
            Assert.AreEqual(string.Format("Activity ({0})", expectedNonBlankItemCount), viewModel.ModelItem.GetProperty("DisplayName"));

            // ReSharper disable PossibleNullReferenceException
            var mic = viewModel.ModelItem.Properties[viewModel.CollectionName].Collection;

            for(int i = 0, j = 0; j < expectedItemCount; j++)
            {
                if(i == idx)
                {
                    i++; // skip
                }
                var dto = (ActivityDTO)mic[j].GetCurrentValue();
                Assert.AreSame(items[i++], dto);
            }
            // ReSharper restore PossibleNullReferenceException
        }