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"); }