public static void RunVerificationTest <M, T>(M vm, string propertyName, T value1, T value2)
            where M : System.ComponentModel.INotifyPropertyChanged, new()
        {
            value2.Should().NotBe(value1, "Test error: cannot run test with two equal values");

            // Arrange
            PropertyInfo property = typeof(M).GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty);

            property.Should().NotBeNull("Test error: Cannot find public property (get and set ) {0}", propertyName);
            Action <T> setProperty = (v) => property.SetValue(vm, v);
            Func <T>   getProperty = () => (T)property.GetValue(vm);

            setProperty(value1);
            getProperty().Should().Be(value1, "Test error: getProperty and setProperty are not working as expected");
            ViewModelVerifier verifier = new ViewModelVerifier(vm);

            // Change
            setProperty(value2);
            verifier.propertyChanges.Should().ContainSingle(propertyName);
            verifier.Reset();

            // No change
            setProperty(value2);
            verifier.propertyChanges.Should().BeEmpty();

            // Change again
            setProperty(value1);
            verifier.propertyChanges.Should().ContainSingle(propertyName);
        }
Пример #2
0
        public static void RunVerificationTest <M, T>(M vm, string propertyName, T value1, T value2)
            where M : System.ComponentModel.INotifyPropertyChanged, new()
        {
            Assert.AreNotEqual(value1, value2, "Test error: cannot run test with two equal values");

            // Setup
            PropertyInfo property = typeof(M).GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty);

            Assert.IsNotNull(property, "Test error: Cannot find public property (get and set ) {0}", propertyName);
            Action <T> setProperty = (v) => property.SetValue(vm, v);
            Func <T>   getProperty = () => (T)property.GetValue(vm);

            setProperty(value1);
            Assert.AreEqual(value1, getProperty(), "Test error: getProperty and setProperty are not working as expected");
            ViewModelVerifier verifier = new ViewModelVerifier(vm);

            // Change
            setProperty(value2);
            verifier.AssertSinglePropertyChange(propertyName);
            verifier.Reset();

            // No change
            setProperty(value2);
            verifier.AssertNoPropertChanges();

            // Change again
            setProperty(value1);
            verifier.AssertSinglePropertyChange(propertyName);
        }