public void ReplaceWithRaisesSingleResetEvent()
        {
            var mocker = new OptimizedObservableCollectionMocker(testObjects);

            mocker.OptimizedObservableCollection.ReplaceWith(testObjects);

            Assert.AreEqual(mocker.OptimizedObservableCollection.Count, 3);
            Assert.AreEqual(0, mocker.ItemsAddedCount);
            Assert.AreEqual(0, mocker.ItemsRemovedCount);
            Assert.AreEqual(0, mocker.ItemsReplacedCount);
            Assert.AreEqual(1, mocker.ItemsResetCount);
        }
        public void SwitchToSameItems()
        {
            var mocker = new OptimizedObservableCollectionMocker(testObjects);

            mocker.OptimizedObservableCollection.SwitchTo(testObjects);

            Assert.AreEqual(mocker.OptimizedObservableCollection.Count, 3);
            Assert.AreEqual(0, mocker.ItemsAddedCount);
            Assert.AreEqual(0, mocker.ItemsRemovedCount);
            Assert.AreEqual(0, mocker.ItemsReplacedCount);
            Assert.AreEqual(0, mocker.ItemsResetCount);
        }
        public void SwitchToMoreItems()
        {
            var mocker = new OptimizedObservableCollectionMocker(testObjects);

            mocker.OptimizedObservableCollection.SwitchTo(new[] { new object(), new object(), new object(), new object() });

            Assert.AreEqual(mocker.OptimizedObservableCollection.Count, 4);
            Assert.AreEqual(1, mocker.ItemsAddedCount);
            Assert.AreEqual(0, mocker.ItemsRemovedCount);
            Assert.AreEqual(3, mocker.ItemsReplacedCount);
            Assert.AreEqual(0, mocker.ItemsResetCount);
        }
        public void SwitchToSameItems()
        {
            var mocker = new OptimizedObservableCollectionMocker(testObjects);

            mocker.OptimizedObservableCollection.SwitchTo(testObjects);

            Assert.AreEqual(mocker.OptimizedObservableCollection.Count, 3);
            Assert.AreEqual(0, mocker.ItemsAddedCount);
            Assert.AreEqual(0, mocker.ItemsRemovedCount);
            Assert.AreEqual(0, mocker.ItemsReplacedCount);
            Assert.AreEqual(0, mocker.ItemsResetCount);
        }
        public void SwitchToMoreItems()
        {
            var mocker = new OptimizedObservableCollectionMocker(testObjects);

            mocker.OptimizedObservableCollection.SwitchTo(new[] { new object(), new object(), new object(), new object() });

            Assert.AreEqual(mocker.OptimizedObservableCollection.Count, 4);
            Assert.AreEqual(1, mocker.ItemsAddedCount);
            Assert.AreEqual(0, mocker.ItemsRemovedCount);
            Assert.AreEqual(3, mocker.ItemsReplacedCount);
            Assert.AreEqual(0, mocker.ItemsResetCount);
        }
        public void ReplaceWithRaisesSingleResetEvent()
        {
            var mocker = new OptimizedObservableCollectionMocker(testObjects);

            mocker.OptimizedObservableCollection.ReplaceWith(testObjects);

            Assert.AreEqual(mocker.OptimizedObservableCollection.Count, 3);
            Assert.AreEqual(0, mocker.ItemsAddedCount);
            Assert.AreEqual(0, mocker.ItemsRemovedCount);
            Assert.AreEqual(0, mocker.ItemsReplacedCount);
            Assert.AreEqual(1, mocker.ItemsResetCount);
        }