public static bool DoValidate(this ValidationProvider validationProvider, Control ctrl) { var ttt = validationProvider.GetPerformValidation(ctrl); if (ttt) { validationProvider.PerformValidation(ctrl); } foreach (Control control in ctrl.Controls) { DoValidate(validationProvider, control); } return(validationProvider.IsValid); }
public void ValueConvertingCallbackSettingConversionErrorMessageWillCauseValidationToBeSkippedAndSetTheControlAsInvalid() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.ValueConvert += OnValueConvertFailing; MockControl control1 = new MockControl(); validationProvider.SetSourcePropertyName(control1, "IntProperty"); control1.Text = "5"; validationProvider.PerformValidation(control1); Assert.IsNotNull(valueConvertEventArgs); // callback was called Assert.AreEqual(0, MockValidator<object>.CreatedValidators[0].ValidatedTargets.Count); // nothing got validated Assert.IsFalse(validationProvider.IsValid); // but the provider is invalid }
public void ValueConvertingCallbackIsInvokedIfSetWhenValidatingAndTheConvertedValueIsUsedForValidation() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.ValueConvert += OnValueConvert; MockControl control1 = new MockControl(); validationProvider.SetSourcePropertyName(control1, "IntProperty"); control1.Text = "5"; validationProvider.PerformValidation(control1); Assert.IsNotNull(valueConvertEventArgs); Assert.AreEqual(typeof(int), valueConvertEventArgs.TargetType); Assert.AreEqual("5", valueConvertEventArgs.ValueToConvert); Assert.AreEqual(500, valueConvertEventArgs.ConvertedValue); //Assert.AreSame(control1, this.valueConvertEventArgs.ValueSource); Assert.AreEqual("IntProperty", valueConvertEventArgs.SourcePropertyName); Assert.AreEqual(500, MockValidator<object>.CreatedValidators[0].ValidatedTargets[0]); }
public void ExistingValidationErrorsAreClearedWhenDisablingValidationProviderButNotSetAgainWhenEnablingTheValidationProvider() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.RulesetName = "validation"; MockControl control1 = new MockControl(); validationProvider.SetSourcePropertyName(control1, "StringProperty"); ErrorProvider errorProvider = new ErrorProvider(); validationProvider.ErrorProvider = errorProvider; control1.Text = "too long"; validationProvider.PerformValidation(control1); Assert.AreEqual("validation", errorProvider.GetError(control1)); validationProvider.Enabled = false; // set validation provider to disabled Assert.AreEqual("", errorProvider.GetError(control1)); validationProvider.Enabled = true; // set validation provider to enabled Assert.AreEqual("", errorProvider.GetError(control1)); }
public void InvalidValidationProviderBecomesValidWhenDisabledAndRemainsValidWhenReenabled() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.RulesetName = "validation"; MockControl control1 = new MockControl(); validationProvider.SetSourcePropertyName(control1, "StringProperty"); control1.Text = "too long"; validationProvider.PerformValidation(control1); Assert.IsFalse(validationProvider.IsValid); validationProvider.Enabled = false; // set validation provider to disabled Assert.IsTrue(validationProvider.IsValid); validationProvider.Enabled = true; // set validation provider to enabled Assert.IsTrue(validationProvider.IsValid); }
public void ValidationWillNotBePerformedIfValidationProviderIsDisabledAndCallbackWillNotBeInvoked() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.RulesetName = "validation"; validationProvider.Enabled = false; // set validation provider to disabled validationProvider.ValidationPerformed += OnValidationPerformed; MockControl control1 = new MockControl(); validationProvider.SetSourcePropertyName(control1, "StringProperty"); control1.Text = "too long"; validationProvider.PerformValidation(control1); Assert.IsTrue(validationProvider.IsValid); Assert.IsNull(validationPerformedEventArgs); }
public void ErrorsInErrorProviderForValidatedControlsAreClearedByValidatorProviderDispose() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.RulesetName = "validation"; ErrorProvider errorProvider = new ErrorProvider(); validationProvider.ErrorProvider = errorProvider; MockControl controlWithoutError = new MockControl(); controlWithoutError.Text = "short"; validationProvider.SetSourcePropertyName(controlWithoutError, "StringProperty"); MockControl controlWithError = new MockControl(); controlWithError.Text = "too long"; validationProvider.SetSourcePropertyName(controlWithError, "StringProperty"); MockControl controlWithoutValidation = new MockControl(); controlWithoutValidation.Text = "too long"; validationProvider.PerformValidation(controlWithoutError); validationProvider.PerformValidation(controlWithError); errorProvider.SetError(controlWithoutValidation, "an unmanaged error"); Assert.AreEqual(string.Empty, errorProvider.GetError(controlWithoutError)); Assert.AreEqual("validation", errorProvider.GetError(controlWithError)); Assert.AreEqual("an unmanaged error", errorProvider.GetError(controlWithoutValidation)); validationProvider.Dispose(); Assert.AreEqual(string.Empty, errorProvider.GetError(controlWithoutError)); Assert.AreEqual(string.Empty, errorProvider.GetError(controlWithError)); Assert.AreEqual("an unmanaged error", errorProvider.GetError(controlWithoutValidation)); }
public void PerformValidationOnNullControlThrows() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.PerformValidation((Control)null); }
public void ProviderWithMixedValidationOutcomesIsInvalid() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.RulesetName = "validation"; MockControl control1 = new MockControl(); validationProvider.SetSourcePropertyName(control1, "StringProperty"); MockControl control2 = new MockControl(); validationProvider.SetSourcePropertyName(control2, "StringProperty"); control1.Text = "short"; control2.Text = "too long"; validationProvider.PerformValidation(control1); validationProvider.PerformValidation(control2); Assert.IsFalse(validationProvider.IsValid); }
public void ErrorProviderErrorForControlIsClearedAfterPerformingSuccessfulValidation() { ErrorProvider errorProvider = new ErrorProvider(); ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.RulesetName = "validation"; validationProvider.ErrorProvider = errorProvider; MockControl control = new MockControl(); ValidatedControlItem validatedControlItem = new ValidatedControlItem(validationProvider, control); validatedControlItem.SourcePropertyName = "StringProperty"; control.Text = "too long"; validationProvider.PerformValidation(validatedControlItem); Assert.AreNotEqual(string.Empty, errorProvider.GetError(control)); }
public void CallbackIsInvokedAfterPerformingUnsuccessfulValidation() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.RulesetName = "validation"; validationProvider.ValidationPerformed += OnValidationPerformed; MockControl control = new MockControl(); ValidatedControlItem validatedControlItem = new ValidatedControlItem(validationProvider, control); validatedControlItem.SourcePropertyName = "StringProperty"; control.Text = "too long"; validationProvider.PerformValidation(validatedControlItem); Assert.IsNotNull(validationStatusOnCallback); Assert.AreSame(control, validationPerformedEventArgs.ValidatedControl); Assert.IsFalse(validationPerformedEventArgs.ValidationResults.IsValid); }
public void ItemIsValidAfterPerformingSuccessfulValidationIfPreviouslyUnsucessful() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.RulesetName = "validation"; MockControl control = new MockControl(); ValidatedControlItem validatedControlItem = new ValidatedControlItem(validationProvider, control); validatedControlItem.SourcePropertyName = "StringProperty"; control.Text = "too long"; validationProvider.PerformValidation(validatedControlItem); control.Text = "short"; validationProvider.PerformValidation(validatedControlItem); Assert.IsTrue(validatedControlItem.IsValid); }
public void PerformValidationOnExtendedControlWithoutSourcePropertyThrows() { ValidationProvider validationProvider = new ValidationProvider(); MockControl control = new MockControl(); validationProvider.SetPerformValidation(control, true); validationProvider.PerformValidation(control); }
public void PerformValidationOnNonExtendedControlThrows() { ValidationProvider validationProvider = new ValidationProvider(); MockControl control = new MockControl(); validationProvider.PerformValidation(control); }
public void ValueConvertingCallbackSettingConversionErrorMessageWillUseMessageOnErrorProviderIfExists() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.ValueConvert += OnValueConvertFailing; MockControl control1 = new MockControl(); validationProvider.SetSourcePropertyName(control1, "IntProperty"); ErrorProvider errorProvider = new ErrorProvider(); validationProvider.ErrorProvider = errorProvider; control1.Text = "5"; validationProvider.PerformValidation(control1); Assert.IsNotNull(valueConvertEventArgs); // callback was called Assert.AreEqual(0, MockValidator<object>.CreatedValidators[0].ValidatedTargets.Count); // nothing got validated Assert.IsFalse(validationProvider.IsValid); // but the provider is invalid Assert.AreEqual("failed conversion", errorProvider.GetError(control1)); // and the error was set on the error provider }
public void ValidationIsClearedForControlWhenControlPropertyIsSetAndErrorIsCleared() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; MockControl control1 = new MockControl(); validationProvider.SetSourcePropertyName(control1, "StringProperty"); ValidatedControlItem controlItem1 = validationProvider.GetExistingValidatedControlItem(control1); MockControl control2 = new MockControl(); validationProvider.SetSourcePropertyName(control2, "StringProperty"); ValidatedControlItem controlItem2 = validationProvider.GetExistingValidatedControlItem(control2); ErrorProvider errorProvider = new ErrorProvider(); validationProvider.ErrorProvider = errorProvider; control1.Text = "000000000001"; control2.Text = "000000000001"; validationProvider.PerformValidation(control1); validationProvider.PerformValidation(control2); Assert.IsFalse(validationProvider.IsValid); Assert.IsFalse(controlItem1.IsValid); Assert.IsFalse(controlItem2.IsValid); Assert.AreEqual("string property", errorProvider.GetError(control1)); Assert.AreEqual("string property", errorProvider.GetError(control2)); validationProvider.ValidationPerformed += OnValidationPerformed; validationProvider.SetSourcePropertyName(control2, "IntProperty"); Assert.IsFalse(validationProvider.IsValid); Assert.IsFalse(controlItem1.IsValid); Assert.IsTrue(controlItem2.IsValid); Assert.AreEqual("string property", errorProvider.GetError(control1)); Assert.AreEqual(string.Empty, errorProvider.GetError(control2)); Assert.IsNull(validationPerformedEventArgs); validationProvider.PerformValidation(control2); Assert.IsFalse(validationProvider.IsValid); Assert.IsFalse(controlItem1.IsValid); Assert.IsFalse(controlItem2.IsValid); Assert.AreEqual("string property", errorProvider.GetError(control1)); Assert.AreEqual("int property", errorProvider.GetError(control2)); Assert.IsNotNull(validationPerformedEventArgs); }
public void ProviderWithTwoUnsuccesfullyValidatedControlsBecomesValidAfterBothControlsSucceed() { ValidationProvider validationProvider = new ValidationProvider(); validationProvider.SourceTypeName = typeof(ValidationProviderFixtureTestClass).AssemblyQualifiedName; validationProvider.RulesetName = "validation"; MockControl control1 = new MockControl(); validationProvider.SetSourcePropertyName(control1, "StringProperty"); MockControl control2 = new MockControl(); validationProvider.SetSourcePropertyName(control2, "StringProperty"); control1.Text = "too long"; control2.Text = "too long"; validationProvider.PerformValidation(control1); validationProvider.PerformValidation(control2); Assert.IsFalse(validationProvider.IsValid); control1.Text = "short"; validationProvider.PerformValidation(control1); Assert.IsFalse(validationProvider.IsValid); control2.Text = "short"; validationProvider.PerformValidation(control2); Assert.IsTrue(validationProvider.IsValid); }