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 )); }
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)); }
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)); }
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)); }
public abstract void Install(ValidatingVisitor visitor);
public override void Install(ValidatingVisitor visitor) { visitor.InterfaceIntroductionRules.Add(new DelegateValidationRule <InterfaceIntroductionDefinition> (IMixinTargetCannotBeIntroduced)); visitor.InterfaceIntroductionRules.Add(new DelegateValidationRule <InterfaceIntroductionDefinition> (IntroducedInterfaceMustBePublic)); }
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)); }
public override void Install(ValidatingVisitor visitor) { // no rules available }
public override void Install(ValidatingVisitor visitor) { visitor.NextCallDependencyRules.Add(new DelegateValidationRule <NextCallDependencyDefinition> (DependencyMustBeSatisfied)); }