public void ValidationException()
        {
            TargetClassDefinition definition = DefinitionObjectMother.BuildUnvalidatedDefinition(
                typeof(ClassOverridingSingleMixinMethod), typeof(AbstractMixinWithoutBase));

            var log     = new DefaultValidationLog();
            var visitor = new ValidatingVisitor(log);

            new DefaultMethodRules().Install(visitor);
            definition.Accept(visitor);

            var validationLogData = log.GetData();
            var exception         = new ValidationException(validationLogData);

            Assert.That(
                exception.Message,
                Is.EqualTo(
                    "Some parts of the mixin configuration could not be validated."
                    + Environment.NewLine
                    + "MethodDefinition 'Remotion.Mixins.UnitTests.Core.Validation.ValidationTestDomain.AbstractMixinWithoutBase.AbstractMethod', 6 rules "
                    + "executed"
                    + Environment.NewLine
                    + "Context: Remotion.Mixins.UnitTests.Core.Validation.ValidationTestDomain.AbstractMixinWithoutBase -> "
                    + "Remotion.Mixins.UnitTests.Core.TestDomain.ClassOverridingSingleMixinMethod"
                    + Environment.NewLine
                    + "  failures - 1"
                    + Environment.NewLine
                    + "    A target class overrides a method from one of its mixins, but the mixin is not derived from one of the Mixin<...> base classes. "
                    + "(Remotion.Mixins.Validation.Rules.DefaultMethodRules.OverridingMixinMethodsOnlyPossibleWhenMixinDerivedFromMixinBase)"
                    + Environment.NewLine
                    ));
        }
示例#2
0
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.TargetClassRules.Add(new DelegateValidationRule <TargetClassDefinition> (TargetClassMustNotBeSealed));
     visitor.TargetClassRules.Add(new DelegateValidationRule <TargetClassDefinition> (TargetClassMustNotBeAnInterface));
     visitor.TargetClassRules.Add(new DelegateValidationRule <TargetClassDefinition> (TargetClassMustHavePublicOrProtectedCtor));
     visitor.TargetClassRules.Add(new DelegateValidationRule <TargetClassDefinition> (TargetClassMustBePublic));
 }
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.MixinRules.Add(new DelegateValidationRule <MixinDefinition> (MixinCannotBeInterface));
     visitor.MixinRules.Add(new DelegateValidationRule <MixinDefinition> (MixinMustBePublic));
     visitor.MixinRules.Add(new DelegateValidationRule <MixinDefinition> (MixinWithOverriddenMembersMustHavePublicOrProtectedDefaultCtor));
     visitor.MixinRules.Add(new DelegateValidationRule <MixinDefinition> (MixinCannotMixItself));
     visitor.MixinRules.Add(new DelegateValidationRule <MixinDefinition> (MixinCannotMixItsBase));
     visitor.MixinRules.Add(new DelegateValidationRule <MixinDefinition> (MixinNeedingDerivedTypeMustBeDerivedFromMixinBase));
 }
示例#4
0
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.MethodRules.Add(new DelegateValidationRule <MethodDefinition> (OverriddenMethodMustBeVirtual));
     visitor.MethodRules.Add(new DelegateValidationRule <MethodDefinition> (OverriddenMethodMustNotBeFinal));
     visitor.MethodRules.Add(new DelegateValidationRule <MethodDefinition> (AbstractMixinMethodMustBeOverridden));
     visitor.MethodRules.Add(new DelegateValidationRule <MethodDefinition> (AbstractTargetClassMethodMustNotBeOverridden));
     visitor.MethodRules.Add(new DelegateValidationRule <MethodDefinition> (NoCircularOverrides));
     visitor.MethodRules.Add(new DelegateValidationRule <MethodDefinition> (OverridingMixinMethodsOnlyPossibleWhenMixinDerivedFromMixinBase));
     visitor.MethodRules.Add(new DelegateValidationRule <MethodDefinition> (OverridingMethodMustBePublicOrProtected));
 }
 public override void Install(ValidatingVisitor visitor)
 {
     // no rules ATM
 }
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.MixinDependencyRules.Add(new DelegateValidationRule <MixinDependencyDefinition> (DependencyMustBeSatisfiedByAnotherMixin));
 }
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.RequiredMethodRules.Add(new DelegateValidationRule <RequiredMethodDefinition> (RequiredNextCallMethodMustBePublicOrProtected));
 }
 public void Install(ValidatingVisitor visitor)
 {
     visitor.TargetClassRules.Add(new DelegateValidationRule <TargetClassDefinition> (delegate { throw new InvalidOperationException(); }));
 }
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.RequiredNextCallTypeRules.Add(new DelegateValidationRule <RequiredNextCallTypeDefinition> (RequiredNextCallTypeMustBePublic));
 }
示例#10
0
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.AttributeIntroductionRules.Add(
         new DelegateValidationRule <AttributeIntroductionDefinition> (AllowMultipleRequiredIfAttributeIntroducedMultipleTimes));
 }
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.RequiredTargetCallTypeRules.Add(new DelegateValidationRule <RequiredTargetCallTypeDefinition> (FaceClassMustBeAssignableFromTargetType));
     visitor.RequiredTargetCallTypeRules.Add(new DelegateValidationRule <RequiredTargetCallTypeDefinition> (RequiredTargetCallTypeMustBePublic));
 }
示例#12
0
 public abstract void Install(ValidatingVisitor visitor);
示例#13
0
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.InterfaceIntroductionRules.Add(new DelegateValidationRule <InterfaceIntroductionDefinition> (IMixinTargetCannotBeIntroduced));
     visitor.InterfaceIntroductionRules.Add(new DelegateValidationRule <InterfaceIntroductionDefinition> (IntroducedInterfaceMustBePublic));
 }
示例#14
0
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.MethodIntroductionRules.Add(new DelegateValidationRule <MethodIntroductionDefinition> (PublicMethodNameMustBeUniqueInTargetClass));
     visitor.MethodIntroductionRules.Add(new DelegateValidationRule <MethodIntroductionDefinition> (PublicMethodNameMustBeUniqueInOtherMixins));
 }
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.PropertyRules.Add(new DelegateValidationRule <PropertyDefinition> (NewMemberAddedByOverride));
 }
示例#16
0
 public override void Install(ValidatingVisitor visitor)
 {
     // no rules available
 }
 public override void Install(ValidatingVisitor visitor)
 {
     visitor.NextCallDependencyRules.Add(new DelegateValidationRule <NextCallDependencyDefinition> (DependencyMustBeSatisfied));
 }