public void HasCorrectErrorMessages()
        {
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(User));

            User user = new User();
            ActiveRecordValidator validator = new ActiveRecordValidator(user);

            PropertyInfo nameProp = user.GetType().GetProperty("Name");
            PropertyInfo loginProp = user.GetType().GetProperty("Login");
            PropertyInfo emailProp = user.GetType().GetProperty("Email");

            Assert.IsFalse(validator.IsValid());

            user.Name = "hammett";
            //user.Login = "******";
            user.Password = "******";
            user.ConfirmationPassword = "******";
            //user.Email = "*****@*****.**";

            Assert.IsFalse(validator.IsValid());

            Assert.IsFalse(validator.PropertiesValidationErrorMessages.Contains(nameProp));
            Assert.IsTrue(validator.PropertiesValidationErrorMessages.Contains(loginProp));
            Assert.IsTrue(validator.PropertiesValidationErrorMessages.Contains(loginProp));

            user.Login = "******";
            user.Email = "*****@*****.**";

            Assert.IsTrue(validator.IsValid());

            Assert.IsFalse(validator.PropertiesValidationErrorMessages.Contains(nameProp));
            Assert.IsFalse(validator.PropertiesValidationErrorMessages.Contains(loginProp));
            Assert.IsFalse(validator.PropertiesValidationErrorMessages.Contains(loginProp));
        }
		public void ErrorMessages()
		{
			Thread.CurrentThread.CurrentCulture =
				Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-us");

			ActiveRecordStarter.Initialize( GetConfigSource(), typeof(User) );

			User user = new User();
			Type type = user.GetType();
			PropertyInfo info;
			ArrayList propertyMessages;

			Assert.IsFalse(user.IsValid()); 
			Assert.AreEqual(5, user.ValidationErrorMessages.Length);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[0]);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[1]);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[2]);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[3]);
			Assert.AreEqual("This is a required field", user.ValidationErrorMessages[4]);

			Assert.AreEqual(5, user.PropertiesValidationErrorMessages.Count);

			info = type.GetProperty("Login");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			info = type.GetProperty("Name");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			info = type.GetProperty("Email");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			info = type.GetProperty("Password");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			info = type.GetProperty("ConfirmationPassword");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("This is a required field", propertyMessages[0]);

			user.Name = "hammett";
			user.Login = "******";
			user.Email = "*****@*****.**";
			user.Password = "******";
			user.ConfirmationPassword = "******";
			
			Assert.IsFalse(user.IsValid()); 
			Assert.AreEqual(1, user.ValidationErrorMessages.Length);
			Assert.AreEqual("Fields do not match", user.ValidationErrorMessages[0]);

			info = type.GetProperty("Password");
			Assert.IsTrue(user.PropertiesValidationErrorMessages.Contains(info));
			propertyMessages = (ArrayList)user.PropertiesValidationErrorMessages[info];
			Assert.AreEqual(1, propertyMessages.Count);
			Assert.AreEqual("Fields do not match", propertyMessages[0]);

			user.Password = "******";

			Assert.IsTrue(user.IsValid()); 
			Assert.AreEqual(0, user.ValidationErrorMessages.Length);
		}