public void Move()
            {
                var source = new ObservableCollection <int>
                {
                    1,
                    1,
                    1,
                    2,
                    2,
                    2,
                    3,
                    3,
                    3,
                };

                using (var view = source.AsMappingView(CreateStrictMock, x => x.Object.Dispose()))
                {
                    using (var actual = view.SubscribeAll())
                    {
                        source.Move(0, 4);
                        CollectionAssert.AreEqual(source, view.Select(x => x.Object.Value));
                        var expected = new List <EventArgs>
                        {
                            CachedEventArgs.IndexerPropertyChanged,
                            Diff.CreateMoveEventArgs(view[4], 4, 0),
                        };
                        CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);

                        foreach (var mock in view)
                        {
                            mock.Setup(x => x.Dispose());
                        }
                    }
                }
            }
Esempio n. 2
0
            public void Move(int from, int to)
            {
                var source = new ObservableCollection <int>
                {
                    1,
                    2,
                    3,
                };

                using (var view = source.AsMappingView(x => x * x))
                {
                    using (var actual = view.SubscribeAll())
                    {
                        CollectionAssert.AreEqual(source.Select(x => x * x), view);

                        source.Move(from, to);
                        CollectionAssert.AreEqual(source.Select(x => x * x), view);
                        var expected = new List <EventArgs>
                        {
                            CachedEventArgs.IndexerPropertyChanged,
                            Diff.CreateMoveEventArgs(view[to], to, from)
                        };
                        CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
                    }
                }
            }
Esempio n. 3
0
            public void Move()
            {
                var model1 = Model.Create(1);
                var model2 = Model.Create(2);
                var model3 = Model.Create(3);
                var source = new ObservableCollection <Model <int> >(
                    new[]
                {
                    model1,
                    model1,
                    model1,
                    model2,
                    model2,
                    model2,
                    model3,
                    model3,
                    model3,
                });

                using (var view = source.AsMappingView(Vm.Create))
                {
                    using (var actual = view.SubscribeAll())
                    {
                        source.Move(0, 4);
                        CollectionAssert.AreEqual(source, view.Select(x => x.Model));
                        var expected = new List <EventArgs>
                        {
                            CachedEventArgs.IndexerPropertyChanged,
                            Diff.CreateMoveEventArgs(view[4], 4, 0)
                        };
                        CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
                    }
                }
            }
Esempio n. 4
0
        /// <summary>
        /// Move item at oldIndex to newIndex.
        /// </summary>
        protected virtual void MoveItem(int oldIndex, int newIndex)
        {
            var sourceOldIndex = this.SourceIndex(oldIndex);
            var sourceNewIndex = this.SourceIndex(newIndex);
            var item           = this[oldIndex];

            base.RemoveItem(oldIndex);
            base.InsertItem(newIndex, item);
            var change = Diff.CreateMoveEventArgs(item, newIndex, oldIndex);

            this.UpdatedSourceWith = change;
            this.Notify(change);
            if (sourceOldIndex >= 0 &&
                sourceNewIndex >= 0)
            {
                if (this.Source is ObservableCollection <T> s1)
                {
                    s1.Move(sourceOldIndex, sourceNewIndex);
                }
                else if (this.Source is IObservableCollection <T> s2)
                {
                    s2.Move(sourceOldIndex, sourceNewIndex);
                }
                else
                {
                    throw new NotSupportedException($"Expected source to be ObservableCollection<T> or IObservableCollection<T>, was {this.Source.GetType().PrettyName()}");
                }
            }

            this.UpdatedSourceWith = null;
        }
        public static void SetSourceMove()
        {
            using var view   = new ReadOnlySerialView <int>(new[] { 1, 2, 3 });
            using var actual = view.SubscribeAll();
            var newSource = new[] { 1, 3, 2 };

            view.SetSource(newSource);
            CollectionAssert.AreEqual(newSource, view);
            var expected = new List <EventArgs>
            {
                CachedEventArgs.IndexerPropertyChanged,
                Diff.CreateMoveEventArgs(2, 2, 1),
                CachedEventArgs.GetOrCreatePropertyChangedEventArgs("Source"),
            };

            CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);

            newSource = new[] { 3, 1, 2 };
            view.SetSource(newSource);
            CollectionAssert.AreEqual(newSource, view);
            expected.AddRange(
                new EventArgs[]
            {
                CachedEventArgs.IndexerPropertyChanged,
                Diff.CreateMoveEventArgs(1, 1, 0),
                CachedEventArgs.GetOrCreatePropertyChangedEventArgs("Source"),
            });
            CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
        }
Esempio n. 6
0
        /// <inheritdoc/>
        public void Move(int oldIndex, int newIndex)
        {
            var item = this[oldIndex];

            this.RemoveItem(oldIndex);
            this.InsertItem(newIndex, item);
            this.OnPropertyChanged(CachedEventArgs.IndexerPropertyChanged);
            this.OnCollectionChanged(Diff.CreateMoveEventArgs(item, newIndex, oldIndex));
        }
Esempio n. 7
0
            public static void Move()
            {
                var model1 = Collections.ReadOnlyViews.MappingViewTests.Model.Create(1);
                var model2 = Collections.ReadOnlyViews.MappingViewTests.Model.Create(2);
                var model3 = Collections.ReadOnlyViews.MappingViewTests.Model.Create(3);
                var source = new ObservableCollection <Collections.ReadOnlyViews.MappingViewTests.Model <int> >(
                    new[]
                {
                    model1,
                    model1,
                    model1,
                    model2,
                    model2,
                    model2,
                    model3,
                    model3,
                    model3,
                });

                using var view = source.AsMappingView(CreateStrictMock, x => x.Object.Dispose());
                using (var actual = view.SubscribeAll())
                {
                    source.Move(0, 4);
                    CollectionAssert.AreEqual(source, view.Select(x => x.Object.Model));
                    var expected = new List <EventArgs>
                    {
                        CachedEventArgs.IndexerPropertyChanged,
                        Diff.CreateMoveEventArgs(view[4], 4, 0),
                    };
                    CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
                }

                foreach (var mock in view)
                {
                    mock.Setup(x => x.Dispose());
                }
            }