public void CollectionShouldBeUpdated(int oldIndex, int newIndex)
            {
                Setup();

                var items = new MvxObservableCollection <int> {
                    1, 2, 3, 4, 5, 6
                };

                var sut = new WrappedObservableCollection <int, string>(items, Factory);

                items.Move(oldIndex, newIndex);

                Assert.AreEqual(Transform(items), sut);
            }
            public void CollectionShouldBeUpdated(int oldIndex, int newIndex)
            {
                Setup();

                var items        = new MvxObservableCollection <int[]>(new[] { new[] { 1, 2 }, new[] { 3 }, new[] { 4, 5, 6 } });
                var flatOldItems = GetFlatItems(items).ToArray();
                var flatOldCount = flatOldItems.Length;

                var sut = new FlatObservableCollection <int>(items);

                items.Move(oldIndex, newIndex);

                var flatNewItems = GetFlatItems(items).ToArray();
                var flatNewCount = flatNewItems.Length;

                Assert.AreEqual(flatOldCount, sut.Count);
                Assert.AreEqual(flatNewCount, sut.Count);
                Assert.AreEqual(flatNewItems, sut);
            }
            public void MoveEventShouldBeRaised(int oldIndex, int newIndex)
            {
                Setup();

                var events = new List <NotifyCollectionChangedEventArgs>();
                var items  = new MvxObservableCollection <int> {
                    1, 2, 3, 4, 5, 6
                };
                var changedItems = new[] { Transform(items).ElementAt(oldIndex) };

                var sut = new WrappedObservableCollection <int, string>(items, Factory);

                sut.CollectionChanged += (_, args) => events.Add(args);

                items.Move(oldIndex, newIndex);

                Assert.AreEqual(1, events.Count);
                Assert.AreEqual(NotifyCollectionChangedAction.Move, events[0].Action);
                Assert.AreEqual(oldIndex, events[0].OldStartingIndex);
                Assert.AreEqual(newIndex, events[0].NewStartingIndex);
                Assert.AreEqual(changedItems, events[0].NewItems);
                Assert.AreEqual(changedItems, events[0].OldItems);
            }
            public void MoveEventShouldBeRaised(int oldIndex, int newIndex)
            {
                Setup();

                var events       = new List <NotifyCollectionChangedEventArgs>();
                var items        = new MvxObservableCollection <int[]>(new[] { new[] { 1, 2 }, new[] { 3 }, new[] { 4, 5, 6 } });
                var flatOldIndex = GetFlatSectionIndex(items, oldIndex);

                var sut = new FlatObservableCollection <int>(items);

                sut.CollectionChanged += (_, args) => events.Add(args);

                items.Move(oldIndex, newIndex);

                var flatNewIndex = GetFlatSectionIndex(items, newIndex);
                var flatNewItems = GetFlatItems(items.Take(newIndex, 1));

                Assert.AreEqual(1, events.Count);
                Assert.AreEqual(NotifyCollectionChangedAction.Move, events[0].Action);
                Assert.AreEqual(flatOldIndex, events[0].OldStartingIndex);
                Assert.AreEqual(flatNewIndex, events[0].NewStartingIndex);
                Assert.AreEqual(flatNewItems, events[0].NewItems);
                Assert.AreEqual(flatNewItems, events[0].OldItems);
            }