public void Test_ObservableValidator_ValidateAllProperties_WithFallback() { var model = new PersonWithDeferredValidation(); var events = new List <DataErrorsChangedEventArgs>(); MethodInfo[] staticMethods = typeof(ObservableValidator).GetMethods(BindingFlags.Static | BindingFlags.NonPublic); MethodInfo validationMethod = staticMethods.Single(static m => m.Name.Contains("GetValidationActionFallback"));
public void Test_ObservableValidator_ValidateAllProperties() { var model = new PersonWithDeferredValidation(); var events = new List <DataErrorsChangedEventArgs>(); model.ErrorsChanged += (s, e) => events.Add(e); model.ValidateAllProperties(); Assert.IsTrue(model.HasErrors); Assert.IsTrue(events.Count == 2); // Note: we can't use an index here because the order used to return properties // from reflection APIs is an implementation detail and might change at any time. Assert.IsTrue(events.Any(e => e.PropertyName == nameof(Person.Name))); Assert.IsTrue(events.Any(e => e.PropertyName == nameof(Person.Age))); events.Clear(); model.Name = "James"; model.Age = 42; model.ValidateAllProperties(); Assert.IsFalse(model.HasErrors); Assert.IsTrue(events.Count == 2); Assert.IsTrue(events.Any(e => e.PropertyName == nameof(Person.Name))); Assert.IsTrue(events.Any(e => e.PropertyName == nameof(Person.Age))); events.Clear(); model.Age = -10; model.ValidateAllProperties(); Assert.IsTrue(model.HasErrors); Assert.IsTrue(events.Count == 1); Assert.IsTrue(events.Any(e => e.PropertyName == nameof(Person.Age))); }