Example #1
0
        /// <summary>
        /// Compare ValidationSummaryItems for display in the ValidationSummary
        /// </summary>
        /// <param name="x">The first reference used for comparison.</param>
        /// <param name="y">The second reference used for comparison.</param>
        /// <returns>The result of the comparison check between the two references.</returns>
        internal static int CompareValidationSummaryItems(ValidationSummaryItem x, ValidationSummaryItem y)
        {
            int returnVal;

            if (!ReferencesAreValid(x, y, out returnVal))
            {
                // Do a null comparison check if one (or both) are null
                return(returnVal);
            }

            // Compare ErrorSource
            if (TryCompareReferences(x.ItemType, y.ItemType, out returnVal))
            {
                return(returnVal);
            }

            // Compare Control
            Control controlX = x.Sources.Count > 0 ? x.Sources[0].Control : null;
            Control controlY = y.Sources.Count > 0 ? y.Sources[0].Control : null;

            if (controlX != controlY)
            {
                if (!ReferencesAreValid(controlX, controlY, out returnVal))
                {
                    // Do a null comparison check if one is null
                    return(returnVal);
                }

                // Both are controls
                if (controlX.TabIndex != controlY.TabIndex)
                {
                    // Sort by TabIndex
                    return(controlX.TabIndex.CompareTo(controlY.TabIndex));
                }

                // Both share the same parent, sort by index
                returnVal = SortByVisualTreeOrdering(controlX, controlY);
                if (returnVal != 0)
                {
                    return(returnVal);
                }

                // TabIndexes and ordering are the same, move to next check
                if (TryCompareReferences(controlX.Name, controlY.Name, out returnVal))
                {
                    return(returnVal);
                }
            }

            // If we reached this point, we could not compare by Control, TabIndex, nor Name.
            // Compare by MessageHeader
            if (TryCompareReferences(x.MessageHeader, y.MessageHeader, out returnVal))
            {
                return(returnVal);
            }

            // Compare by ErrorMessage
            TryCompareReferences(x.Message, y.Message, out returnVal);
            return(returnVal);
        }
Example #2
0
        /// <summary>
        /// Function to publish message to the message panel.
        /// </summary>
        /// <param name="msg"></param>
        public void PublishMessage(XElement msg)
        {
            string severity = string.Empty;

            if (msg.Attribute(Common.MessageType) != null)
            {
                severity = msg.Attribute(Common.MessageType).Value.ToUpper();
            }

            string message = msg.Value;

            ValidationSummaryItem item = new ValidationSummaryItem(msg.Value);

            //TextBlock MSG = new TextBlock();
            //MSG.Text = message;
            //if (severity == "ERROR")
            //{
            //    MSG.Foreground = new SolidColorBrush(Colors.Red);
            //}
            //else if (severity == "WARNING")
            //{
            //    MSG.Foreground = new SolidColorBrush(Colors.Black);
            //}
            //else
            //{
            //    MSG.Foreground = new SolidColorBrush(Colors.Green);
            //}

            if (msg.Attribute(Common.PopupMessage) != null && Common.boolValue(msg.Attribute(Common.PopupMessage).Value))
            {
                ApplicationEx.Instance.DisplayMessageBox(message, severity);
            }

            this.Errors.Add(item);
        }
        public void ValidationSummaryPeerInvoke()
        {
            ValidationSummaryTestPage page = new ValidationSummaryTestPage();

            this.TestPanel.Children.Add(page);
            ValidationSummary vs = page.validationSummary;

            this.EnqueueConditional(() => { return(page.validationSummary.Initialized); });
            this.EnqueueCallback(() =>
            {
                bool clicked = false;
                FocusingInvalidControlEventArgs eArgs = null;
                ValidationSummaryItem vsi             = null;
                vs.FocusingInvalidControl            += new EventHandler <FocusingInvalidControlEventArgs>(delegate(object o, FocusingInvalidControlEventArgs e)
                {
                    clicked = true;
                    eArgs   = e;
                    vsi     = e.Item;
                });

                ValidationSummaryAutomationPeer peer = new ValidationSummaryAutomationPeer(vs);
                Assert.IsNotNull(peer);
                ((IInvokeProvider)peer).Invoke();
                Assert.IsFalse(clicked, "No error is selected, so the event should not fire");

                ValidationSummaryItem newEsi = new ValidationSummaryItem(null, "test error", ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource("property name", page.nameTextBox), this);
                vs.Errors.Add(newEsi);
                vs.ErrorsListBoxInternal.SelectedItem = newEsi;
                ((IInvokeProvider)peer).Invoke();
                Assert.IsTrue(clicked, "Invoking with a selected ESI triggers the event to fire");
                Assert.AreEqual(newEsi, vsi, "The ESI should match the selected item");
                Assert.AreEqual("property name", eArgs.Target.PropertyName, "The source should match the selected item");
            });
            EnqueueTestComplete();
        }
        public void ValidationSummaryPeerInvoke()
        {
            ValidationSummaryTestPage page = new ValidationSummaryTestPage();
            this.TestPanel.Children.Add(page);
            ValidationSummary vs = page.validationSummary;

            this.EnqueueConditional(() => { return page.validationSummary.Initialized; });
            this.EnqueueCallback(() =>
            {
                bool clicked = false;
                FocusingInvalidControlEventArgs eArgs = null;
                ValidationSummaryItem vsi = null;
                vs.FocusingInvalidControl += new EventHandler<FocusingInvalidControlEventArgs>(delegate(object o, FocusingInvalidControlEventArgs e)
                {
                    clicked = true;
                    eArgs = e;
                    vsi = e.Item;
                });

                ValidationSummaryAutomationPeer peer = new ValidationSummaryAutomationPeer(vs);
                Assert.IsNotNull(peer);
                ((IInvokeProvider)peer).Invoke();
                Assert.IsFalse(clicked, "No error is selected, so the event should not fire");

                ValidationSummaryItem newEsi = new ValidationSummaryItem(null, "test error", ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource("property name", page.nameTextBox), this);
                vs.Errors.Add(newEsi);
                vs.ErrorsListBoxInternal.SelectedItem = newEsi;
                ((IInvokeProvider)peer).Invoke();
                Assert.IsTrue(clicked, "Invoking with a selected ESI triggers the event to fire");
                Assert.AreEqual(newEsi, vsi, "The ESI should match the selected item");
                Assert.AreEqual("property name", eArgs.Target.PropertyName, "The source should match the selected item");
            });
            EnqueueTestComplete();
        }
Example #5
0
        private void ExecuteClick(object sender)
        {
            ListBox lb = sender as ListBox;

            if (lb != null)
            {
                ValidationSummaryItem vsi = lb.SelectedItem as ValidationSummaryItem;
                if (vsi != null && this.FocusControlsOnClick)
                {
                    int idx;
                    // Ensure the currently selected item source is valid
                    if (vsi.Sources.Count == 0)
                    {
                        // Clear the current ESI source if the ESI has none, such as when the ESI has changed
                        this._currentValidationSummaryItemSource = null;
                    }
                    else
                    {
                        // If the current ESI source is not part of the current set, select the first one by default.
                        idx = FindMatchingErrorSource(vsi.Sources, this._currentValidationSummaryItemSource);
                        if (idx < 0)
                        {
                            this._currentValidationSummaryItemSource = vsi.Sources[0];
                        }
                    }

                    // Raise the event
                    FocusingInvalidControlEventArgs e = new FocusingInvalidControlEventArgs(vsi, this._currentValidationSummaryItemSource);
                    this.OnFocusingInvalidControl(e);

#if OPENSILVER
                    // Raise the AutomationPeer event
                    ValidationSummaryAutomationPeer peer = ValidationSummaryAutomationPeer.FromElement(this) as ValidationSummaryAutomationPeer;
                    if (peer != null && AutomationPeer.ListenerExists(AutomationEvents.InvokePatternOnInvoked))
                    {
                        peer.RaiseAutomationEvent(AutomationEvents.InvokePatternOnInvoked);
                    }
#endif

                    // Focus the target, which will usually be the current ESI source or the overwritten one
                    if (!e.Handled && e.Target != null && e.Target.Control != null)
                    {
                        e.Target.Control.Focus();
                    }

                    // Update currently selected item, but only if there are multiple ESI sources.
                    if (vsi.Sources.Count > 0)
                    {
                        idx = FindMatchingErrorSource(vsi.Sources, e.Target);
                        idx = idx < 0 ? 0 : ++idx % vsi.Sources.Count;
                        this._currentValidationSummaryItemSource = vsi.Sources[idx];
                    }
                }
            }
        }
Example #6
0
        public void FocusCycling()
        {
            ValidationSummaryTestPage page = new ValidationSummaryTestPage();

            this.TestPanel.Children.Add(page);
            ValidationSummary vs = page.validationSummary;

            this.EnqueueConditional(() => { return(page.validationSummary.Initialized); });
            this.EnqueueCallback(() =>
            {
                page.nameTextBox.Text = "ABCDEFG!@#$";
                Assert.AreEqual(1, vs.Errors.Count);

                ValidationSummaryItem newVsi = new ValidationSummaryItem(null, "test error", ValidationSummaryItemType.ObjectError, null, null);

                ValidationSummaryItemSource source1 = new ValidationSummaryItemSource("prop1", page.nameTextBox);
                newVsi.Sources.Add(source1);
                ValidationSummaryItemSource source2 = new ValidationSummaryItemSource("prop2", page.emailTextBox);
                newVsi.Sources.Add(source2);

                vs.Errors.Add(newVsi);
                ValidationSummaryItem newVsi2 = new ValidationSummaryItem(null, "test error", ValidationSummaryItemType.ObjectError, null, null);
                vs.Errors.Add(newVsi2);

                // Setup the delegate to capture the event
                vs.ErrorsListBoxInternal.SelectedItem      = newVsi;
                ValidationSummaryItemSource selectedSource = null;
                vs.FocusingInvalidControl += new EventHandler <FocusingInvalidControlEventArgs>(delegate(object o, FocusingInvalidControlEventArgs e)
                {
                    selectedSource = e.Target;
                });

                // First click
                vs.ExecuteClickInternal();
                Assert.AreEqual(source1, selectedSource);

                // Second
                vs.ExecuteClickInternal();
                Assert.AreEqual(source2, selectedSource);

                // Cycle back
                vs.ExecuteClickInternal();
                Assert.AreEqual(source1, selectedSource);

                // Change the ESI
                vs.ErrorsListBoxInternal.SelectedItem = newVsi2;

                // First click with new ESI
                vs.ExecuteClickInternal();
                Assert.AreEqual(null, selectedSource);
            });

            EnqueueTestComplete();
        }
Example #7
0
        public void ErrorUpdates()
        {
            ValidationSummaryTestPage page = new ValidationSummaryTestPage();

            this.TestPanel.Children.Add(page);
            ValidationSummary vs = page.validationSummary;

            this.EnqueueConditional(() => { return(page.validationSummary.Initialized); });
            this.EnqueueCallback(() =>
            {
                Assert.IsNotNull(vs);
                BindingExpression be = page.nameTextBox.GetBindingExpression(TextBox.TextProperty);
                Assert.IsNotNull(be);

                // Cause a validation error via the input control
                page.nameTextBox.Text = "ABCDEFG!@#$";
                ReadOnlyObservableCollection <ValidationError> errors = Validation.GetErrors(page.nameTextBox);
                Assert.AreEqual(1, errors.Count);
                Assert.AreEqual(1, vs.Errors.Count);
                Assert.AreEqual(errors[0].Exception.Message, vs.Errors[0].Message);
                Assert.IsTrue(vs.HasErrors);

                // Fix the error
                page.nameTextBox.Text = "abcd";
                errors = Validation.GetErrors(page.nameTextBox);
                Assert.AreEqual(0, errors.Count);
                Assert.AreEqual(0, vs.Errors.Count);
                Assert.IsFalse(vs.HasErrors);

                // Check ValidationErrorCollection
                page.nameTextBox.Text                    = "ABCDEFG!@#$";
                ValidationSummaryItem newError           = new ValidationSummaryItem(null, "new error", ValidationSummaryItemType.ObjectError, null, null);
                ValidationItemCollection errorCollection = vs.Errors as ValidationItemCollection;

                System.Collections.Specialized.NotifyCollectionChangedEventHandler handler =
                    new System.Collections.Specialized.NotifyCollectionChangedEventHandler(
                        delegate(object o, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
                {
                    Assert.AreEqual(newError, e.NewItems[0], "new error does not match");
                });

                errorCollection.CollectionChanged += handler;
                Assert.AreEqual(1, errorCollection.Count);
                errorCollection.Add(newError);
                errorCollection.CollectionChanged -= handler;
                Assert.AreEqual(2, errorCollection.Count);
                errorCollection.ClearErrors(ValidationSummaryItemType.ObjectError);
                Assert.AreEqual(1, errorCollection.Count);
            });
            EnqueueTestComplete();
        }
Example #8
0
        void insrt_isUsernamesExistCompleted(object sender, isUsernamesExistCompletedEventArgs e)
        {
            UsersNotExist = e.Result;

            if (UsersNotExist == "")
            {
                vldSum.Errors.Clear();
                bm.ValidateAll();
            }
            else
            {
                ValidationSummaryItem vsiUE = new ValidationSummaryItem("Users doesn't exist:" + UsersNotExist);
                vldSum.Errors.Clear();
                bm.ValidateAll();
                vldSum.Errors.Add(vsiUE);
            }
        }
Example #9
0
        public void FocusingInvalidControl()
        {
            ValidationSummaryTestPage page = new ValidationSummaryTestPage();

            this.TestPanel.Children.Add(page);
            ValidationSummary vs = page.validationSummary;

            this.EnqueueConditional(() => { return(page.validationSummary.Initialized); });
            this.EnqueueCallback(() =>
            {
                page.nameTextBox.Text = "ABCDEFG!@#$";
                Assert.AreEqual(1, vs.Errors.Count);
                bool clicked = false;

                // Setup the delegate to capture the event
                vs.ErrorsListBoxInternal.SelectedIndex = 0;

                FocusingInvalidControlEventArgs eArgs = null;
                ValidationSummaryItem vsi             = null;
                vs.FocusingInvalidControl            += new EventHandler <FocusingInvalidControlEventArgs>(delegate(object o, FocusingInvalidControlEventArgs e)
                {
                    clicked = true;
                    eArgs   = e;
                    vsi     = e.Item;
                });

                // Simulate a click on the first item
                vs.ExecuteClickInternal();
                Assert.IsTrue(clicked);
                Assert.IsNotNull(eArgs);
                Assert.IsNotNull(vsi);
                Assert.AreEqual("Name", vsi.Sources[0].PropertyName);

                // Set the flag to false, clicks should no longer occur, as it only affects focus
                vs.FocusControlsOnClick = false;
                clicked = false;
                eArgs   = null;
                vs.ExecuteClickInternal();
                Assert.IsFalse(clicked);
                Assert.IsNull(eArgs);
            });
            EnqueueTestComplete();
        }
Example #10
0
        public void ErrorClickedSelectedItem()
        {
            ValidationSummaryTestPage page = new ValidationSummaryTestPage();

            this.TestPanel.Children.Add(page);
            ValidationSummary vs = page.validationSummary;

            this.EnqueueConditional(() => { return(page.validationSummary.Initialized); });
            this.EnqueueCallback(() =>
            {
                page.nameTextBox.Text = "ABCDEFG!@#$";
                Assert.AreEqual(1, vs.Errors.Count);

                ValidationSummaryItem newVsi = new ValidationSummaryItem("test error", null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource("property name", page.nameTextBox), this);
                vs.Errors.Add(newVsi);

                bool clicked = false;

                // Setup the delegate to capture the event
                vs.ErrorsListBoxInternal.SelectedItem = newVsi;
                FocusingInvalidControlEventArgs eArgs = null;
                ValidationSummaryItem vsi             = null;
                vs.FocusingInvalidControl            += new EventHandler <FocusingInvalidControlEventArgs>(delegate(object o, FocusingInvalidControlEventArgs e)
                {
                    clicked = true;
                    eArgs   = e;
                    vsi     = e.Item;
                });

                // Simulate a click on the first item
                vs.ExecuteClickInternal();
                Assert.IsTrue(clicked);
                Assert.IsNotNull(vsi);
                Assert.AreEqual("test error", vsi.Message);
                Assert.AreEqual(ValidationSummaryItemType.ObjectError, vsi.ItemType);
                Assert.AreEqual(this, vsi.Context);
                Assert.AreEqual(page.nameTextBox, vsi.Sources[0].Control);
                Assert.AreEqual("property name", vsi.Sources[0].PropertyName);
            });
            EnqueueTestComplete();
        }
Example #11
0
        public void DisplayedErrors_ItemTypeUpdates()
        {
            ValidationSummaryTestPage page = new ValidationSummaryTestPage();

            this.TestPanel.Children.Add(page);
            ValidationSummary vs = page.validationSummary;

            this.EnqueueConditional(() => { return(page.validationSummary.Initialized); });
            this.EnqueueCallback(() =>
            {
                Assert.IsNotNull(vs);
                BindingExpression be = page.nameTextBox.GetBindingExpression(TextBox.TextProperty);
                Assert.IsNotNull(be);

                // Cause a validation error via the input control
                page.nameTextBox.Text = "ABCDEFG!@#$";
                Assert.AreEqual(1, vs.DisplayedErrors.Count);
                Assert.IsTrue(vs.HasErrors);
                Assert.IsTrue(vs.HasDisplayedErrors);

                // Add object error
                ValidationSummaryItem newError = new ValidationSummaryItem(null, "new error", ValidationSummaryItemType.ObjectError, null, null);
                vs.Errors.Add(newError);
                Assert.AreEqual(2, vs.DisplayedErrors.Count);
                Assert.IsTrue(vs.HasErrors);
                Assert.IsTrue(vs.HasDisplayedErrors);

                // Change filter
                vs.Filter = ValidationSummaryFilters.ObjectErrors;
                Assert.AreEqual(1, vs.DisplayedErrors.Count);
                Assert.IsTrue(vs.HasErrors);
                Assert.IsTrue(vs.HasDisplayedErrors);

                // Change ItemType so that there's no object errors
                newError.ItemType = ValidationSummaryItemType.PropertyError;
                Assert.AreEqual(0, vs.DisplayedErrors.Count);
                Assert.IsTrue(vs.HasErrors);
                Assert.IsFalse(vs.HasDisplayedErrors);
            });
            EnqueueTestComplete();
        }
Example #12
0
        public void SelectionChanged()
        {
            ValidationSummaryTestPage page = new ValidationSummaryTestPage();

            this.TestPanel.Children.Add(page);
            ValidationSummary vs = page.validationSummary;

            this.EnqueueConditional(() => { return(page.validationSummary.Initialized); });
            this.EnqueueCallback(() =>
            {
                page.nameTextBox.Text = "ABCDEFG!@#$";
                Assert.AreEqual(1, vs.Errors.Count);

                ValidationSummaryItem newEsi = new ValidationSummaryItem(null, "test error", ValidationSummaryItemType.ObjectError, null, null);

                ValidationSummaryItemSource source1 = new ValidationSummaryItemSource("prop1", page.nameTextBox);
                newEsi.Sources.Add(source1);
                ValidationSummaryItemSource source2 = new ValidationSummaryItemSource("prop2", page.emailTextBox);
                newEsi.Sources.Add(source2);

                vs.Errors.Add(newEsi);
                ValidationSummaryItem newEsi2 = new ValidationSummaryItem(null, "test error", ValidationSummaryItemType.ObjectError, null, null);
                vs.Errors.Add(newEsi2);

                // Setup the delegate to capture the event
                bool selectionChanged = false;
                vs.SelectionChanged  += new EventHandler <SelectionChangedEventArgs>(delegate(object o, SelectionChangedEventArgs e)
                {
                    selectionChanged = true;
                });

                vs.ErrorsListBoxInternal.SelectedItem = newEsi;
                vs.ErrorsListBoxInternal.SelectedItem = newEsi2;
                // First click
                vs.ExecuteClickInternal();
                Assert.IsTrue(selectionChanged);
            });

            EnqueueTestComplete();
        }
Example #13
0
        private void Target_BindingValidationError(object sender, ValidationErrorEventArgs e)
        {
            FrameworkElement inputControl = e.OriginalSource as FrameworkElement;

            if (e != null && e.Error != null && e.Error.ErrorContent != null && inputControl != null)
            {
                string message = e.Error.ErrorContent.ToString();
#if NETSTANDARD
                string key = String.IsNullOrEmpty(inputControl.Name) ? inputControl.GetHashCode().ToString(CultureInfo.InvariantCulture) : inputControl.Name;
#else
                string key = String.IsNullOrEmpty(inputControl.Name) ? inputControl.GetHashCode().ToString(null, CultureInfo.InvariantCulture) : inputControl.Name;
#endif
                key += message;
                if (this._validationSummaryItemDictionary.ContainsKey(key))
                {
                    ValidationSummaryItem existingError = this._validationSummaryItemDictionary[key];
                    this._errors.Remove(existingError);
                    this._validationSummaryItemDictionary.Remove(key);
                }
                if (e.Action == ValidationErrorEventAction.Added)
                {
                    if (GetShowErrorsInSummary(inputControl))
                    {
                        // New error
                        string             propertyName = null;
                        object             entity;
                        BindingExpression  be;
                        ValidationMetadata vmd = ValidationHelper.ParseMetadata(inputControl, false, out entity, out be);
                        if (vmd != null)
                        {
                            propertyName = vmd.Caption;
                        }
                        ValidationSummaryItem vsi = new ValidationSummaryItem(message, propertyName, ValidationSummaryItemType.PropertyError, new ValidationSummaryItemSource(propertyName, inputControl as Control), null);
                        this._errors.Add(vsi);
                        this._validationSummaryItemDictionary[key] = vsi;
                    }
                }
            }
        }
    void target_BindingValidationError(object sender, ValidationErrorEventArgs e)
    {
        FrameworkElement inputControl = e.OriginalSource as FrameworkElement;

        if (((e != null) && (e.Error != null)) && ((e.Error.ErrorContent != null) && (inputControl != null)))
        {
            string message = e.Error.ErrorContent.ToString();
            string goodkey = inputControl.GetHashCode().ToString(CultureInfo.InvariantCulture);
            goodkey = goodkey + message;

            if (e.Action == ValidationErrorEventAction.Added && ValidationSummary.GetShowErrorsInSummary(inputControl))
            {
                string messageHeader       = null;
                ValidationSummaryItem item = new ValidationSummaryItem(message, messageHeader, ValidationSummaryItemType.PropertyError, new ValidationSummaryItemSource(messageHeader, inputControl as Control), null);
                _validationErrors[goodkey] = item;
            }
            else
            {
                _validationErrors.Remove(goodkey);
            }
        }

        UpdateDisplayedErrors();
    }
Example #15
0
 //
 // Summary:
 //     Initializes a new instance of the System.Windows.Controls.FocusingInvalidControlEventArgs
 //     class.
 //
 // Parameters:
 //   item:
 //     The error that is selected in the System.Windows.Controls.ValidationSummary list.
 //
 //   target:
 //     The control/property pair that will receive focus.
 public FocusingInvalidControlEventArgs(ValidationSummaryItem item, ValidationSummaryItemSource target)
 {
 }
 /// <summary>
 /// Initializes a new instance of the ValidationSummaryItemEventArgs class.
 /// </summary>
 /// <param name="item">The selected ValidationSummaryItem</param>
 /// <param name="target">The target is the ValidationSummaryItemSource that will be focused.</param>
 public FocusingInvalidControlEventArgs(ValidationSummaryItem item, ValidationSummaryItemSource target)
 {
     this.Handled = false;
     this.Item    = item;
     this.Target  = target;
 }
 /// <summary>
 /// Initializes a new instance of the ValidationSummaryItemEventArgs class.
 /// </summary>
 /// <param name="item">The selected ValidationSummaryItem</param>
 /// <param name="target">The target is the ValidationSummaryItemSource that will be focused.</param>
 public FocusingInvalidControlEventArgs(ValidationSummaryItem item, ValidationSummaryItemSource target)
 {
     this.Handled = false;
     this.Item = item;
     this.Target = target;
 }
Example #18
0
        public void ErrorInfoSorting()
        {
            ValidationSummaryItem     ei1  = new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, null, null);
            ValidationSummaryTestPage page = new ValidationSummaryTestPage();

            // 1. Compare ErrorInfo reference
            Assert.AreEqual <int>(0, ValidationSummary.CompareValidationSummaryItems(null, null), "1. null null");
            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(null, ei1), "1. null ei1");
            Assert.AreEqual <int>(1, ValidationSummary.CompareValidationSummaryItems(ei1, null), "1. ei1 null");

            // 2. Compare ErrorType
            Assert.AreEqual <int>(0, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, null, null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, null, null)),
                                  "2. None None");

            Assert.AreEqual <int>(0, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, null, null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, null, null)),
                                  "2. EntityError EntityError");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, null, null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.PropertyError, null, null)),
                                  "2. EntityError PropertyError");

            Assert.AreEqual <int>(1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.PropertyError, null, null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, null, null)),
                                  "2. PropertyError EntityError");

            // 3. Compare Control
            Assert.AreEqual <int>(0, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, null, null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, null, null)),
                                  "3. null null");

            Assert.AreEqual <int>(0, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "3. tb1 tb1");

            Assert.AreEqual <int>(1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, null), null)),
                                  "3. tb1 null");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, null), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "3. null tb1");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb2), null)),
                                  "3. tb1 tb2");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb2), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb4), null)),
                                  "3. tb2 tb4 increasing tabindex");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb6), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb2), null)),
                                  "3. tb6 tb2 decreasing tabindex");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb3), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb5), null)),
                                  "3. tb3 tb5 increasing tabindex");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb3), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb7), null)),
                                  "3. tb3 tb7 Name compare");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb7), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb6), null)),
                                  "3. tb7 tb6 ordering compare");

            TextBox tbNoName = new TextBox();

            tbNoName.TabIndex = 2;
            Assert.AreEqual <int>(1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb7), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, tbNoName), null)),
                                  "3. tb7 tbNoName Name compare");

            // 4. MessageHeader compare
            Assert.AreEqual <int>(0, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "4. null null");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem("", null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "4. null ''");

            Assert.AreEqual <int>(1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem("blah", null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "4. blah null");

            // 5. ErrorMessage
            Assert.AreEqual <int>(0, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "5. null null");

            Assert.AreEqual <int>(1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem("a", null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "5. a null");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem(null, null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem("a", null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "5. null a");

            Assert.AreEqual <int>(1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem("b", null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem("a", null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "5. b a");

            Assert.AreEqual <int>(-1, ValidationSummary.CompareValidationSummaryItems(
                                      new ValidationSummaryItem("a", null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null),
                                      new ValidationSummaryItem("b", null, ValidationSummaryItemType.ObjectError, new ValidationSummaryItemSource(null, page.tb1), null)),
                                  "5. a b");
        }