public void ValidatedPropertiesEnumerableIsEmptyIfRulesetDataHasNoProperties()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator<IValidatedElement> validatedPropertiesEnumerator
                = ((IValidatedType)validatedType).GetValidatedProperties().GetEnumerator();

            Assert.IsFalse(validatedPropertiesEnumerator.MoveNext());
        }
        public void ValidatedPropertiesEnumerableIncludesPublicPropertyWithValidatorsOnly()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            ValidatedPropertyReference nonExistingPropertyReference
                = new ValidatedPropertyReference("NonExistingProperty");

            rulesetData.Properties.Add(nonExistingPropertyReference);
            nonExistingPropertyReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedPropertyReference publicPropertyWithoutValidatorsReference
                = new ValidatedPropertyReference("PublicPropertyWithoutValidators");

            rulesetData.Properties.Add(publicPropertyWithoutValidatorsReference);

            ValidatedPropertyReference writeOnlyPublicPropertyReference
                = new ValidatedPropertyReference("WriteOnlyPublicProperty");

            rulesetData.Properties.Add(writeOnlyPublicPropertyReference);
            writeOnlyPublicPropertyReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedPropertyReference nonPublicPropertyReference
                = new ValidatedPropertyReference("NonPublicProperty");

            rulesetData.Properties.Add(nonPublicPropertyReference);
            nonPublicPropertyReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedPropertyReference publicPropertyReference
                = new ValidatedPropertyReference("PublicProperty");

            rulesetData.Properties.Add(publicPropertyReference);
            publicPropertyReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedPropertyReference secondPublicPropertyReference
                = new ValidatedPropertyReference("SecondPublicProperty");

            rulesetData.Properties.Add(secondPublicPropertyReference);
            secondPublicPropertyReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator <IValidatedElement> validatedPropertiesEnumerator
                = ((IValidatedType)validatedType).GetValidatedProperties().GetEnumerator();

            Assert.IsTrue(validatedPropertiesEnumerator.MoveNext());
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass).GetProperty("PublicProperty"),
                           validatedPropertiesEnumerator.Current.MemberInfo);
            Assert.IsTrue(validatedPropertiesEnumerator.MoveNext());
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass).GetProperty("SecondPublicProperty"),
                           validatedPropertiesEnumerator.Current.MemberInfo);
            Assert.AreSame(typeof(string), validatedPropertiesEnumerator.Current.TargetType);

            Assert.IsFalse(validatedPropertiesEnumerator.MoveNext());
        }
        public void ValidatedPropertiesEnumerableIsEmptyIfRulesetDataHasNoProperties()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator <IValidatedElement> validatedPropertiesEnumerator
                = ((IValidatedType)validatedType).GetValidatedProperties().GetEnumerator();

            Assert.IsFalse(validatedPropertiesEnumerator.MoveNext());
        }
        public void DoesNotSupportSelfValidation()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));

            IEnumerator <MethodInfo> selfValidationMethodsEnumerator
                = ((IValidatedType)validatedType).GetSelfValidationMethods().GetEnumerator();

            Assert.IsFalse(selfValidationMethodsEnumerator.MoveNext());
        }
        public void DoesNotSupportSelfValidation()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));

            IEnumerator<MethodInfo> selfValidationMethodsEnumerator
                = ((IValidatedType)validatedType).GetSelfValidationMethods().GetEnumerator();

            Assert.IsFalse(selfValidationMethodsEnumerator.MoveNext());
        }
        public void CreatedInstanceReturnsCorrectValuesOnImplementedInterfaces()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));

            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass), ((IValidatedType)validatedType).MemberInfo);
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass), ((IValidatedType)validatedType).TargetType);
            Assert.AreEqual(CompositionType.And, ((IValidatedType)validatedType).CompositionType);
            Assert.AreEqual(null, ((IValidatedType)validatedType).CompositionMessageTemplate);
            Assert.AreEqual(false, ((IValidatedType)validatedType).IgnoreNulls);
            Assert.AreEqual(null, ((IValidatedType)validatedType).IgnoreNullsMessageTemplate);
        }
        public void CreatedInstanceReturnsCorrectValuesOnImplementedInterfaces()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));

            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass), ((IValidatedType)validatedType).MemberInfo);
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass), ((IValidatedType)validatedType).TargetType);
            Assert.AreEqual(CompositionType.And, ((IValidatedType)validatedType).CompositionType);
            Assert.AreEqual(null, ((IValidatedType)validatedType).CompositionMessageTemplate);
            Assert.AreEqual(false, ((IValidatedType)validatedType).IgnoreNulls);
            Assert.AreEqual(null, ((IValidatedType)validatedType).IgnoreNullsMessageTemplate);
        }
        public void ValidatedMethodsEnumerableSkipsPublicMethodWithoutValidators()
        {
            ValidationRulesetData    rulesetData = new ValidationRulesetData();
            ValidatedMethodReference publicMethodWithoutValidatorsReference
                = new ValidatedMethodReference("PublicMethodWithoutValidators");

            rulesetData.Methods.Add(publicMethodWithoutValidatorsReference);

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator <IValidatedElement> validatedMethodsEnumerator
                = ((IValidatedType)validatedType).GetValidatedMethods().GetEnumerator();

            Assert.IsFalse(validatedMethodsEnumerator.MoveNext());
        }
        public void ValidatedPropertiesEnumerableSkipsNonExistingPropertyWithValidators()
        {
            ValidationRulesetData      rulesetData = new ValidationRulesetData();
            ValidatedPropertyReference nonExistingPropertyReference
                = new ValidatedPropertyReference("NonExistingProperty");

            rulesetData.Properties.Add(nonExistingPropertyReference);
            nonExistingPropertyReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator <IValidatedElement> validatedPropertiesEnumerator
                = ((IValidatedType)validatedType).GetValidatedProperties().GetEnumerator();

            Assert.IsFalse(validatedPropertiesEnumerator.MoveNext());
        }
        public void ValidatedMethodsEnumerableSkipsVoidPublicMethodWithValidators()
        {
            ValidationRulesetData    rulesetData = new ValidationRulesetData();
            ValidatedMethodReference nonPublicMethodReference
                = new ValidatedMethodReference("VoidPublicMethod");

            rulesetData.Methods.Add(nonPublicMethodReference);
            nonPublicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator <IValidatedElement> validatedMethodsEnumerator
                = ((IValidatedType)validatedType).GetValidatedMethods().GetEnumerator();

            Assert.IsFalse(validatedMethodsEnumerator.MoveNext());
        }
        public void ValidatedMethodsEnumerableIncludesPublicMethodWithValidators()
        {
            ValidationRulesetData    rulesetData = new ValidationRulesetData();
            ValidatedMethodReference publicMethodReference
                = new ValidatedMethodReference("PublicMethod");

            rulesetData.Methods.Add(publicMethodReference);
            publicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator <IValidatedElement> validatedMethodsEnumerator
                = ((IValidatedType)validatedType).GetValidatedMethods().GetEnumerator();

            Assert.IsTrue(validatedMethodsEnumerator.MoveNext());
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass).GetMethod("PublicMethod"),
                           validatedMethodsEnumerator.Current.MemberInfo);
            Assert.AreSame(typeof(string), validatedMethodsEnumerator.Current.TargetType);

            Assert.IsFalse(validatedMethodsEnumerator.MoveNext());
        }
        public void InstanceReturnsCorrectValidatorDescriptors()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();
            rulesetData.Validators.Add(new MockValidatorData("validator1", false));
            rulesetData.Validators.Get("validator1").MessageTemplate = "type validator 1 message";
            rulesetData.Validators.Add(new MockValidatorData("validator2", false));
            rulesetData.Validators.Get("validator2").MessageTemplate = "type validator 2 message";

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));

            IEnumerator<IValidatorDescriptor> validatorDescriptorsEnumerator
                = ((IValidatedType)validatedType).GetValidatorDescriptors().GetEnumerator();
            Assert.IsNotNull(validatorDescriptorsEnumerator);
            Assert.IsTrue(validatorDescriptorsEnumerator.MoveNext());
            Assert.AreEqual("type validator 1 message",
                            ((MockValidatorData)validatorDescriptorsEnumerator.Current).MessageTemplate);
            Assert.IsTrue(validatorDescriptorsEnumerator.MoveNext());
            Assert.AreEqual("type validator 2 message",
                            ((MockValidatorData)validatorDescriptorsEnumerator.Current).MessageTemplate);
            Assert.IsFalse(validatorDescriptorsEnumerator.MoveNext());
        }
        public void InstanceReturnsCorrectValidatorDescriptors()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            rulesetData.Validators.Add(new MockValidatorData("validator1", false));
            rulesetData.Validators.Get("validator1").MessageTemplate = "type validator 1 message";
            rulesetData.Validators.Add(new MockValidatorData("validator2", false));
            rulesetData.Validators.Get("validator2").MessageTemplate = "type validator 2 message";

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));

            IEnumerator <IValidatorDescriptor> validatorDescriptorsEnumerator
                = ((IValidatedType)validatedType).GetValidatorDescriptors().GetEnumerator();

            Assert.IsNotNull(validatorDescriptorsEnumerator);
            Assert.IsTrue(validatorDescriptorsEnumerator.MoveNext());
            Assert.AreEqual("type validator 1 message",
                            ((MockValidatorData)validatorDescriptorsEnumerator.Current).MessageTemplate);
            Assert.IsTrue(validatorDescriptorsEnumerator.MoveNext());
            Assert.AreEqual("type validator 2 message",
                            ((MockValidatorData)validatorDescriptorsEnumerator.Current).MessageTemplate);
            Assert.IsFalse(validatorDescriptorsEnumerator.MoveNext());
        }
        public void ValidatedFieldsEnumerableIncludesPublicFieldWithValidators()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();
            ValidatedFieldReference publicFieldReference
                = new ValidatedFieldReference("PublicField");
            rulesetData.Fields.Add(publicFieldReference);
            publicFieldReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator<IValidatedElement> validatedFieldsEnumerator
                = ((IValidatedType)validatedType).GetValidatedFields().GetEnumerator();

            Assert.IsTrue(validatedFieldsEnumerator.MoveNext());
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass).GetField("PublicField"),
                           validatedFieldsEnumerator.Current.MemberInfo);
            Assert.AreSame(typeof(string), validatedFieldsEnumerator.Current.TargetType);

            Assert.IsFalse(validatedFieldsEnumerator.MoveNext());
        }
        public void ValidatedMethodsEnumerableSkipsPublicMethodWithParametersWithValidators()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();
            ValidatedMethodReference nonPublicMethodReference
                = new ValidatedMethodReference("PublicMethodWithParameters");
            rulesetData.Methods.Add(nonPublicMethodReference);
            nonPublicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator<IValidatedElement> validatedMethodsEnumerator
                = ((IValidatedType)validatedType).GetValidatedMethods().GetEnumerator();

            Assert.IsFalse(validatedMethodsEnumerator.MoveNext());
        }
        public void ValidatedFieldsEnumerableSkipsPublicFieldWithoutValidators()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();
            ValidatedFieldReference publicFieldWithoutValidatorsReference
                = new ValidatedFieldReference("PublicFieldWithoutValidators");
            rulesetData.Fields.Add(publicFieldWithoutValidatorsReference);

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator<IValidatedElement> validatedFieldsEnumerator
                = ((IValidatedType)validatedType).GetValidatedFields().GetEnumerator();

            Assert.IsFalse(validatedFieldsEnumerator.MoveNext());
        }
        public void ValidatedPropertiesEnumerableSkipsNonExistingPropertyWithValidators()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();
            ValidatedPropertyReference nonExistingPropertyReference
                = new ValidatedPropertyReference("NonExistingProperty");
            rulesetData.Properties.Add(nonExistingPropertyReference);
            nonExistingPropertyReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator<IValidatedElement> validatedPropertiesEnumerator
                = ((IValidatedType)validatedType).GetValidatedProperties().GetEnumerator();

            Assert.IsFalse(validatedPropertiesEnumerator.MoveNext());
        }
        public void ValidatedMethodsEnumerableIncludesPublicMethodWithValidatorsOnly()
        {
            ValidationRulesetData rulesetData = new ValidationRulesetData();

            ValidatedMethodReference nonExistingMethodReference
                = new ValidatedMethodReference("NonExistingMethod");
            rulesetData.Methods.Add(nonExistingMethodReference);
            nonExistingMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedMethodReference publicMethodWithoutValidatorsReference
                = new ValidatedMethodReference("PublicMethodWithoutValidators");
            rulesetData.Methods.Add(publicMethodWithoutValidatorsReference);

            ValidatedMethodReference nonPublicMethodReference
                = new ValidatedMethodReference("NonPublicMethod");
            rulesetData.Methods.Add(nonPublicMethodReference);
            nonPublicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedMethodReference publicMethodReference
                = new ValidatedMethodReference("PublicMethod");
            rulesetData.Methods.Add(publicMethodReference);
            publicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ValidatedMethodReference secondPublicMethodReference
                = new ValidatedMethodReference("SecondPublicMethod");
            rulesetData.Methods.Add(secondPublicMethodReference);
            secondPublicMethodReference.Validators.Add(new MockValidatorData("validator1", false));

            ConfigurationValidatedType validatedType
                = new ConfigurationValidatedType(rulesetData, typeof(ConfigurationValidatedTypeFixtureTestClass));
            IEnumerator<IValidatedElement> validatedMethodsEnumerator
                = ((IValidatedType)validatedType).GetValidatedMethods().GetEnumerator();

            Assert.IsTrue(validatedMethodsEnumerator.MoveNext());
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass).GetMethod("PublicMethod"),
                           validatedMethodsEnumerator.Current.MemberInfo);
            Assert.IsTrue(validatedMethodsEnumerator.MoveNext());
            Assert.AreSame(typeof(ConfigurationValidatedTypeFixtureTestClass).GetMethod("SecondPublicMethod"),
                           validatedMethodsEnumerator.Current.MemberInfo);
            Assert.AreSame(typeof(string), validatedMethodsEnumerator.Current.TargetType);

            Assert.IsFalse(validatedMethodsEnumerator.MoveNext());
        }