Exemple #1
0
        public void VerifyAnByInstanceShouldBeFailureTest()
        {
            var options = new ValidationOptions();

            options.AnnotationEnabled        = false;
            options.FailureIfInstanceIsNull  = true;
            options.FailureIfProjectNotMatch = false;
            options.CustomValidatorEnabled   = false;

            var provider = new ValidationProvider(ValidationProjectManager, VerifiableObjectResolver, options);

            var handler = ValidationRegistrar.ForProvider(provider, "UTH_VerifyAnByInstanceShouldBeFailureTest")
                          .ForType <NiceBoat>()
                          .ForMember("Name").NotEmpty()
                          .AndForMember("Length").GreaterThanOrEqual(0)
                          .AndForMember("Width").GreaterThanOrEqual(0)
                          .TempBuild();

            var instance = new NiceBoat
            {
                Name       = "",
                Length     = -1000,
                Width      = -30,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "nice@@boat.com"
            };

            var result1 = handler.Verify(instance);

            result1.ShouldNotBeNull();
            result1.IsValid.ShouldBeFalse();

            result1.Errors.Should().HaveCount(3);
        }
Exemple #2
0
        public void SimpleAndOps_WithAC_ShouldBeSuccess_Test()
        {
            var options = new ValidationOptions();

            options.AnnotationEnabled        = false;
            options.FailureIfInstanceIsNull  = true;
            options.FailureIfProjectNotMatch = false;
            options.CustomValidatorEnabled   = false;

            var provider = new ValidationProvider(ValidationProjectManager, VerifiableObjectResolver, options);

            ValidationRegistrar.ForProvider(provider, "UT_SimpleAndOps_WithAC_ShouldBeSuccess_Test")
            .ForType <NiceBoat>()
            .ForMember(x => x.Name).MaxLength(8).When(x => x.StartsWith("M")).And().MinLength(7).Unless(x => x.StartsWith("N"))
            .Build();

            var validator = ValidationMe.Use("UT_SimpleAndOps_WithAC_ShouldBeSuccess_Test").Resolve <NiceBoat>();

            var instance = new NiceBoat
            {
                Name       = "NiceBoat1", //9
                Length     = 1000,
                Width      = 30,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "*****@*****.**"
            };

            var result1 = validator.Verify(instance);

            result1.ShouldNotBeNull();

            result1.IsValid.ShouldBeTrue();
        }
        public void GetValueFromInstanceTest()
        {
            var instance = new NiceBoat
            {
                Name       = "NiceBoat1000",
                Length     = 1000,
                Width      = 30,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "*****@*****.**"
            };

            var contract = VerifiableObjectContractManager.Resolve(typeof(NiceBoat));

            var value1 = contract.GetMemberContract("Name");
            var value2 = contract.GetMemberContract("Length");
            var value3 = contract.GetMemberContract("Width");
            var value4 = contract.GetMemberContract("CreateTime");
            var value5 = contract.GetMemberContract("Email");

            value1.GetValue(instance).ShouldBe("NiceBoat1000");
            value2.GetValue(instance).ShouldBe(1000);
            value3.GetValue(instance).ShouldBe(30);
            value4.GetValue(instance).ShouldBe(DateTimeFactory.Create(2020, 12, 21));
            value5.GetValue(instance).ShouldBe("*****@*****.**");
        }
Exemple #4
0
        public void SimpleOrOps_ShouldBeFailure_Test()
        {
            var options = new ValidationOptions();

            options.AnnotationEnabled        = false;
            options.FailureIfInstanceIsNull  = true;
            options.FailureIfProjectNotMatch = false;
            options.CustomValidatorEnabled   = false;

            var provider = new ValidationProvider(ValidationProjectManager, VerifiableObjectResolver, options);

            ValidationRegistrar.ForProvider(provider, "UT_SimpleOrOps_ShouldBeFailure_Test")
            .ForType <NiceBoat>()
            .ForMember(x => x.Width).GreaterThan(12).Or().LessThan(8)
            .Build();

            var validator = ValidationMe.Use("UT_SimpleOrOps_ShouldBeFailure_Test").Resolve <NiceBoat>();

            var instance = new NiceBoat
            {
                Name       = "NiceBoat1",
                Length     = 1000,
                Width      = 10,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "*****@*****.**"
            };

            var result1 = validator.Verify(instance);

            result1.ShouldNotBeNull();

            result1.IsValid.ShouldBeFalse();
        }
        public void ConditionPriorityTest()
        {
            var options = new ValidationOptions();

            options.AnnotationEnabled        = false;
            options.FailureIfInstanceIsNull  = true;
            options.FailureIfProjectNotMatch = false;
            options.CustomValidatorEnabled   = false;

            var provider = new ValidationProvider(ValidationProjectManager, VerifiableObjectResolver, options);

            ValidationRegistrar.ForProvider(provider, "UT_ConditionPriorityTest")
            .ForType <NiceBoat>()
            .ForMember(x => x.Name).MaxLength(10).And().MinLength(8).Or().MaxLength(20).And().MinLength(18)
            .Build();

            var validator = ValidationMe.Use("UT_ConditionPriorityTest").Resolve <NiceBoat>();

            var instance = new NiceBoat
            {
                Name       = "NiceBoat1234567890Z", //19
                Length     = 1000,
                Width      = 30,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "*****@*****.**"
            };

            var result1 = validator.Verify(instance);

            result1.ShouldNotBeNull();

            result1.IsValid.ShouldBeTrue();
        }
        public void UseGenericStrategyAndVerifyInstanceAndReturnSuccessTest()
        {
            var options = new ValidationOptions();

            options.AnnotationEnabled        = false;
            options.FailureIfInstanceIsNull  = true;
            options.FailureIfProjectNotMatch = false;
            options.CustomValidatorEnabled   = false;

            var provider = new ValidationProvider(ValidationProjectManager, VerifiableObjectResolver, options);

            ValidationRegistrar.ForProvider(provider, "UT_UseGenericStrategyAndVerifyInstanceAndReturnSuccessTest")
            .ForStrategy <GenericNiceBoatStrategy, NiceBoat>()
            .Build();

            var validator = ValidationMe.Use("UT_UseGenericStrategyAndVerifyInstanceAndReturnSuccessTest").Resolve <NiceBoat>();

            var instance = new NiceBoat
            {
                Name       = "NiceBoat1000",
                Length     = 1000,
                Width      = 30,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "*****@*****.**"
            };

            var result1 = validator.Verify(instance);

            result1.ShouldNotBeNull();

            result1.IsValid.ShouldBeTrue();
        }
        public void GetValueContextFromInstanceObjectContextTest()
        {
            var instance = new NiceBoat
            {
                Name       = "NiceBoat1000",
                Length     = 1000,
                Width      = 30,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "*****@*****.**"
            };

            var context = _objectResolver.Resolve <NiceBoat>(instance);

            var value1 = context.GetValue("Name");
            var value2 = context.GetValue("Length");
            var value3 = context.GetValue("Width");
            var value4 = context.GetValue("CreateTime");
            var value5 = context.GetValue("Email");

            value1.MemberName.ShouldBe("Name");
            value1.MemberType.ShouldBe(TypeClass.StringClazz);
            value1.DeclaringType.ShouldBe(typeof(NiceBoat));
            value1.MemberKind.ShouldBe(VerifiableMemberKind.Property);
            value1.IsBasicType.ShouldBeTrue();
            value1.IncludeAnnotations.ShouldBeTrue();
            value1.Value.ShouldBe("NiceBoat1000");

            value2.MemberName.ShouldBe("Length");
            value2.MemberType.ShouldBe(TypeClass.LongClazz);
            value2.DeclaringType.ShouldBe(typeof(NiceBoat));
            value2.MemberKind.ShouldBe(VerifiableMemberKind.Property);
            value2.IsBasicType.ShouldBeTrue();
            value2.IncludeAnnotations.ShouldBeTrue();
            value2.Value.ShouldBe(1000);

            value3.MemberName.ShouldBe("Width");
            value3.MemberType.ShouldBe(TypeClass.LongClazz);
            value3.DeclaringType.ShouldBe(typeof(NiceBoat));
            value3.MemberKind.ShouldBe(VerifiableMemberKind.Property);
            value3.IsBasicType.ShouldBeTrue();
            value3.IncludeAnnotations.ShouldBeTrue();
            value3.Value.ShouldBe(30);

            value4.MemberName.ShouldBe("CreateTime");
            value4.MemberType.ShouldBe(TypeClass.DateTimeClazz);
            value4.DeclaringType.ShouldBe(typeof(NiceBoat));
            value4.MemberKind.ShouldBe(VerifiableMemberKind.Field);
            value4.IsBasicType.ShouldBeTrue();
            value4.IncludeAnnotations.ShouldBeTrue();
            value4.Value.ShouldBe(DateTimeFactory.Create(2020, 12, 21));

            value5.MemberName.ShouldBe("Email");
            value5.MemberType.ShouldBe(TypeClass.StringClazz);
            value5.DeclaringType.ShouldBe(typeof(NiceBoat));
            value5.MemberKind.ShouldBe(VerifiableMemberKind.Property);
            value5.IsBasicType.ShouldBeTrue();
            value5.IncludeAnnotations.ShouldBeTrue();
            value5.Value.ShouldBe("*****@*****.**");
        }
Exemple #8
0
        public void InstanceWithGenericTypeCreateObjectContextTest()
        {
            var instance = new NiceBoat
            {
                Name       = "NiceBoat1000",
                Length     = 1000,
                Width      = 30,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "*****@*****.**"
            };

            var context = _objectResolver.Resolve <NiceBoat>(instance);

            context.ShouldNotBeNull();
            context.Type.ShouldBe(typeof(NiceBoat));
            context.ObjectKind.ShouldBe(VerifiableObjectKind.StructureType);
            context.IsBasicType().ShouldBeFalse();
            context.Instance.ShouldBe(instance);
            context.KeyValueCollection.ShouldBeNull();
            context.InstanceName.ShouldBe("Instance");

            //annotations/attributes - class level
            context.IncludeAnnotations.ShouldBeTrue();
            context.Attributes.Count.ShouldBe(0);

            //member/value-contract
            context.GetMembers().Count().ShouldBe(5);

            context.GetMember("Name").MemberName.ShouldBe("Name");
            context.GetMember("Length").MemberName.ShouldBe("Length");
            context.GetMember("Width").MemberName.ShouldBe("Width");
            context.GetMember("CreateTime").MemberName.ShouldBe("CreateTime");
            context.GetMember("Email").MemberName.ShouldBe("Email");

            context.GetMember(0).MemberName.ShouldBe("Name");
            context.GetMember(1).MemberName.ShouldBe("Length");
            context.GetMember(2).MemberName.ShouldBe("Width");
            context.GetMember(3).MemberName.ShouldBe("Email"); //Property first
            context.GetMember(4).MemberName.ShouldBe("CreateTime");

            //value/value-context
            context.GetValues().Count().ShouldBe(5);

            context.GetValue("Name").MemberName.ShouldBe("Name");
            context.GetValue("Length").MemberName.ShouldBe("Length");
            context.GetValue("Width").MemberName.ShouldBe("Width");
            context.GetValue("CreateTime").MemberName.ShouldBe("CreateTime");
            context.GetValue("Email").MemberName.ShouldBe("Email");

            context.GetValue(0).MemberName.ShouldBe("Name");
            context.GetValue(1).MemberName.ShouldBe("Length");
            context.GetValue(2).MemberName.ShouldBe("Width");
            context.GetValue(3).MemberName.ShouldBe("Email"); //Property first
            context.GetValue(4).MemberName.ShouldBe("CreateTime");

            context.GetMemberMap().Count.ShouldBe(5);
            context.GetValueMap().Count.ShouldBe(5);
        }
Exemple #9
0
        public void VerifyAnByInstanceShouldBeSuccessTest()
        {
            var instance = new NiceBoat
            {
                Name       = "NiceBoat1000",
                Length     = 1000,
                Width      = 30,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "*****@*****.**"
            };

            var result1 = AnnotationValidator.Verify(instance);
            var result2 = AnnotationValidator.Verify(typeof(NiceBoat), instance);

            result1.ShouldNotBeNull();
            result2.ShouldNotBeNull();

            result1.IsValid.ShouldBeTrue();
            result2.IsValid.ShouldBeTrue();
        }
Exemple #10
0
        public void TempBuildTest()
        {
            var model1 = new NiceBoat {
                Name = "Haha"
            };
            var model2 = new NiceBoat {
                Name = ""
            };

            var options = new ValidationOptions()
            {
                AnnotationEnabled      = false,
                CustomValidatorEnabled = false
            };

            var handler = ValidationRegistrar.DefaultRegistrar
                          .ForType <NiceBoat>().ForMember(x => x.Name).NotEmpty()
                          .TempBuild(options);

            handler.ShouldNotBeNull();
            handler.Verify(model1).IsValid.ShouldBeTrue();
            handler.Verify(model2).IsValid.ShouldBeFalse();
        }
Exemple #11
0
        public void VerifyAnByInstanceShouldBeFailureTest()
        {
            var instance = new NiceBoat
            {
                Name       = "",
                Length     = -1000,
                Width      = -30,
                CreateTime = DateTimeFactory.Create(2020, 12, 21),
                Email      = "nice@@boat.com"
            };

            var result1 = AnnotationValidator.Verify(instance);
            var result2 = AnnotationValidator.Verify(typeof(NiceBoat), instance);

            result1.ShouldNotBeNull();
            result2.ShouldNotBeNull();

            result1.IsValid.ShouldBeFalse();
            result2.IsValid.ShouldBeFalse();

            result1.Errors.Should().HaveCount(4);
            result2.Errors.Should().HaveCount(4);
        }
Exemple #12
0
        public StrategyValidatorTests()
        {
            RightModel = new NiceBoat()
            {
                Name = "Good", Length = 10, Width = 10
            };
            WrongModel = new NiceBoat()
            {
                Name = "", Length = -10, Width = -1
            };

            RightDictionary = new Dictionary <string, object> {
                { "Name", "Good" }, { "Length", 10 }, { "Width", 10 }
            };
            WrongDictionary = new Dictionary <string, object> {
                { "Name", "" }, { "Length", -10 }, { "Width", -10 }
            };

            Options = new ValidationOptions()
            {
                AnnotationEnabled      = false,
                CustomValidatorEnabled = false
            };
        }