Esempio n. 1
0
        public virtual void testMaxValidator()
        {
            MaxValidator validator = new MaxValidator();

            assertTrue(validator.validate(null, null));

            assertTrue(validator.validate(3, new TestValidatorContext("4")));
            assertFalse(validator.validate(4, new TestValidatorContext("3")));

            try
            {
                validator.validate(4, new TestValidatorContext("4.4"));
                fail("exception expected");
            }
            catch (FormException e)
            {
                assertTrue(e.Message.contains("Cannot validate Integer value 4: configuration 4.4 cannot be parsed as Integer."));
            }

            assertFalse(validator.validate(4.1d, new TestValidatorContext("4")));
            assertTrue(validator.validate(4.1d, new TestValidatorContext("4.2")));

            assertFalse(validator.validate(4.1f, new TestValidatorContext("4")));
            assertTrue(validator.validate(4.1f, new TestValidatorContext("4.2")));
        }
    public void ErrorMessage_Ok()
    {
        var foo       = new Foo();
        var validator = new MaxValidator()
        {
            Value = 1
        };
        var context = new ValidationContext(foo);
        var results = new List <ValidationResult>();

        validator.Validate("v1, v2", context, results);
        Assert.Equal($"At most {validator.Value} items can be selected", results[0].ErrorMessage);
    }
 public void IsValid()
 {
     MaxValidator v = new MaxValidator();
     v.Initialize(new MaxAttribute());
     Assert.IsTrue(v.IsValid(0, null));
     v.Initialize(new MaxAttribute(1000));
     Assert.IsTrue(v.IsValid(3, null));
     Assert.IsTrue(v.IsValid(200.0m, null));
     Assert.IsTrue(v.IsValid(1000, null));
     Assert.IsTrue(v.IsValid(null, null));
     Assert.IsTrue(v.IsValid("5", null));
     Assert.IsFalse(v.IsValid(1001, null));
     Assert.IsFalse(v.IsValid("aaa", null));
     Assert.IsFalse(v.IsValid(new object(), null));
     Assert.IsFalse(v.IsValid(long.MaxValue, null));
 }
    public void Null_Ok()
    {
        var foo       = new Foo();
        var validator = new MaxValidator()
        {
            Value        = 1,
            ErrorMessage = "最多可以选择 {0} 项"
        };
        var context = new ValidationContext(foo)
        {
            MemberName = "Name"
        };
        var results = new List <ValidationResult>();

        validator.Validate(null, context, results);
        Assert.Equal($"最多可以选择 {validator.Value} 项", results[0].ErrorMessage);
    }
    public void SplitCallback_Ok()
    {
        var foo       = new Foo();
        var validator = new MaxValidator()
        {
            Value        = 1,
            ErrorMessage = "最多可以选择 {0} 项"
        };
        var context = new ValidationContext(foo)
        {
            MemberName = "Name"
        };
        var results = new List <ValidationResult>();

        validator.Validate("v1, v2", context, results);
        Assert.Equal($"最多可以选择 {validator.Value} 项", results[0].ErrorMessage);

        validator.SplitCallback = value => value.Split(',', StringSplitOptions.RemoveEmptyEntries).Length;
        validator.Validate("v1, v2", context, results);
        Assert.Equal($"最多可以选择 {validator.Value} 项", results[0].ErrorMessage);
    }
    public void GenericType_Ok()
    {
        var foo       = new Foo();
        var validator = new MaxValidator()
        {
            Value        = 1,
            ErrorMessage = "最多可以选择 {0} 项"
        };
        var context = new ValidationContext(foo)
        {
            MemberName = "Name"
        };
        var results = new List <ValidationResult>();

        validator.Validate(new List <string> {
            "v1", "v2"
        }, context, results);
        Assert.Equal($"最多可以选择 {validator.Value} 项", results[0].ErrorMessage);

        results.Clear();
        validator.Validate("v1", context, results);
        Assert.Empty(results);
    }
        public void Extreme()
        {
            MaxValidator v = new MaxValidator();
            v.Initialize(new MaxAttribute(10000));
            Assert.IsTrue(v.IsValid(10000, null));
            Assert.IsTrue(v.IsValid(10000L, null));
            Assert.IsTrue(v.IsValid(123UL, null));
            Assert.IsTrue(v.IsValid(123U, null));
            Assert.IsTrue(v.IsValid((ushort)5, null));
            Assert.IsTrue(v.IsValid((short)5, null));
            Assert.IsTrue(v.IsValid(true, null));
            Assert.IsTrue(v.IsValid((byte)100, null));
            Assert.IsTrue(v.IsValid((sbyte)100, null));
            Assert.IsTrue(v.IsValid(AEnum.A, null));
            Assert.IsTrue(v.IsValid(CarOptions.Spoiler | CarOptions.FogLights, null));
            Assert.IsTrue(v.IsValid('A', null));
            Assert.IsTrue(v.IsValid(9999.99999f, null));
            Assert.IsTrue(v.IsValid(9999.9999999999999999999999999d, null));

            Assert.IsFalse(v.IsValid(decimal.MaxValue, null));
            Assert.IsFalse(v.IsValid(decimal.MaxValue.ToString(), null));
            Assert.IsFalse(v.IsValid(double.MaxValue, null));
            Assert.IsFalse(v.IsValid("1" + double.MaxValue, null));
        }