示例#1
0
        public void TryValidateValue_01()
        {
            var dummy = new DummyNoAttributes();
            var ctx   = new ValidationContext(dummy, null, null)
            {
                MemberName = "NameProperty"
            };
            var results    = new List <ValidationResult> ();
            var attributes = new List <ValidationAttribute> ();

            bool valid = Validator.TryValidateValue(null, ctx, results, attributes);

            Assert.IsTrue(valid, "#A1-1");
            Assert.AreEqual(0, results.Count, "#A1-2");

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.TryValidateValue("dummy", null, results, attributes);
            }, "#A2");

            valid = Validator.TryValidateValue("dummy", ctx, null, attributes);
            Assert.IsTrue(valid, "#A3-1");
            Assert.AreEqual(0, results.Count, "#A3-2");

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.TryValidateValue("dummy", ctx, results, null);
            }, "#A4");
        }
示例#2
0
        public void ValidateObject_Object_ValidationContext_Bool_01()
        {
            var dummy = new DummyNoAttributes();
            var ctx   = new ValidationContext(dummy, null, null);

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.ValidateObject(null, ctx, false);
            }, "#A1-1");

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.ValidateObject(dummy, null, false);
            }, "#A1-2");

            try {
                Validator.ValidateObject(dummy, ctx, false);
            } catch (Exception ex) {
                Assert.Fail("#A2 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            try {
                Validator.ValidateObject(dummy, ctx, true);
            } catch (Exception ex) {
                Assert.Fail("#A3 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }
        }
示例#3
0
        public void ValidateValue_01()
        {
            var dummy = new DummyNoAttributes();
            var ctx   = new ValidationContext(dummy, null, null)
            {
                MemberName = "NameProperty"
            };
            var attributes = new List <ValidationAttribute> ();

            try {
                Validator.ValidateValue(null, ctx, attributes);
            } catch (Exception ex) {
                Assert.Fail("#A1 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.ValidateValue("dummy", null, attributes);
            }, "#A2");

            try {
                Validator.ValidateValue("dummy", ctx, attributes);
            } catch (Exception ex) {
                Assert.Fail("#A3 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.ValidateValue("dummy", ctx, null);
            }, "#A4");
        }
示例#4
0
		public void TryValidateValue_02 ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null);
			var results = new List<ValidationResult> ();
			var log = new List<string> ();
			var attributes = new List<ValidationAttribute> () {
				new StringLengthAttributePoker (10, log) {
					MinimumLength = 2
				},
				new RequiredAttributePoker (log)
			};

			bool valid = Validator.TryValidateValue (null, ctx, results, attributes);
			Assert.IsFalse (valid, "#A1-1");
			Assert.AreEqual (1, results.Count, "#A1-2");
			Assert.AreEqual (1, log.Count, "#A1-3");
			Assert.IsTrue (log [0].StartsWith ("RequiredAttributePoker.IsValid (object)"), "#A1-4");
			results.Clear ();
			log.Clear ();

			Assert.Throws<InvalidCastException> (() => {
				// Thrown by StringValidatorAttribute
				Validator.TryValidateValue (1234, ctx, results, attributes);
			}, "#A2-1");
			Assert.AreEqual (0, results.Count, "#A2-2");
			Assert.AreEqual (2, log.Count, "#A2-3");
			Assert.IsTrue (log[0].StartsWith ("RequiredAttributePoker.IsValid (object)"), "#A2-4");
			Assert.IsTrue (log[1].StartsWith ("StringLengthAttributePoker.IsValid (object)"), "#A2-5");
			results.Clear ();
			log.Clear ();

			attributes.Add (new CustomValidationAttribute (typeof (ValidatorTest), "ValueValidationMethod"));
			attributes.Add (new CustomValidationAttribute (typeof (ValidatorTest), "ValueValidationMethod"));
			valid = Validator.TryValidateValue ("test", ctx, results, attributes);
			Assert.IsFalse (valid, "#A3-1");
			Assert.AreEqual (2, results.Count, "#A3-2");
			Assert.AreEqual (2, log.Count, "#A3-3");
			Assert.IsTrue (log[0].StartsWith ("RequiredAttributePoker.IsValid (object)"), "#A3-4");
			Assert.IsTrue (log[1].StartsWith ("StringLengthAttributePoker.IsValid (object)"), "#A3-5");
			Assert.AreEqual ("ValueValidationMethod", results[0].ErrorMessage, "#A3-6");
			Assert.AreEqual ("ValueValidationMethod", results[1].ErrorMessage, "#A3-7");
			results.Clear ();
			log.Clear ();
			attributes.RemoveAt (2);
			attributes.RemoveAt (2);

			Assert.Throws<ArgumentNullException> (() => {
				Validator.TryValidateValue ("dummy", null, results, attributes);
			}, "#B1");

			valid = Validator.TryValidateValue ("dummy", ctx, null, attributes);
			Assert.IsTrue (valid, "#B2-1");
			Assert.AreEqual (0, results.Count, "#B2-2");

			Assert.Throws<ArgumentNullException> (() => {
				Validator.TryValidateValue ("dummy", ctx, results, null);
			}, "#B3");
		}
示例#5
0
 public Dummy()
 {
     NameField                      = "name";
     NameProperty                   = "name";
     RequiredDummyField             = new DummyNoAttributes();
     RequiredDummyProperty          = new DummyNoAttributes();
     MinMaxProperty                 = 5;
     AnotherCustomValidatedProperty = "I'm valid";
 }
示例#6
0
        public void ValidateValue_02()
        {
            var dummy      = new DummyNoAttributes();
            var ctx        = new ValidationContext(dummy, null, null);
            var log        = new List <string> ();
            var attributes = new List <ValidationAttribute> ()
            {
                new StringLengthAttributePoker(10, log)
                {
                    MinimumLength = 2
                },
                new RequiredAttributePoker(log)
            };

            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateValue(null, ctx, attributes);
            }, "#A1-1");
            Assert.AreEqual(1, log.Count, "#A1-2");
            Assert.IsTrue(log[0].StartsWith("RequiredAttributePoker.IsValid (object)"), "#A1-3");
            log.Clear();

            AssertExtensions.Throws <InvalidCastException> (() => {
                // Thrown by StringValidatorAttribute
                Validator.ValidateValue(1234, ctx, attributes);
            }, "#A2-1");;
            Assert.AreEqual(2, log.Count, "#A2-2");
            Assert.IsTrue(log[0].StartsWith("RequiredAttributePoker.IsValid (object)"), "#A2-3");
            Assert.IsTrue(log[1].StartsWith("StringLengthAttributePoker.IsValid (object)"), "#A2-4");
            log.Clear();

            attributes.Add(new CustomValidationAttribute(typeof(ValidatorTest), "ValueValidationMethod"));
            attributes.Add(new CustomValidationAttribute(typeof(ValidatorTest), "ValueValidationMethod"));
            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateValue("test", ctx, attributes);
            }, "#A3-1");
            Assert.AreEqual(2, log.Count, "#A3-2");
            Assert.IsTrue(log[0].StartsWith("RequiredAttributePoker.IsValid (object)"), "#A3-3");
            Assert.IsTrue(log[1].StartsWith("StringLengthAttributePoker.IsValid (object)"), "#A3-4");
            log.Clear();
            attributes.RemoveAt(2);
            attributes.RemoveAt(2);

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.ValidateValue("dummy", null, attributes);
            }, "#B1");

            try {
                Validator.ValidateValue("dummy", ctx, attributes);
            } catch (Exception ex) {
                Assert.Fail("#B2 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.ValidateValue("dummy", ctx, null);
            }, "#B3");
        }
示例#7
0
		public void TryValidateObject_Object_ValidationContext_ICollection_01 ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null);
			var results = new List<ValidationResult> ();

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.TryValidateObject (null, ctx, results);
			}, "#A1-1");

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.TryValidateObject (dummy, null, results);
			}, "#A1-2");

			bool valid = Validator.TryValidateObject (dummy, ctx, null);
			Assert.IsTrue (valid, "#A2-1");
			Assert.IsTrue (results.Count == 0, "#A2-2");
		}
示例#8
0
		public void TryValidateObject_Object_ValidationContext_ICollection_01 ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null);
			var results = new List<ValidationResult> ();

			Assert.Throws<ArgumentNullException> (() => {
				Validator.TryValidateObject (null, ctx, results);
			}, "#A1-1");

			Assert.Throws<ArgumentNullException> (() => {
				Validator.TryValidateObject (dummy, null, results);
			}, "#A1-2");

			bool valid = Validator.TryValidateObject (dummy, ctx, null);
			Assert.IsTrue (valid, "#A2-1");
			Assert.IsTrue (results.Count == 0, "#A2-2");
		}
示例#9
0
		public void ValidateValue_01 ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null) {
				MemberName = "NameProperty"
			};
			var attributes = new List<ValidationAttribute> ();

			try {
				Validator.ValidateValue (null, ctx, attributes);
			} catch (Exception ex) {
				Assert.Fail ("#A1 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.ValidateValue ("dummy", null, attributes);
			}, "#A2");

			try {
				Validator.ValidateValue ("dummy", ctx, attributes);
			} catch (Exception ex) {
				Assert.Fail ("#A3 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.ValidateValue ("dummy", ctx, null);
			}, "#A4");
		}
示例#10
0
        public void ValidateProperty()
        {
            var dummy = new DummyNoAttributes();
            var ctx   = new ValidationContext(dummy, null, null)
            {
                MemberName = "NameProperty"
            };

            AssertExtensions.Throws <ArgumentException> (() => {
                Validator.ValidateProperty("dummy", ctx);
            }, "#A1-1");

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.ValidateProperty("dummy", null);
            }, "#A1-2");

            var dummy2 = new Dummy();

            ctx = new ValidationContext(dummy2, null, null)
            {
                MemberName = "NameProperty"
            };

            try {
                Validator.ValidateProperty(null, ctx);
            } catch (Exception ex) {
                Assert.Fail("#A2 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            ctx = new ValidationContext(dummy2, null, null)
            {
                MemberName = "MinMaxProperty"
            };

            AssertExtensions.Throws <ArgumentException> (() => {
                Validator.ValidateProperty(null, ctx);
            }, "#A3");

            ctx = new ValidationContext(dummy2, null, null);
            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.ValidateProperty("dummy", ctx);
            }, "#A4");

            ctx = new ValidationContext(dummy2, null, null)
            {
                MemberName = String.Empty
            };

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.ValidateProperty("dummy", ctx);
            }, "#A5");

            dummy2 = new Dummy();
            ctx    = new ValidationContext(dummy2, null, null)
            {
                MemberName = "NameProperty"
            };

            AssertExtensions.Throws <ArgumentException> (() => {
                Validator.ValidateProperty(1234, ctx);
            }, "#A6");

            dummy2 = new Dummy();
            ctx    = new ValidationContext(dummy2, null, null)
            {
                MemberName = "NameProperty"
            };

            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateProperty(String.Empty, ctx);
            }, "#A7");

            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateProperty("this value is way too long", ctx);
            }, "#A8");

            try {
                Validator.ValidateProperty("good value", ctx);
            } catch (Exception ex) {
                Assert.Fail("#A9 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            dummy2 = new Dummy();
            ctx    = new ValidationContext(dummy2, null, null)
            {
                MemberName = "CustomValidatedProperty"
            };

            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateProperty(String.Empty, ctx);
            }, "#A10");

            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateProperty("fail", ctx);
            }, "#A11");

            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateProperty("f", ctx);
            }, "#A12");

            try {
                Validator.ValidateProperty("good value", ctx);
            } catch (Exception ex) {
                Assert.Fail("#A13 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }
        }
示例#11
0
			public Dummy ()
			{
				NameField = "name";
				NameProperty = "name";
				RequiredDummyField = new DummyNoAttributes ();
				RequiredDummyProperty = new DummyNoAttributes ();
				MinMaxProperty = 5;
				AnotherCustomValidatedProperty = "I'm valid";
			}
示例#12
0
		public void TryValidateValue_01 ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null) {
				MemberName = "NameProperty"
			};
			var results = new List<ValidationResult> ();
			var attributes = new List <ValidationAttribute> ();
			
			bool valid = Validator.TryValidateValue (null, ctx, results, attributes);
			Assert.IsTrue (valid, "#A1-1");
			Assert.AreEqual (0, results.Count, "#A1-2");

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.TryValidateValue ("dummy", null, results, attributes);
			}, "#A2");

			valid = Validator.TryValidateValue ("dummy", ctx, null, attributes);
			Assert.IsTrue (valid, "#A3-1");
			Assert.AreEqual (0, results.Count, "#A3-2");

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.TryValidateValue ("dummy", ctx, results, null);
			}, "#A4");
		}
示例#13
0
		public void TryValidateProperty ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null) {
				MemberName = "NameProperty"
			};
			var results = new List<ValidationResult> ();

			AssertExtensions.Throws<ArgumentException> (() => {
				// MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty:
				// System.ArgumentException : The type 'DummyNoAttributes' does not contain a public property named 'NameProperty'.
				// Parameter name: propertyName
				//
				// at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.GetPropertyStoreItem(String propertyName)
				// at System.ComponentModel.DataAnnotations.ValidationAttributeStore.GetPropertyType(ValidationContext validationContext)
				// at System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(Object value, ValidationContext validationContext, ICollection`1 validationResults)
				// at MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidatorTest.cs:line 283

				Validator.TryValidateProperty ("dummy", ctx, results);
			}, "#A1-1");
			Assert.AreEqual (0, results.Count, "#A1-2");

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.TryValidateProperty ("dummy", null, results);
			}, "#A1-2");

			var dummy2 = new Dummy ();
			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "NameProperty"
			};
			
			bool valid = Validator.TryValidateProperty (null, ctx, results);
			Assert.IsTrue (valid, "#A1-3");
			Assert.AreEqual (0, results.Count, "#A1-4");

			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "MinMaxProperty"
			};

			AssertExtensions.Throws<ArgumentException> (() => {
				Validator.TryValidateProperty (null, ctx, results);
			}, "#A1-5");

			ctx = new ValidationContext (dummy2, null, null);
			AssertExtensions.Throws<ArgumentNullException> (() => {
				// MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty:
				// System.ArgumentNullException : Value cannot be null.
				// Parameter name: propertyName
				//
				// at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.TryGetPropertyStoreItem(String propertyName, PropertyStoreItem& item)
				// at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.GetPropertyStoreItem(String propertyName)
				// at System.ComponentModel.DataAnnotations.ValidationAttributeStore.GetPropertyType(ValidationContext validationContext)
				// at System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(Object value, ValidationContext validationContext, ICollection`1 validationResults)
				// at MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidatorTest.cs:line 289

				Validator.TryValidateProperty ("dummy", ctx, results);
			}, "#A2-1");
			Assert.AreEqual (0, results.Count, "#A2-2");

			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = String.Empty
			};

			AssertExtensions.Throws<ArgumentNullException> (() => {
				// MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty:
				// System.ArgumentNullException : Value cannot be null.
				// Parameter name: propertyName
				//
				// at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.TryGetPropertyStoreItem(String propertyName, PropertyStoreItem& item)
				// at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.GetPropertyStoreItem(String propertyName)
				// at System.ComponentModel.DataAnnotations.ValidationAttributeStore.GetPropertyType(ValidationContext validationContext)
				// at System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(Object value, ValidationContext validationContext, ICollection`1 validationResults)
				// at MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidatorTest.cs:line 289

				Validator.TryValidateProperty ("dummy", ctx, results);
			}, "#A2-2");
			Assert.AreEqual (0, results.Count, "#A2-2");

			dummy2 = new Dummy ();
			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "NameProperty"
			};

			AssertExtensions.Throws<ArgumentException> (() => {
				// MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty:
				// System.ArgumentException : The value for property 'NameProperty' must be of type 'System.String'.
				// Parameter name: value
				//
				// at System.ComponentModel.DataAnnotations.Validator.EnsureValidPropertyType(String propertyName, Type propertyType, Object value)
				// at System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(Object value, ValidationContext validationContext, ICollection`1 validationResults)
				// at MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidatorTest.cs:line 315

				Validator.TryValidateProperty (1234, ctx, results);
			}, "#A3-1");
			Assert.AreEqual (0, results.Count, "#A3-2");

			dummy2 = new Dummy ();
			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "NameProperty"
			};
			
			valid = Validator.TryValidateProperty (String.Empty, ctx, results);
			Assert.IsFalse (valid, "#A4-1");
			Assert.AreEqual (1, results.Count, "#A4-2");
			results.Clear ();

			valid = Validator.TryValidateProperty ("this value is way too long", ctx, results);
			Assert.IsFalse (valid, "#A4-3");
			Assert.AreEqual (1, results.Count, "#A4-4");
			results.Clear ();

			valid = Validator.TryValidateProperty ("good value", ctx, results);
			Assert.IsTrue (valid, "#A4-5");
			Assert.AreEqual (0, results.Count, "#A4-6");

			dummy2 = new Dummy ();
			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "CustomValidatedProperty"
			};

			valid = Validator.TryValidateProperty (String.Empty, ctx, results);
			Assert.IsFalse (valid, "#A5-1");
			Assert.AreEqual (1, results.Count, "#A5-2");
			results.Clear ();

			valid = Validator.TryValidateProperty ("fail", ctx, results);
			Assert.IsFalse (valid, "#A5-3");
			Assert.AreEqual (1, results.Count, "#A5-4");
			results.Clear ();

			valid = Validator.TryValidateProperty ("f", ctx, results);
			Assert.IsFalse (valid, "#A5-5");
			Assert.AreEqual (2, results.Count, "#A5-6");
			results.Clear ();

			valid = Validator.TryValidateProperty ("good value", ctx, results);
			Assert.IsTrue (valid, "#A5-7");
			Assert.AreEqual (0, results.Count, "#A5-8");
		}
示例#14
0
        public void TryValidateProperty()
        {
            var dummy = new DummyNoAttributes();
            var ctx   = new ValidationContext(dummy, null, null)
            {
                MemberName = "NameProperty"
            };
            var results = new List <ValidationResult> ();

            AssertExtensions.Throws <ArgumentException> (() => {
                // MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty:
                // System.ArgumentException : The type 'DummyNoAttributes' does not contain a public property named 'NameProperty'.
                // Parameter name: propertyName
                //
                // at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.GetPropertyStoreItem(String propertyName)
                // at System.ComponentModel.DataAnnotations.ValidationAttributeStore.GetPropertyType(ValidationContext validationContext)
                // at System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(Object value, ValidationContext validationContext, ICollection`1 validationResults)
                // at MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidatorTest.cs:line 283

                Validator.TryValidateProperty("dummy", ctx, results);
            }, "#A1-1");
            Assert.AreEqual(0, results.Count, "#A1-2");

            AssertExtensions.Throws <ArgumentNullException> (() => {
                Validator.TryValidateProperty("dummy", null, results);
            }, "#A1-2");

            var dummy2 = new Dummy();

            ctx = new ValidationContext(dummy2, null, null)
            {
                MemberName = "NameProperty"
            };

            bool valid = Validator.TryValidateProperty(null, ctx, results);

            Assert.IsTrue(valid, "#A1-3");
            Assert.AreEqual(0, results.Count, "#A1-4");

            ctx = new ValidationContext(dummy2, null, null)
            {
                MemberName = "MinMaxProperty"
            };

            AssertExtensions.Throws <ArgumentException> (() => {
                Validator.TryValidateProperty(null, ctx, results);
            }, "#A1-5");

            ctx = new ValidationContext(dummy2, null, null);
            AssertExtensions.Throws <ArgumentNullException> (() => {
                // MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty:
                // System.ArgumentNullException : Value cannot be null.
                // Parameter name: propertyName
                //
                // at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.TryGetPropertyStoreItem(String propertyName, PropertyStoreItem& item)
                // at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.GetPropertyStoreItem(String propertyName)
                // at System.ComponentModel.DataAnnotations.ValidationAttributeStore.GetPropertyType(ValidationContext validationContext)
                // at System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(Object value, ValidationContext validationContext, ICollection`1 validationResults)
                // at MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidatorTest.cs:line 289

                Validator.TryValidateProperty("dummy", ctx, results);
            }, "#A2-1");
            Assert.AreEqual(0, results.Count, "#A2-2");

            ctx = new ValidationContext(dummy2, null, null)
            {
                MemberName = String.Empty
            };

            AssertExtensions.Throws <ArgumentNullException> (() => {
                // MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty:
                // System.ArgumentNullException : Value cannot be null.
                // Parameter name: propertyName
                //
                // at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.TryGetPropertyStoreItem(String propertyName, PropertyStoreItem& item)
                // at System.ComponentModel.DataAnnotations.ValidationAttributeStore.TypeStoreItem.GetPropertyStoreItem(String propertyName)
                // at System.ComponentModel.DataAnnotations.ValidationAttributeStore.GetPropertyType(ValidationContext validationContext)
                // at System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(Object value, ValidationContext validationContext, ICollection`1 validationResults)
                // at MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidatorTest.cs:line 289

                Validator.TryValidateProperty("dummy", ctx, results);
            }, "#A2-2");
            Assert.AreEqual(0, results.Count, "#A2-2");

            dummy2 = new Dummy();
            ctx    = new ValidationContext(dummy2, null, null)
            {
                MemberName = "NameProperty"
            };

            AssertExtensions.Throws <ArgumentException> (() => {
                // MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty:
                // System.ArgumentException : The value for property 'NameProperty' must be of type 'System.String'.
                // Parameter name: value
                //
                // at System.ComponentModel.DataAnnotations.Validator.EnsureValidPropertyType(String propertyName, Type propertyType, Object value)
                // at System.ComponentModel.DataAnnotations.Validator.TryValidateProperty(Object value, ValidationContext validationContext, ICollection`1 validationResults)
                // at MonoTests.System.ComponentModel.DataAnnotations.ValidatorTest.TryValidateProperty() in C:\Users\grendel\Documents\Visual Studio 2010\Projects\System.Web.Test\System.Web.Test\System.ComponentModel.DataAnnotations\ValidatorTest.cs:line 315

                Validator.TryValidateProperty(1234, ctx, results);
            }, "#A3-1");
            Assert.AreEqual(0, results.Count, "#A3-2");

            dummy2 = new Dummy();
            ctx    = new ValidationContext(dummy2, null, null)
            {
                MemberName = "NameProperty"
            };

            valid = Validator.TryValidateProperty(String.Empty, ctx, results);
            Assert.IsFalse(valid, "#A4-1");
            Assert.AreEqual(1, results.Count, "#A4-2");
            results.Clear();

            valid = Validator.TryValidateProperty("this value is way too long", ctx, results);
            Assert.IsFalse(valid, "#A4-3");
            Assert.AreEqual(1, results.Count, "#A4-4");
            results.Clear();

            valid = Validator.TryValidateProperty("good value", ctx, results);
            Assert.IsTrue(valid, "#A4-5");
            Assert.AreEqual(0, results.Count, "#A4-6");

            dummy2 = new Dummy();
            ctx    = new ValidationContext(dummy2, null, null)
            {
                MemberName = "CustomValidatedProperty"
            };

            valid = Validator.TryValidateProperty(String.Empty, ctx, results);
            Assert.IsFalse(valid, "#A5-1");
            Assert.AreEqual(1, results.Count, "#A5-2");
            results.Clear();

            valid = Validator.TryValidateProperty("fail", ctx, results);
            Assert.IsFalse(valid, "#A5-3");
            Assert.AreEqual(1, results.Count, "#A5-4");
            results.Clear();

            valid = Validator.TryValidateProperty("f", ctx, results);
            Assert.IsFalse(valid, "#A5-5");
            Assert.AreEqual(2, results.Count, "#A5-6");
            results.Clear();

            valid = Validator.TryValidateProperty("good value", ctx, results);
            Assert.IsTrue(valid, "#A5-7");
            Assert.AreEqual(0, results.Count, "#A5-8");
        }
示例#15
0
		public void TryValidateValue_02 ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null);
			var results = new List<ValidationResult> ();
			var log = new List<string> ();
			var attributes = new List<ValidationAttribute> () {
				new StringLengthAttributePoker (10, log) {
					MinimumLength = 2
				},
				new RequiredAttributePoker (log)
			};

			bool valid = Validator.TryValidateValue (null, ctx, results, attributes);
			Assert.IsFalse (valid, "#A1-1");
			Assert.AreEqual (1, results.Count, "#A1-2");
			Assert.AreEqual (1, log.Count, "#A1-3");
			Assert.IsTrue (log [0].StartsWith ("RequiredAttributePoker.IsValid (object)"), "#A1-4");
			results.Clear ();
			log.Clear ();

			AssertExtensions.Throws<InvalidCastException> (() => {
				// Thrown by StringValidatorAttribute
				Validator.TryValidateValue (1234, ctx, results, attributes);
			}, "#A2-1");
			Assert.AreEqual (0, results.Count, "#A2-2");
			Assert.AreEqual (2, log.Count, "#A2-3");
			Assert.IsTrue (log[0].StartsWith ("RequiredAttributePoker.IsValid (object)"), "#A2-4");
			Assert.IsTrue (log[1].StartsWith ("StringLengthAttributePoker.IsValid (object)"), "#A2-5");
			results.Clear ();
			log.Clear ();

			attributes.Add (new CustomValidationAttribute (typeof (ValidatorTest), "ValueValidationMethod"));
			attributes.Add (new CustomValidationAttribute (typeof (ValidatorTest), "ValueValidationMethod"));
			valid = Validator.TryValidateValue ("test", ctx, results, attributes);
			Assert.IsFalse (valid, "#A3-1");
			Assert.AreEqual (2, results.Count, "#A3-2");
			Assert.AreEqual (2, log.Count, "#A3-3");
			Assert.IsTrue (log[0].StartsWith ("RequiredAttributePoker.IsValid (object)"), "#A3-4");
			Assert.IsTrue (log[1].StartsWith ("StringLengthAttributePoker.IsValid (object)"), "#A3-5");
			Assert.AreEqual ("ValueValidationMethod", results[0].ErrorMessage, "#A3-6");
			Assert.AreEqual ("ValueValidationMethod", results[1].ErrorMessage, "#A3-7");
			results.Clear ();
			log.Clear ();
			attributes.RemoveAt (2);
			attributes.RemoveAt (2);

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.TryValidateValue ("dummy", null, results, attributes);
			}, "#B1");

			valid = Validator.TryValidateValue ("dummy", ctx, null, attributes);
			Assert.IsTrue (valid, "#B2-1");
			Assert.AreEqual (0, results.Count, "#B2-2");

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.TryValidateValue ("dummy", ctx, results, null);
			}, "#B3");
		}
示例#16
0
		public void ValidateValue_02 ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null);
			var log = new List<string> ();
			var attributes = new List<ValidationAttribute> () {
				new StringLengthAttributePoker (10, log) {
					MinimumLength = 2
				},
				new RequiredAttributePoker (log)
			};

			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateValue (null, ctx, attributes);
			}, "#A1-1");
			Assert.AreEqual (1, log.Count, "#A1-2");
			Assert.IsTrue (log[0].StartsWith ("RequiredAttributePoker.IsValid (object)"), "#A1-3");
			log.Clear ();

			AssertExtensions.Throws<InvalidCastException> (() => {
				// Thrown by StringValidatorAttribute
				Validator.ValidateValue (1234, ctx, attributes);
			}, "#A2-1");;
			Assert.AreEqual (2, log.Count, "#A2-2");
			Assert.IsTrue (log[0].StartsWith ("RequiredAttributePoker.IsValid (object)"), "#A2-3");
			Assert.IsTrue (log[1].StartsWith ("StringLengthAttributePoker.IsValid (object)"), "#A2-4");
			log.Clear ();

			attributes.Add (new CustomValidationAttribute (typeof (ValidatorTest), "ValueValidationMethod"));
			attributes.Add (new CustomValidationAttribute (typeof (ValidatorTest), "ValueValidationMethod"));
			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateValue ("test", ctx, attributes);
			}, "#A3-1");
			Assert.AreEqual (2, log.Count, "#A3-2");
			Assert.IsTrue (log[0].StartsWith ("RequiredAttributePoker.IsValid (object)"), "#A3-3");
			Assert.IsTrue (log[1].StartsWith ("StringLengthAttributePoker.IsValid (object)"), "#A3-4");
			log.Clear ();
			attributes.RemoveAt (2);
			attributes.RemoveAt (2);

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.ValidateValue ("dummy", null, attributes);
			}, "#B1");

			try {
				Validator.ValidateValue ("dummy", ctx, attributes);
			} catch (Exception ex) {
				Assert.Fail ("#B2 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.ValidateValue ("dummy", ctx, null);
			}, "#B3");
		}
示例#17
0
		public void ValidateObject_Object_ValidationContext_Bool_01 ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null);

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.ValidateObject (null, ctx, false);
			}, "#A1-1");

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.ValidateObject (dummy, null, false);
			}, "#A1-2");

			try {
				Validator.ValidateObject (dummy, ctx, false);
			} catch (Exception ex) {
				Assert.Fail ("#A2 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			try {
				Validator.ValidateObject (dummy, ctx, true);
			} catch (Exception ex) {
				Assert.Fail ("#A3 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}
		}
示例#18
0
		public void ValidateProperty ()
		{
			var dummy = new DummyNoAttributes ();
			var ctx = new ValidationContext (dummy, null, null) {
				MemberName = "NameProperty"
			};

			AssertExtensions.Throws<ArgumentException> (() => {
				Validator.ValidateProperty ("dummy", ctx);
			}, "#A1-1");

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.ValidateProperty ("dummy", null);
			}, "#A1-2");

			var dummy2 = new Dummy ();
			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "NameProperty"
			};

			try {
				Validator.ValidateProperty (null, ctx);
			} catch (Exception ex) {
				Assert.Fail ("#A2 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "MinMaxProperty"
			};

			AssertExtensions.Throws<ArgumentException> (() => {
				Validator.ValidateProperty (null, ctx);
			}, "#A3");

			ctx = new ValidationContext (dummy2, null, null);
			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.ValidateProperty ("dummy", ctx);
			}, "#A4");

			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = String.Empty
			};

			AssertExtensions.Throws<ArgumentNullException> (() => {
				Validator.ValidateProperty ("dummy", ctx);
			}, "#A5");

			dummy2 = new Dummy ();
			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "NameProperty"
			};

			AssertExtensions.Throws<ArgumentException> (() => {
				Validator.ValidateProperty (1234, ctx);
			}, "#A6");

			dummy2 = new Dummy ();
			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "NameProperty"
			};

			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateProperty (String.Empty, ctx);
			}, "#A7");

			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateProperty ("this value is way too long", ctx);
			}, "#A8");

			try {
				Validator.ValidateProperty ("good value", ctx);
			} catch (Exception ex) {
				Assert.Fail ("#A9 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			dummy2 = new Dummy ();
			ctx = new ValidationContext (dummy2, null, null) {
				MemberName = "CustomValidatedProperty"
			};

			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateProperty (String.Empty, ctx);
			}, "#A10");

			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateProperty ("fail", ctx);
			}, "#A11");

			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateProperty ("f", ctx);
			}, "#A12");

			try {
				Validator.ValidateProperty ("good value", ctx);
			} catch (Exception ex) {
				Assert.Fail ("#A13 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}
		}