예제 #1
0
        public void ValidateObject_Object_ValidationContext_Bool_02()
        {
            var dummy = new Dummy();
            var ctx   = new ValidationContext(dummy, null, null);

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

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

            dummy = new Dummy {
                NameField = null
            };
            AssertExtensions.Throws <ArgumentException> (() => {
                // The instance provided must match the ObjectInstance on the ValidationContext supplied.
                Validator.ValidateObject(dummy, ctx, false);
            }, "#A3-1");

            AssertExtensions.Throws <ArgumentException> (() => {
                // The instance provided must match the ObjectInstance on the ValidationContext supplied.
                Validator.ValidateObject(dummy, ctx, true);
            }, "#A3-2");

            // Fields are ignored
            ctx = new ValidationContext(dummy, null, null);
            try {
                Validator.ValidateObject(dummy, ctx, false);
            } catch (Exception ex) {
                Assert.Fail("#A4-1 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

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

            dummy = new Dummy {
                RequiredDummyField = null
            };
            ctx = new ValidationContext(dummy, null, null);
            try {
                Validator.ValidateObject(dummy, ctx, false);
            } catch (Exception ex) {
                Assert.Fail("#A5-1 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

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

            // Required properties existence is validated
            dummy = new Dummy {
                RequiredDummyProperty = null
            };
            ctx = new ValidationContext(dummy, null, null);
            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateObject(dummy, ctx, false);
            }, "#A6-1");

            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateObject(dummy, ctx, true);
            }, "#A6-2");

            dummy = new Dummy {
                NameProperty = null
            };
            ctx = new ValidationContext(dummy, null, null);
            try {
                Validator.ValidateObject(dummy, ctx, false);
            } catch (Exception ex) {
                Assert.Fail("#A7 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            // NameProperty is null, that causes the StringLength validator to skip its tests
            try {
                Validator.ValidateObject(dummy, ctx, true);
            } catch (Exception ex) {
                Assert.Fail("#A8 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            dummy.NameProperty = "0";
            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateObject(dummy, ctx, true);
            }, "#A9");

            dummy.NameProperty = "name too long (invalid value)";
            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateObject(dummy, ctx, true);
            }, "#A10");

            dummy = new Dummy {
                MinMaxProperty = 0
            };
            ctx = new ValidationContext(dummy, null, null);
            try {
                Validator.ValidateObject(dummy, ctx, false);
            } catch (Exception ex) {
                Assert.Fail("#A11 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateObject(dummy, ctx, true);
            }, "#A12");

            dummy = new Dummy {
                FailValidation = true
            };
            ctx = new ValidationContext(dummy, null, null);
            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateObject(dummy, ctx, false);
            }, "#A13-1");

            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateObject(dummy, ctx, true);
            }, "#A13-2");

            var dummy2 = new DummyWithException();

            ctx = new ValidationContext(dummy2, null, null);
            AssertExtensions.Throws <ApplicationException> (() => {
                Validator.ValidateObject(dummy2, ctx, true);
            }, "#A14");

            var dummy3 = new DummyMultipleCustomValidators();

            ctx = new ValidationContext(dummy3, null, null);
            try {
                Validator.ValidateObject(dummy3, ctx, false);
            } catch (Exception ex) {
                Assert.Fail("#A9 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            try {
                Validator.ValidateObject(dummy3, ctx, true);
            } catch (ValidationException ex) {
                Assert.AreEqual("FirstPropertyValidationMethod", ex.Message, "#A10");
            } catch (Exception ex) {
                Assert.Fail("#A10 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }
        }
예제 #2
0
		public void ValidateObject_Object_ValidationContext_Bool_02 ()
		{
			var dummy = new Dummy ();
			var ctx = new ValidationContext (dummy, null, null);

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

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

			dummy = new Dummy {
				NameField = null
			};
			AssertExtensions.Throws<ArgumentException> (() => {
				// The instance provided must match the ObjectInstance on the ValidationContext supplied.
				Validator.ValidateObject (dummy, ctx, false);
			}, "#A3-1");

			AssertExtensions.Throws<ArgumentException> (() => {
				// The instance provided must match the ObjectInstance on the ValidationContext supplied.
				Validator.ValidateObject (dummy, ctx, true);
			}, "#A3-2");

			// Fields are ignored
			ctx = new ValidationContext (dummy, null, null);
			try {
				Validator.ValidateObject (dummy, ctx, false);
			} catch (Exception ex) {
				Assert.Fail ("#A4-1 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

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

			dummy = new Dummy {
				RequiredDummyField = null
			};
			ctx = new ValidationContext (dummy, null, null);
			try {
				Validator.ValidateObject (dummy, ctx, false);
			} catch (Exception ex) {
				Assert.Fail ("#A5-1 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

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

			// Required properties existence is validated
			dummy = new Dummy {
				RequiredDummyProperty = null
			};
			ctx = new ValidationContext (dummy, null, null);
			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateObject (dummy, ctx, false);
			}, "#A6-1");

			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateObject (dummy, ctx, true);
			}, "#A6-2");

			dummy = new Dummy {
				NameProperty = null
			};
			ctx = new ValidationContext (dummy, null, null);
			try {
				Validator.ValidateObject (dummy, ctx, false);
			} catch (Exception ex) {
				Assert.Fail ("#A7 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			// NameProperty is null, that causes the StringLength validator to skip its tests
			try {
				Validator.ValidateObject (dummy, ctx, true);
			} catch (Exception ex) {
				Assert.Fail ("#A8 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			dummy.NameProperty = "0";
			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateObject (dummy, ctx, true);
			}, "#A9");

			dummy.NameProperty = "name too long (invalid value)";
			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateObject (dummy, ctx, true);
			}, "#A10");

			dummy = new Dummy {
				MinMaxProperty = 0
			};
			ctx = new ValidationContext (dummy, null, null);
			try {
				Validator.ValidateObject (dummy, ctx, false);
			} catch (Exception ex) {
				Assert.Fail ("#A11 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateObject (dummy, ctx, true);
			}, "#A12");

			dummy = new Dummy {
				FailValidation = true
			};
			ctx = new ValidationContext (dummy, null, null);
			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateObject (dummy, ctx, false);
			}, "#A13-1");

			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateObject (dummy, ctx, true);
			}, "#A13-2");

			var dummy2 = new DummyWithException ();
			ctx = new ValidationContext (dummy2, null, null);
			AssertExtensions.Throws<ApplicationException> (() => {
				Validator.ValidateObject (dummy2, ctx, true);
			}, "#A14");

			var dummy3 = new DummyMultipleCustomValidators ();
			ctx = new ValidationContext (dummy3, null, null);
			try {
				Validator.ValidateObject (dummy3, ctx, false);
			} catch (Exception ex) {
				Assert.Fail ("#A9 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			try {
				Validator.ValidateObject (dummy3, ctx, true);
			} catch (ValidationException ex) {
				Assert.AreEqual ("FirstPropertyValidationMethod", ex.Message, "#A10");
			} catch (Exception ex) {
				Assert.Fail ("#A10 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}
		}
예제 #3
0
        public void ValidateObject_Object_ValidationContext_02()
        {
            var dummy = new Dummy();
            var ctx   = new ValidationContext(dummy, null, null);

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

            dummy = new Dummy {
                NameField = null
            };
            AssertExtensions.Throws <ArgumentException> (() => {
                // The instance provided must match the ObjectInstance on the ValidationContext supplied.
                Validator.ValidateObject(dummy, ctx);
            }, "#A2");

            // Fields are ignored
            ctx = new ValidationContext(dummy, null, null);
            try {
                Validator.ValidateObject(dummy, ctx);
            }  catch (Exception ex) {
                Assert.Fail("#A3 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            dummy = new Dummy {
                RequiredDummyField = null
            };
            ctx = new ValidationContext(dummy, null, null);
            try {
                Validator.ValidateObject(dummy, ctx);
            } catch (Exception ex) {
                Assert.Fail("#A4 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            dummy = new Dummy {
                RequiredDummyProperty = null
            };
            ctx = new ValidationContext(dummy, null, null);
            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateObject(dummy, ctx);
            }, "#A5");

            // validation attributes other than Required are ignored
            dummy = new Dummy {
                NameProperty = null
            };
            ctx = new ValidationContext(dummy, null, null);
            try {
                Validator.ValidateObject(dummy, ctx);
            } catch (Exception ex) {
                Assert.Fail("#A6 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            dummy = new Dummy {
                MinMaxProperty = 0
            };
            ctx = new ValidationContext(dummy, null, null);
            try {
                Validator.ValidateObject(dummy, ctx);
            } catch (Exception ex) {
                Assert.Fail("#A7 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }

            dummy = new Dummy {
                FailValidation = true
            };
            ctx = new ValidationContext(dummy, null, null);
            AssertExtensions.Throws <ValidationException> (() => {
                Validator.ValidateObject(dummy, ctx);
            }, "#A8");

            var dummy2 = new DummyMultipleCustomValidators();

            ctx = new ValidationContext(dummy2, null, null);
            try {
                Validator.ValidateObject(dummy2, ctx);
            } catch (Exception ex) {
                Assert.Fail("#A9 (exception {0} thrown: {1})", ex.GetType(), ex.Message);
            }
        }
예제 #4
0
		public void ValidateObject_Object_ValidationContext_02 ()
		{
			var dummy = new Dummy ();
			var ctx = new ValidationContext (dummy, null, null);

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

			dummy = new Dummy {
				NameField = null
			};
			AssertExtensions.Throws<ArgumentException> (() => {
				// The instance provided must match the ObjectInstance on the ValidationContext supplied.
				Validator.ValidateObject (dummy, ctx);
			}, "#A2");

			// Fields are ignored
			ctx = new ValidationContext (dummy, null, null);
			try {
				Validator.ValidateObject (dummy, ctx);
			}  catch (Exception ex) {
				Assert.Fail ("#A3 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}
			
			dummy = new Dummy {
				RequiredDummyField = null
			};
			ctx = new ValidationContext (dummy, null, null);
			try {
				Validator.ValidateObject (dummy, ctx);
			} catch (Exception ex) {
				Assert.Fail ("#A4 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			dummy = new Dummy {
				RequiredDummyProperty = null
			};
			ctx = new ValidationContext (dummy, null, null);
			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateObject (dummy, ctx);
			}, "#A5");

			// validation attributes other than Required are ignored
			dummy = new Dummy {
				NameProperty = null
			};
			ctx = new ValidationContext (dummy, null, null);
			try {
				Validator.ValidateObject (dummy, ctx);
			} catch (Exception ex) {
				Assert.Fail ("#A6 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}
			
			dummy = new Dummy {
				MinMaxProperty = 0
			};
			ctx = new ValidationContext (dummy, null, null);
			try {
				Validator.ValidateObject (dummy, ctx);
			} catch (Exception ex) {
				Assert.Fail ("#A7 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}

			dummy = new Dummy {
				FailValidation = true
			};
			ctx = new ValidationContext (dummy, null, null);
			AssertExtensions.Throws<ValidationException> (() => {
				Validator.ValidateObject (dummy, ctx);
			}, "#A8");

			var dummy2 = new DummyMultipleCustomValidators ();
			ctx = new ValidationContext (dummy2, null, null);
			try {
				Validator.ValidateObject (dummy2, ctx);
			} catch (Exception ex) {
				Assert.Fail ("#A9 (exception {0} thrown: {1})", ex.GetType (), ex.Message);
			}
		}