public void CollectionShouldBeUpdated(int index, int count)
            {
                Setup();

                var items     = new MvxObservableCollection <int[]>(new[] { new[] { 1, 2 }, new[] { 3 }, new[] { 4, 5, 6 } });
                var flatItems = GetFlatItems(items.Take(index, count)).ToArray();
                var flatCount = GetFlatItems(items).Count() - flatItems.Length;

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

                items.RemoveRange(index, count);

                Assert.AreEqual(flatCount, sut.Count);
                CollectionAssert.IsNotSubsetOf(flatItems, sut);
            }
            public void RemoveEventShouldBeRaised(int index, int count)
            {
                Setup();

                var events    = new List <NotifyCollectionChangedEventArgs>();
                var items     = new MvxObservableCollection <int[]>(new[] { new[] { 1, 2 }, new[] { 3 }, new[] { 4, 5, 6 } });
                var flatIndex = GetFlatSectionIndex(items, index);
                var flatItems = GetFlatItems(items.Take(index, count));

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

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

                items.RemoveRange(index, count);

                Assert.AreEqual(1, events.Count);
                Assert.AreEqual(NotifyCollectionChangedAction.Remove, events[0].Action);
                Assert.AreEqual(flatIndex, events[0].OldStartingIndex);
                Assert.AreEqual(flatItems, events[0].OldItems);
            }