コード例 #1
0
        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"));
コード例 #2
0
        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)));
        }