private void Move(int defaultIndex, int targetIndex, int targetOrder, Movement movement) { var originItem = _collection[defaultIndex]; var targetItem = _collection[targetIndex]; if (movement == Movement.Up) { _collection.MoveUp(originItem); } else { _collection.MoveDown(originItem); } var changedItems = _collection.FlushModifications(); Assert.AreEqual(targetOrder, originItem.SortOrder); if (defaultIndex != targetIndex) { Assert.True(changedItems.Contains(originItem), "Changed items does not contain the origin item"); Assert.True(changedItems.Contains(targetItem), "Changed items does not contain the target item"); } if (defaultIndex == targetIndex) { Assert.True(!changedItems.Any()); } var itemIndex = _collection.IndexOf(originItem); Assert.AreEqual(targetIndex, itemIndex, "Item is not at the right position!"); }