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

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

            // Assert
            Assert.AreEqual(0, eventCount);
        }
        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]);
        }