public async void Test_BetweenFloatChecker()
        {
            var checker = new BetweenFloatChecker <Student>(3f, 10f, _Validation);
            var ex      = Assert.Throws <ArgumentOutOfRangeException>(() => new BetweenFloatChecker <Student>(33f, 10f, _Validation));

            Assert.Equal("max", ex.ParamName);
            Assert.True(ex.Message.Contains("Max should be larger than min."));

            var result = await checker.ValidateAsync(new ValidateResult(), 4f, "", "");

            Assert.True(result.IsValid);

            result = await checker.ValidateAsync(new ValidateResult(), 3f, "a", "c");

            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("a", result.Failures[0].Name);
            Assert.Equal("c", result.Failures[0].Error);
            Assert.Equal(3f, result.Failures[0].Value);

            result = await checker.ValidateAsync(new ValidateResult(), 1f, "a1", "c1");

            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("a1", result.Failures[0].Name);
            Assert.Equal("c1", result.Failures[0].Error);
            Assert.Equal(1f, result.Failures[0].Value);

            result = await checker.ValidateAsync(new ValidateResult(), 10f, "b", null);

            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("b", result.Failures[0].Name);
            Assert.Equal("The value is not between 3 and 10", result.Failures[0].Error);
            Assert.Equal(10f, result.Failures[0].Value);

            result = await checker.ValidateAsync(new ValidateResult(), 100f, "b1", null);

            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("b1", result.Failures[0].Name);
            Assert.Equal("The value is not between 3 and 10", result.Failures[0].Error);
            Assert.Equal(100f, result.Failures[0].Value);
        }
        public async void Test_BetweenFloatChecker()
        {
            var checker = new BetweenFloatChecker<Student>(3f, 10f, _Validation);
            var ex = Assert.Throws<ArgumentOutOfRangeException>(() => new BetweenFloatChecker<Student>(33f, 10f, _Validation));
            Assert.Equal("max", ex.ParamName);
            Assert.True(ex.Message.Contains("Max should be larger than min."));

            var result = await checker.ValidateAsync(new ValidateResult(), 4f, "", "");
            Assert.True(result.IsValid);

            result = await checker.ValidateAsync(new ValidateResult(), 3f, "a", "c");
            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("a", result.Failures[0].Name);
            Assert.Equal("c", result.Failures[0].Error);
            Assert.Equal(3f, result.Failures[0].Value);

            result = await checker.ValidateAsync(new ValidateResult(), 1f, "a1", "c1");
            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("a1", result.Failures[0].Name);
            Assert.Equal("c1", result.Failures[0].Error);
            Assert.Equal(1f, result.Failures[0].Value);

            result = await checker.ValidateAsync(new ValidateResult(), 10f, "b", null);
            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("b", result.Failures[0].Name);
            Assert.Equal("The value is not between 3 and 10", result.Failures[0].Error);
            Assert.Equal(10f, result.Failures[0].Value);

            result = await checker.ValidateAsync(new ValidateResult(), 100f, "b1", null);
            Assert.False(result.IsValid);
            Assert.Equal(1, result.Failures.Count);
            Assert.Equal("b1", result.Failures[0].Name);
            Assert.Equal("The value is not between 3 and 10", result.Failures[0].Error);
            Assert.Equal(100f, result.Failures[0].Value);
        }