public void When_PropertyChanged_Suppressed_Then_NotifyPropertyChanged_Does_Not_Fire_PropertyChanged()
        {
            // Arrange
            var eventCount = 0;
            var sut = new CollectionChangedHelper<int>(this);
            sut.PropertyChanged += (sender, args) => ++eventCount;

            // Act
            using (sut.SuppressPropertyChanged())
                sut.NotifyPropertyChanged("Age", "UserData-1");

            // Assert
            Assert.AreEqual(0, eventCount);
        }
        public void When_NotifyPropertyValueChanged_Then_Fires_PropertyChange_On_Event_With_Correct_Values()
        {
            // Arrange
            var propertyChanges = new List<PropertyChangedEventArgsEx>();
            var sut = new CollectionChangedHelper<int>(this);
            sut.PropertyChanged += (sender, args) => propertyChanges.Add((PropertyChangedEventArgsEx) args);
            var expectedPropertyChange = new PropertyChangedEventArgsEx("Age", "UserData-2");

            // Act
            sut.NotifyPropertyChanged("Age", "UserData-2");

            // Assert
            Assert.AreEqual(1, propertyChanges.Count);
            Assert.AreEqual(expectedPropertyChange, propertyChanges[0]);
        }
        public void When_NotifyReplace_Then_Action_Replace_Raised()
        {
            // Arrange
            var sut = new CollectionChangedHelper<int>(this);
            var results = new List<NotifyCollectionChangedEventArgs>();
            var expected = new[]
            {
                new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, 12, (object) 14, 9),
                new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, 100, (object) 200, 80),
            };
            sut.CollectionChanged += (o, e) => results.Add(e);

            // Act
            sut.NotifyReplace(12, 14, 9);
            sut.NotifyReplace(100, 200, 80);

            // Assert
            KKAssert.AreEqualByValue(expected, results);
        }
        public void When_NotifyAdd_Then_Action_Add_Raised()
        {
            // Arrange
            var sut = new CollectionChangedHelper<int>(this);
            var results = new List<NotifyCollectionChangedEventArgs>();
            var expected = new[]
            {
                new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, 10, 0),
                new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, 99, 1),
            };
            sut.CollectionChanged += (o, e) => results.Add(e);

            // Act
            sut.NotifyAdd(10, 0);
            sut.NotifyAdd(99, 1);

            // Assert
            KKAssert.AreEqualByValue(expected, results);
        }
 private async void CameraRoll_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
 {
     await CollectionChangedHelper.Handle <VideoItem>(_cameraRoll, e);
 }
 private async void Shows_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
 {
     await CollectionChangedHelper.Handle <TvShow>(_shows, e);
 }
        public void When_SetPropertyValue_New_Value_Then_Fires_PropertyChanged()
        {
            // Arrange
            var propertyChanges = new List<PropertyChangedEventArgsEx>();
            var sut = new CollectionChangedHelper<int>(this);
            sut.PropertyChanged += (sender, args) => propertyChanges.Add((PropertyChangedEventArgsEx) args);
            var age = 10;
            var expectedPropertyChange = new PropertyChangedEventArgsEx("Age", "UserData-1");

            // Act
            sut.SetPropertyValue(ref age, 17, "Age", "UserData-1");

            // Assert
            Assert.AreEqual(1, propertyChanges.Count);
            Assert.AreEqual(expectedPropertyChange, propertyChanges[0]);
        }
        public void When_SetPropertyValue_Same_Value_Then_Does_Not_Fire_PropertyChanged()
        {
            // Arrange
            var eventCount = 0;
            var sut = new CollectionChangedHelper<int>(this);
            sut.PropertyChanged += (sender, args) => ++eventCount;
            ;
            var age = 10;

            // Act
            sut.SetPropertyValue(ref age, 10, "Age", "UserData-1");

            // Assert
            Assert.AreEqual(0, eventCount);
        }