Inheritance: System.Windows.Controls.ValidationError
Esempio n. 1
0
            public void TextBoxSetSetForInputTypesTextBox()
            {
                var textBox    = new System.Windows.Controls.TextBox();
                var inputTypes = new InputTypeCollection {
                    typeof(System.Windows.Controls.TextBox), typeof(Selector)
                };

                Scope.SetForInputTypes(textBox, inputTypes);
                Assert.AreEqual(false, Scope.GetHasError(textBox));
                CollectionAssert.IsEmpty(Scope.GetErrors(textBox));

                var errorNode = (InputNode)Scope.GetNode(textBox);

                Assert.AreEqual(textBox, errorNode.Source);
                Assert.AreEqual(false, errorNode.HasError);
                CollectionAssert.IsEmpty(errorNode.Children);
                CollectionAssert.IsEmpty(errorNode.Errors);

                var validationError = TestValidationError.GetFor(textBox, System.Windows.Controls.TextBox.TextProperty);

                textBox.SetValidationError(validationError);
                var expectedErrors = new[] { validationError };

                Assert.AreEqual(true, Scope.GetHasError(textBox));
                CollectionAssert.AreEqual(expectedErrors, Scope.GetErrors(textBox));
                Assert.AreSame(errorNode, Scope.GetNode(textBox));

                Assert.AreEqual(true, errorNode.HasError);
                Assert.AreEqual(textBox, errorNode.Source);
                CollectionAssert.IsEmpty(errorNode.Children);
                CollectionAssert.AreEqual(expectedErrors, errorNode.Errors);
            }
            public static void Notifies()
            {
                var textBox = new System.Windows.Controls.TextBox();

                using (var textBoxEvents = textBox.SubscribeScopeEvents())
                {
                    var stackPanel = new StackPanel();
                    using (var stackPanelEVents = stackPanel.SubscribeScopeEvents())
                    {
                        stackPanel.Children.Add(textBox);
                        var inputTypes = new InputTypeCollection {
                            typeof(System.Windows.Controls.TextBox), typeof(Selector)
                        };
                        Scope.SetForInputTypes(stackPanel, inputTypes);
                        var validationError = TestValidationError.GetFor(textBox, System.Windows.Controls.TextBox.TextProperty);
                        textBox.SetValidationError(validationError);
                        var expectedEvents = new List <ScopeValidationErrorEventArgs>
                        {
                            new ScopeValidationErrorEventArgs(validationError, ValidationErrorEventAction.Added),
                        };
                        CollectionAssert.AreEqual(expectedEvents, textBoxEvents, ScopeValidationErrorEventArgsComparer.Default);
                        CollectionAssert.AreEqual(expectedEvents, stackPanelEVents, ScopeValidationErrorEventArgsComparer.Default);

                        textBox.ClearValidationError(validationError);
                        expectedEvents.Add(new ScopeValidationErrorEventArgs(validationError, ValidationErrorEventAction.Removed));
                        CollectionAssert.AreEqual(expectedEvents, textBoxEvents, ScopeValidationErrorEventArgsComparer.Default);
                        CollectionAssert.AreEqual(expectedEvents, stackPanelEVents, ScopeValidationErrorEventArgsComparer.Default);
                    }
                }
            }
            public static void NodesForSelectorAndSlider()
            {
                var textBox    = new System.Windows.Controls.TextBox();
                var stackPanel = new StackPanel();

                stackPanel.Children.Add(textBox);
                var inputTypes = new InputTypeCollection {
                    typeof(Selector), typeof(Slider)
                };

                Scope.SetForInputTypes(stackPanel, inputTypes);
                Assert.AreEqual(false, Scope.GetHasError(stackPanel));
                Assert.AreEqual(ValidNode.Default, Scope.GetNode(stackPanel));
                Assert.AreEqual(false, Scope.GetHasError(textBox));
                Assert.AreEqual(ValidNode.Default, Scope.GetNode(textBox));

                var validationError = TestValidationError.GetFor(textBox, System.Windows.Controls.TextBox.TextProperty);

                textBox.SetValidationError(validationError);

                Assert.AreEqual(false, Scope.GetHasError(stackPanel));
                Assert.AreEqual(ValidNode.Default, Scope.GetNode(stackPanel));
                Assert.AreEqual(false, Scope.GetHasError(textBox));
                Assert.AreEqual(ValidNode.Default, Scope.GetNode(textBox));
            }
        public static void SetValidationError(this TextBox textBox)
        {
            var expression = BindingOperations.GetBindingExpression(textBox, ProxyProperty)
                             ?? textBox.Bind(ProxyProperty).OneWayTo(textBox, TextBox.TextProperty);

            Validation.MarkInvalid(expression, TestValidationError.GetFor(expression));
        }
Esempio n. 5
0
        public void UpdatesAndNotifiesError()
        {
            var textBox    = new TextBox();
            var inputTypes = new InputTypeCollection {
                typeof(TextBox), typeof(Selector)
            };

            textBox.SetForInputTypes(inputTypes);
            Assert.AreEqual(false, Scope.GetHasErrors(textBox));
            var errorNode = (ErrorNode)Scope.GetErrors(textBox);
            var errorArgs = errorNode.Errors.SubscribeAllEvents();
            var nodeArgs  = errorNode.SubscribeAllEvents();

            Assert.AreEqual(textBox, errorNode.Source);
            CollectionAssert.IsEmpty(errorNode.Children);
            CollectionAssert.IsEmpty(errorNode.Errors);

            textBox.SetValidationError();
            Assert.AreEqual(true, Scope.GetHasErrors(textBox));
            errorNode = (ErrorNode)Scope.GetErrors(textBox);
            Assert.AreEqual(textBox, errorNode.Source);
            CollectionAssert.IsEmpty(errorNode.Children);
            CollectionAssert.AreEqual(new[] { TestValidationError.GetFor(textBox) }, errorNode.Errors);

            var expectedErrorArgs = new List <EventArgs>
            {
                new PropertyChangedEventArgs("Count"),
                new PropertyChangedEventArgs("Item[]"),
                new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, TestValidationError.GetFor(textBox), 0)
            };

            CollectionAssert.AreEqual(expectedErrorArgs, errorArgs, ObservableCollectionArgsComparer.Default);
            var expectedNodeArgs = new List <EventArgs>
            {
                new PropertyChangedEventArgs("Count"),
                new PropertyChangedEventArgs("Item[]"),
                new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, TestValidationError.GetFor(textBox), 0),
                new PropertyChangedEventArgs("HasErrors"),
            };

            CollectionAssert.AreEqual(expectedNodeArgs, nodeArgs, ObservableCollectionArgsComparer.Default);

            textBox.ClearValidationError();
            Assert.AreEqual(false, Scope.GetHasErrors(textBox));
            errorNode = (ErrorNode)Scope.GetErrors(textBox);
            Assert.AreEqual(textBox, errorNode.Source);
            CollectionAssert.IsEmpty(errorNode.Children);
            CollectionAssert.IsEmpty(errorNode.Errors);

            expectedErrorArgs.Add(new PropertyChangedEventArgs("Count"));
            expectedErrorArgs.Add(new PropertyChangedEventArgs("Item[]"));
            expectedErrorArgs.Add(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, TestValidationError.GetFor(textBox), 0));
            CollectionAssert.AreEqual(expectedErrorArgs, errorArgs, ObservableCollectionArgsComparer.Default);

            expectedNodeArgs.Add(new PropertyChangedEventArgs("Count"));
            expectedNodeArgs.Add(new PropertyChangedEventArgs("Item[]"));
            expectedNodeArgs.Add(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, TestValidationError.GetFor(textBox), 0));
            expectedNodeArgs.Add(new PropertyChangedEventArgs("HasErrors"));
            CollectionAssert.AreEqual(expectedNodeArgs, nodeArgs, ObservableCollectionArgsComparer.Default);
        }
            public static void NodesForInputTypesTextBox()
            {
                var textBox    = new System.Windows.Controls.TextBox();
                var stackPanel = new StackPanel();

                stackPanel.Children.Add(textBox);
                var inputTypes = new InputTypeCollection {
                    typeof(System.Windows.Controls.TextBox), typeof(Selector)
                };

                Scope.SetForInputTypes(stackPanel, inputTypes);

                Assert.AreEqual(false, Scope.GetHasError(stackPanel));
                Assert.AreEqual(false, Scope.GetHasError(textBox));
                Assert.AreSame(ErrorCollection.EmptyValidationErrors, Scope.GetErrors(stackPanel));
                Assert.AreSame(ErrorCollection.EmptyValidationErrors, Scope.GetErrors(textBox));
                Assert.AreEqual(ValidNode.Default, Scope.GetNode(stackPanel));
                var errorNode = (InputNode)Scope.GetNode(textBox);

                Assert.AreEqual(false, errorNode.HasError);
                Assert.AreNotSame(ErrorCollection.EmptyValidationErrors, errorNode.Errors);
                CollectionAssert.IsEmpty(errorNode.Errors);
                CollectionAssert.IsEmpty(errorNode.Children);

                var validationError = TestValidationError.GetFor(textBox, System.Windows.Controls.TextBox.TextProperty);

                textBox.SetValidationError(validationError);

                Assert.AreEqual(true, Scope.GetHasError(stackPanel));
                Assert.AreEqual(true, Scope.GetHasError(textBox));
                var expectedErrors = new[] { validationError };

                CollectionAssert.AreEqual(expectedErrors, Scope.GetErrors(stackPanel));
                CollectionAssert.AreEqual(expectedErrors, Scope.GetErrors(textBox));

                var scopeNode = (ScopeNode)Scope.GetNode(stackPanel);

                CollectionAssert.AreEqual(new[] { errorNode }, scopeNode.Children);
                Assert.AreSame(errorNode, Scope.GetNode(textBox));
                Assert.AreEqual(true, scopeNode.HasError);
                Assert.AreEqual(true, errorNode.HasError);
                CollectionAssert.AreEqual(expectedErrors, scopeNode.Errors);
                CollectionAssert.AreEqual(expectedErrors, errorNode.Errors);

                textBox.ClearValidationError(validationError);
                Assert.AreEqual(false, Scope.GetHasError(stackPanel));
                Assert.AreEqual(false, Scope.GetHasError(textBox));
                Assert.AreSame(ErrorCollection.EmptyValidationErrors, Scope.GetErrors(stackPanel));
                Assert.AreSame(ErrorCollection.EmptyValidationErrors, Scope.GetErrors(textBox));
                Assert.AreEqual(ValidNode.Default, Scope.GetNode(stackPanel));
                Assert.AreSame(errorNode, Scope.GetNode(textBox));
                Assert.AreEqual(false, errorNode.HasError);
                Assert.AreNotSame(ErrorCollection.EmptyValidationErrors, errorNode.Errors);
                CollectionAssert.IsEmpty(errorNode.Errors);
                CollectionAssert.IsEmpty(errorNode.Children);
            }
Esempio n. 7
0
            public void UpdatesAndNotifiesError()
            {
                var textBox    = new System.Windows.Controls.TextBox();
                var inputTypes = new InputTypeCollection {
                    typeof(System.Windows.Controls.TextBox), typeof(Selector)
                };

                Scope.SetForInputTypes(textBox, inputTypes);
                Assert.AreEqual(false, Scope.GetHasError(textBox));
                var errorNode = (InputNode)Scope.GetNode(textBox);

                using (var errorArgs = errorNode.Errors.SubscribeObservableCollectionEvents())
                {
                    using (var nodeArgs = errorNode.SubscribePropertyChangedEvents())
                    {
                        Assert.AreEqual(textBox, errorNode.Source);
                        CollectionAssert.IsEmpty(errorNode.Children);
                        CollectionAssert.IsEmpty(errorNode.Errors);
                        var validationError = TestValidationError.GetFor(textBox, System.Windows.Controls.TextBox.TextProperty);
                        textBox.SetValidationError(validationError);
                        Assert.AreEqual(true, Scope.GetHasError(textBox));
                        errorNode = (InputNode)Scope.GetNode(textBox);
                        Assert.AreEqual(textBox, errorNode.Source);
                        CollectionAssert.IsEmpty(errorNode.Children);
                        CollectionAssert.AreEqual(new[] { validationError }, errorNode.Errors);

                        var expectedErrorArgs = new List <EventArgs>
                        {
                            new PropertyChangedEventArgs("Count"),
                            new PropertyChangedEventArgs("Item[]"),
                            new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, validationError, 0)
                        };
                        CollectionAssert.AreEqual(expectedErrorArgs, errorArgs, ObservableCollectionArgsComparer.Default);
                        CollectionAssert.AreEqual(new[] { new PropertyChangedEventArgs(nameof(Node.HasError)) }, nodeArgs, PropertyChangedEventArgsComparer.Default);

                        textBox.ClearValidationError(validationError);
                        Assert.AreEqual(false, Scope.GetHasError(textBox));
                        Assert.AreSame(errorNode, Scope.GetNode(textBox));
                        Assert.AreEqual(textBox, errorNode.Source);
                        CollectionAssert.IsEmpty(errorNode.Children);
                        CollectionAssert.IsEmpty(errorNode.Errors);

                        expectedErrorArgs.Add(new PropertyChangedEventArgs("Count"));
                        expectedErrorArgs.Add(new PropertyChangedEventArgs("Item[]"));
                        expectedErrorArgs.Add(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, validationError, 0));
                        CollectionAssert.AreEqual(expectedErrorArgs, errorArgs, ObservableCollectionArgsComparer.Default);

                        CollectionAssert.AreEqual(new[] { new PropertyChangedEventArgs(nameof(Node.HasError)), new PropertyChangedEventArgs(nameof(Node.HasError)) }, nodeArgs, PropertyChangedEventArgsComparer.Default);
                    }
                }
            }
        public static TestValidationError GetFor(BindingExpression expression)
        {
            var source = (UIElement)expression.ParentBinding.Source;
            var match = Cache.SingleOrDefault(x => ReferenceEquals(x.Item1, source));
            if (match != null)
            {
                return match.Item2;
            }

            var error = new TestValidationError(expression.ParentBinding);
            Cache.Add(Tuple.Create(source, error));

            return error;
        }
            public static void UpdatesErrors()
            {
                var textBox    = new System.Windows.Controls.TextBox();
                var stackPanel = new StackPanel();

                stackPanel.Children.Add(textBox);
                var inputTypes = new InputTypeCollection {
                    typeof(System.Windows.Controls.TextBox), typeof(Selector)
                };

                Scope.SetForInputTypes(stackPanel, inputTypes);

                Assert.AreEqual(false, Scope.GetHasError(stackPanel));
                Assert.AreEqual(ValidNode.Default, Scope.GetNode(stackPanel));

                Assert.AreEqual(false, Scope.GetHasError(textBox));
                var inputNode = (InputNode)Scope.GetNode(textBox);

                Assert.AreEqual(textBox, inputNode.Source);
                CollectionAssert.IsEmpty(inputNode.Children);
                CollectionAssert.IsEmpty(inputNode.Errors);

                var validationError = TestValidationError.GetFor(textBox, System.Windows.Controls.TextBox.TextProperty);

                textBox.SetValidationError(validationError);
                Assert.AreEqual(true, Scope.GetHasError(stackPanel));
                var scopeNode = (ScopeNode)Scope.GetNode(stackPanel);

                Assert.AreEqual(stackPanel, scopeNode.Source);
                Assert.AreEqual(1, scopeNode.Children.Count);
                CollectionAssert.AreEqual(new[] { validationError }, scopeNode.Errors);

                Assert.AreEqual(true, Scope.GetHasError(textBox));
                Assert.AreSame(inputNode, Scope.GetNode(textBox));
                Assert.AreEqual(textBox, inputNode.Source);
                CollectionAssert.IsEmpty(inputNode.Children);
                CollectionAssert.AreEqual(new[] { validationError }, inputNode.Errors);

                textBox.ClearValidationError(validationError);
                Assert.AreEqual(false, Scope.GetHasError(stackPanel));
                Assert.AreEqual(ValidNode.Default, Scope.GetNode(stackPanel));

                Assert.AreEqual(false, Scope.GetHasError(textBox));
                Assert.AreSame(inputNode, Scope.GetNode(textBox));
                Assert.AreEqual(textBox, inputNode.Source);
                CollectionAssert.IsEmpty(inputNode.Children);
                CollectionAssert.IsEmpty(inputNode.Errors);
            }
Esempio n. 10
0
        public static TestValidationError GetFor(BindingExpression expression)
        {
            var source = (UIElement)expression.ParentBinding.Source;
            var match  = Cache.SingleOrDefault(x => ReferenceEquals(x.Item1, source));

            if (match != null)
            {
                return(match.Item2);
            }

            var error = new TestValidationError(expression.ParentBinding);

            Cache.Add(Tuple.Create(source, error));

            return(error);
        }
Esempio n. 11
0
            public void Errors()
            {
                var textBox    = new TextBox();
                var stackPanel = new StackPanel();

                stackPanel.Children.Add(textBox);
                var inputTypes = new InputTypeCollection {
                    typeof(TextBox), typeof(Selector)
                };

                stackPanel.SetForInputTypes(inputTypes);

                Assert.AreEqual(false, Scope.GetHasErrors(stackPanel));
                IErrorNode errorNode = (ScopeNode)Scope.GetErrors(stackPanel);

                Assert.AreEqual(null, errorNode);

                Assert.AreEqual(false, Scope.GetHasErrors(textBox));
                errorNode = (ErrorNode)Scope.GetErrors(textBox);
                Assert.AreEqual(textBox, errorNode.Source);
                CollectionAssert.IsEmpty(errorNode.Children);
                CollectionAssert.IsEmpty(errorNode.Errors);

                textBox.SetValidationError();
                Assert.AreEqual(true, Scope.GetHasErrors(stackPanel));
                errorNode = (ScopeNode)Scope.GetErrors(stackPanel);
                Assert.AreEqual(stackPanel, errorNode.Source);
                Assert.AreEqual(1, errorNode.Children.Count);
                CollectionAssert.AreEqual(new[] { TestValidationError.GetFor(textBox) }, errorNode.Errors);

                Assert.AreEqual(true, Scope.GetHasErrors(textBox));
                errorNode = (ErrorNode)Scope.GetErrors(textBox);
                Assert.AreEqual(textBox, errorNode.Source);
                CollectionAssert.IsEmpty(errorNode.Children);
                CollectionAssert.AreEqual(new[] { TestValidationError.GetFor(textBox) }, errorNode.Errors);

                textBox.ClearValidationError();
                Assert.AreEqual(false, Scope.GetHasErrors(stackPanel));
                errorNode = (ScopeNode)Scope.GetErrors(stackPanel);
                Assert.AreEqual(null, errorNode);

                Assert.AreEqual(false, Scope.GetHasErrors(textBox));
                errorNode = (ErrorNode)Scope.GetErrors(textBox);
                Assert.AreEqual(textBox, errorNode.Source);
                CollectionAssert.IsEmpty(errorNode.Children);
                CollectionAssert.IsEmpty(errorNode.Errors);
            }
Esempio n. 12
0
 public static ValidationError CreateValidationError()
 {
     return(TestValidationError.Create());
 }
Esempio n. 13
0
 internal static ValidationError CreateValidationError()
 {
     return(TestValidationError.Create());
 }
 public static TestValidationError GetFor(UIElement element, DependencyProperty property)
 {
     return(TestValidationError.GetFor(BindingOperations.SetBinding(element, property, new Binding("Foo"))));
 }