Exemple #1
0
        public void AddRange_5SequentialAdds_CollectionChangeEventsAreReported()
        {
            var col      = new ConcurrentObservableCollection <string>(new[] { "a" });
            var argsList = new List <NotifyCollectionChangedEventArgs>();

            col.CollectionChanged += (sender, args) => { argsList.Add(args); };
            col.AddRange(new[] { "z1", "f1", "y1" });
            col.AddRange(new[] { "z2", "f2", "y2" });
            col.AddRange(new[] { "z3", "f3", "y3" });
            col.AddRange(new[] { "z4", "f4", "y4" });
            col.AddRange(new[] { "z5", "f5", "y5" });

            argsList.Count(x => x.Action == NotifyCollectionChangedAction.Add).Should().Be(5);
            foreach (var args in argsList)
            {
                col.Skip(args.NewStartingIndex).Take(args.NewItems.Count).Should().BeEquivalentTo(args.NewItems.OfType <string>());
            }

            col.Should().BeEquivalentTo("a", "z1", "f1", "y1", "z2", "f2", "y2", "z3", "f3", "y3", "z4", "f4", "y4",
                                        "z5", "f5", "y5");
        }