public void TestFluentForSourceWithLambdaInt()
        {
            var s1f = new Simple2Property();

            Core.Validator v = new Core.Validator();
            v.AddRule(Rule.ForMember <Simple2Property>(o => o.IProperty)
                      .IsInRange(10, 100)
                      .Message(() => TestRes.Test));
            ValidationResult res = v.ValidateObject(s1f);

            Assert.That(res.Errors[0].SourceName, Is.EqualTo("IProperty"));
        }
        public void TestFluentForSourceWithLambdaAndNullableDateTime()
        {
            var s1f = new Simple2Property();

            Core.Validator v = new Core.Validator();
            v.AddRule(Rule.ForMember <Simple2Property>(o => o.NullableDateTime)
                      .Required()
                      .Message(() => TestRes.Test));
            ValidationResult res = v.ValidateObject(s1f);

            Assert.That(res.Errors[0].SourceName, Is.EqualTo("NullableDateTime"));
        }
        public void TestFluentForSourceWithLambdaAndConvertExpression()
        {
            var s1f = new Simple2Property();

            Core.Validator v = new Core.Validator();
            v.AddRule(
                Rule.For <Simple2Property>(dto => dto.NullableDateTime)
                .Custom <DateTime?>(date => false)
                .Message(() => TestRes.Test));

            ValidationResult res = v.ValidateObject(s1f);

            Assert.That(res.Errors[0].SourceName, Is.EqualTo("NullableDateTime"));
        }
        public void VerifyRequiredDoesNotValidateEmptyString()
        {
            var s1F = new Simple2Property();

            s1F.SProperty = String.Empty;
            Core.Validator v = new Core.Validator();
            v.AddRule(Rule.For <Simple2Property>()
                      .OnMember <Simple2Property>(s => s.SProperty)
                      .Required(String.Empty)
                      .Message("ErrorMessage"));

            ValidationResult res = v.ValidateObject(s1F);

            Assert.IsFalse(res, "Empty string should not pass required validation");
            Assert.That(res.ErrorMessages, Has.Count.EqualTo(1));
            Assert.That(res.ErrorMessages[0], Is.EqualTo("ErrorMessage"));
        }
		public void TestFluentForSourceWithLambdaAndConvertExpression()
		{
			var s1f = new Simple2Property();
			Core.Validator v = new Core.Validator();
			v.AddRule(
				Rule.For<Simple2Property>(dto => dto.NullableDateTime)
					.Custom<DateTime?>(date => false)
					.Message(() => TestRes.Test));
			
			ValidationResult res = v.ValidateObject(s1f);
			Assert.That(res.Errors[0].SourceName, Is.EqualTo("NullableDateTime"));
		}
		public void TestFluentForSourceWithLambdaAndNullableDateTime()
		{
			var s1f = new Simple2Property();
			Core.Validator v = new Core.Validator();
			v.AddRule(Rule.ForMember<Simple2Property>(o => o.NullableDateTime)
				.Required()
				.Message(() => TestRes.Test));
			ValidationResult res = v.ValidateObject(s1f);
			Assert.That(res.Errors[0].SourceName, Is.EqualTo("NullableDateTime"));
		}
		public void TestFluentForSourceWithLambdaInt()
		{
			var s1f = new Simple2Property();
			Core.Validator v = new Core.Validator();
			v.AddRule(Rule.ForMember<Simple2Property>(o => o.IProperty)
				.IsInRange(10, 100)
				.Message(() => TestRes.Test));
			ValidationResult res = v.ValidateObject(s1f);
			Assert.That(res.Errors[0].SourceName, Is.EqualTo("IProperty"));
		}
		public void VerifyRequiredDoesNotValidateEmptyString()
		{
		var s1F = new Simple2Property();
			s1F.SProperty = String.Empty;
			Core.Validator v = new Core.Validator();
			v.AddRule(Rule.For<Simple2Property>()
				.OnMember<Simple2Property>(s => s.SProperty)
	          .Required(String.Empty)
				.Message("ErrorMessage"));

			ValidationResult res = v.ValidateObject(s1F);
			Assert.IsFalse(res, "Empty string should not pass required validation");
			Assert.That(res.ErrorMessages, Has.Count.EqualTo(1));
			Assert.That(res.ErrorMessages[0], Is.EqualTo("ErrorMessage"));
		}