Example #1
0
            public void Replace()
            {
                var source = new ObservableCollection <int>
                {
                    1,
                    1,
                    1,
                    2,
                    2,
                    2,
                    3,
                    3,
                    3,
                };

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

                        source[0] = 5;
                        CollectionAssert.AreEqual(source.Select(x => x * x), view);
                        var expected = new List <EventArgs>
                        {
                            CachedEventArgs.IndexerPropertyChanged,
                            Diff.CreateReplaceEventArgs(view[0], 1, 0)
                        };
                        CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
                    }
                }
            }
Example #2
0
            public static void Replace()
            {
                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(Collections.ReadOnlyViews.MappingViewTests.Vm.Create);
                using var actual = view.SubscribeAll();
                var old  = view[0];
                var @new = view[5];

                source[0] = source[5];
                CollectionAssert.AreEqual(source, view.Select(x => x.Model));
                var expected = new List <EventArgs>
                {
                    CachedEventArgs.IndexerPropertyChanged,
                    Diff.CreateReplaceEventArgs(@new, old, 0),
                };

                CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
            }
Example #3
0
        public static void ReplaceVisibleBuffered()
        {
            var source = new ObservableCollection <int> {
                1, 2, 3
            };
            var scheduler = new TestScheduler();

            using var view = source.AsReadOnlyFilteredView(x => x % 2 == 0, TimeSpan.FromMilliseconds(100), scheduler);
            scheduler.Start();
            scheduler.Start();
            using var actual = view.SubscribeAll();
            CollectionAssert.AreEqual(new[] { 2 }, view);
            CollectionAssert.IsEmpty(actual);

            source[1] = 4;
            scheduler.Start();
            CollectionAssert.AreEqual(new[] { 4 }, view);
            var expected = new EventArgs[]
            {
                CachedEventArgs.IndexerPropertyChanged,
                Diff.CreateReplaceEventArgs(4, 2, 0),
            };

            CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
        }
        public static void SetSourceReplace()
        {
            using var view   = new ReadOnlySerialView <int>(new[] { 1, 2, 3 });
            using var actual = view.SubscribeAll();
            var newSource = new[] { 1, 2, 4 };

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

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

            newSource = new[] { 5, 2, 4 };
            view.SetSource(newSource);
            CollectionAssert.AreEqual(newSource, view);
            expected.AddRange(
                new EventArgs[]
            {
                CachedEventArgs.IndexerPropertyChanged,
                Diff.CreateReplaceEventArgs(5, 1, 0),
                CachedEventArgs.GetOrCreatePropertyChangedEventArgs("Source"),
            });
            CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
        }
Example #5
0
        /// <inheritdoc/>
        protected override void SetItem(int index, T item)
        {
            var oldItem     = this[index];
            var sourceIndex = this.SourceIndex(index);

            base.SetItem(index, item);
            var change = Diff.CreateReplaceEventArgs(item, oldItem, index);

            this.UpdatedSourceWith = change;
            this.Notify(change);
            if (sourceIndex >= 0)
            {
                this.Source[sourceIndex] = item;
            }

            this.UpdatedSourceWith = null;
        }
            public void Replace()
            {
                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(CreateStrictMock, x => x.Object.Dispose()))
                {
                    using (var actual = view.SubscribeAll())
                    {
                        var old  = view[0];
                        var @new = view[5];
                        source[0] = source[5];
                        CollectionAssert.AreEqual(source, view.Select(x => x.Object.Model));
                        var expected = new List <EventArgs>
                        {
                            CachedEventArgs.IndexerPropertyChanged,
                            Diff.CreateReplaceEventArgs(@new, old, 0)
                        };
                        CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);

                        foreach (var mock in view)
                        {
                            mock.Setup(x => x.Dispose());
                        }
                    }
                }
            }
Example #7
0
        public async Task Replace1()
        {
            var source = new ObservableCollection <int> {
                1, 2, 3, 2
            };

            using var view   = source.AsFilteredView(x => x % 2 == 0);
            using var actual = view.SubscribeAll();
            view[1]          = 4;
            await Application.Current.Dispatcher.SimulateYield();

            CollectionAssert.AreEqual(new[] { 2, 4 }, view);
            CollectionAssert.AreEqual(new[] { 1, 2, 3, 4 }, source);
            var expected = new EventArgs[]
            {
                CachedEventArgs.IndexerPropertyChanged,
                Diff.CreateReplaceEventArgs(4, 2, 1),
            };

            CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
        }
            public void Replace()
            {
                var source = new ObservableCollection <int>
                {
                    1,
                    1,
                    1,
                    2,
                    2,
                    2,
                    3,
                    3,
                    3,
                };

                using (var view = source.AsMappingView(CreateStrictMock, WithIndex, x => x.Object.Dispose()))
                {
                    using (var actual = view.SubscribeAll())
                    {
                        var old = view[0];
                        old.Setup(x => x.Dispose());
                        source[0] = source[5];
                        old.Verify(x => x.Dispose(), Times.Once);
                        CollectionAssert.AreEqual(source, view.Select(x => x.Object.Value));
                        CollectionAssert.AreEqual(source.Select((_, i) => i), view.Select(x => x.Object.Index));
                        var expected = new List <EventArgs>
                        {
                            CachedEventArgs.IndexerPropertyChanged,
                            Diff.CreateReplaceEventArgs(view[0], old, 0),
                        };
                        CollectionAssert.AreEqual(expected, actual, EventArgsComparer.Default);
                    }

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