From 2f2040a4c35301fc43c1ffa3ef48f2fd70465ac0 Mon Sep 17 00:00:00 2001 From: Fritz Brandhuber Date: Mon, 23 Aug 2021 17:27:34 +0200 Subject: [PATCH] fluent implementation Signed-off-by: Fritz Brandhuber --- .../Syntax/Elements/Members/GivenMembersThat.cs | 12 ++++++++++++ .../Syntax/Elements/Members/IMemberConditions.cs | 2 ++ .../Syntax/Elements/Members/IMemberPredicates.cs | 2 ++ .../Elements/Members/MemberConditionsDefinition.cs | 12 ++++++++++++ .../Elements/Members/MemberPredicatesDefinition.cs | 11 +++++++++++ .../Fluent/Syntax/Elements/Members/MembersShould.cs | 12 ++++++++++++ .../Elements/Members/ShouldRelateToMembersThat.cs | 12 ++++++++++++ 7 files changed, 63 insertions(+) diff --git a/ArchUnitNET/Fluent/Syntax/Elements/Members/GivenMembersThat.cs b/ArchUnitNET/Fluent/Syntax/Elements/Members/GivenMembersThat.cs index 4a023943b..cd2b07e05 100644 --- a/ArchUnitNET/Fluent/Syntax/Elements/Members/GivenMembersThat.cs +++ b/ArchUnitNET/Fluent/Syntax/Elements/Members/GivenMembersThat.cs @@ -65,6 +65,12 @@ public TGivenRuleTypeConjunction AreDeclaredIn(IEnumerable types) return Create(_ruleCreator); } + public TGivenRuleTypeConjunction AreStatic() + { + _ruleCreator.AddPredicate(MemberPredicatesDefinition.AreStatic()); + return Create(_ruleCreator); + } + //Negations @@ -112,5 +118,11 @@ public TGivenRuleTypeConjunction AreNotDeclaredIn(IEnumerable types) _ruleCreator.AddPredicate(MemberPredicatesDefinition.AreNotDeclaredIn(types)); return Create(_ruleCreator); } + + public TGivenRuleTypeConjunction AreNotStatic() + { + _ruleCreator.AddPredicate(MemberPredicatesDefinition.AreNotStatic()); + return Create(_ruleCreator); + } } } \ No newline at end of file diff --git a/ArchUnitNET/Fluent/Syntax/Elements/Members/IMemberConditions.cs b/ArchUnitNET/Fluent/Syntax/Elements/Members/IMemberConditions.cs index d1d88df6c..53dc6012f 100644 --- a/ArchUnitNET/Fluent/Syntax/Elements/Members/IMemberConditions.cs +++ b/ArchUnitNET/Fluent/Syntax/Elements/Members/IMemberConditions.cs @@ -20,6 +20,7 @@ public interface IMemberConditions : IObjectCond TReturnType BeDeclaredIn(IObjectProvider types); TReturnType BeDeclaredIn(IEnumerable types); TReturnType BeDeclaredIn(IEnumerable types); + TReturnType BeStatic(); //Negations @@ -31,5 +32,6 @@ public interface IMemberConditions : IObjectCond TReturnType NotBeDeclaredIn(IObjectProvider types); TReturnType NotBeDeclaredIn(IEnumerable types); TReturnType NotBeDeclaredIn(IEnumerable types); + TReturnType NotBeStatic(); } } \ No newline at end of file diff --git a/ArchUnitNET/Fluent/Syntax/Elements/Members/IMemberPredicates.cs b/ArchUnitNET/Fluent/Syntax/Elements/Members/IMemberPredicates.cs index 9e800387a..727ed4810 100644 --- a/ArchUnitNET/Fluent/Syntax/Elements/Members/IMemberPredicates.cs +++ b/ArchUnitNET/Fluent/Syntax/Elements/Members/IMemberPredicates.cs @@ -21,6 +21,7 @@ public interface TRuleTypeConjunction AreDeclaredIn(IObjectProvider types); TRuleTypeConjunction AreDeclaredIn(IEnumerable types); TRuleTypeConjunction AreDeclaredIn(IEnumerable types); + TRuleTypeConjunction AreStatic(); //Negations @@ -32,5 +33,6 @@ public interface TRuleTypeConjunction AreNotDeclaredIn(IObjectProvider types); TRuleTypeConjunction AreNotDeclaredIn(IEnumerable types); TRuleTypeConjunction AreNotDeclaredIn(IEnumerable types); + TRuleTypeConjunction AreNotStatic(); } } \ No newline at end of file diff --git a/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberConditionsDefinition.cs b/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberConditionsDefinition.cs index 93b82c1a2..0372afe7c 100644 --- a/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberConditionsDefinition.cs +++ b/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberConditionsDefinition.cs @@ -161,6 +161,12 @@ IEnumerable Condition(IEnumerable methods, Architect return new ArchitectureCondition(Condition, description); } + public static ICondition BeStatic() + { + return new SimpleCondition(member => !member.IsStatic.HasValue || member.IsStatic.Value, + "be static", "is not static"); + } + //Relation Conditions @@ -321,6 +327,12 @@ IEnumerable Condition(IEnumerable methods, Architect return new ArchitectureCondition(Condition, description); } + public static ICondition NotBeStatic() + { + return new SimpleCondition(member => !member.IsStatic.HasValue || !member.IsStatic.Value, + "not be static", "is static"); + } + //Relation Condition Negations diff --git a/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberPredicatesDefinition.cs b/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberPredicatesDefinition.cs index 7162f194b..3aff90d6c 100644 --- a/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberPredicatesDefinition.cs +++ b/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberPredicatesDefinition.cs @@ -136,6 +136,11 @@ IEnumerable Condition(IEnumerable members, Architecture architecture) return new ArchitecturePredicate(Condition, description); } + public static IPredicate AreStatic() + { + return new SimplePredicate(member => member.IsStatic.HasValue && member.IsStatic.Value, "are static"); + } + //Negations @@ -260,5 +265,11 @@ IEnumerable Condition(IEnumerable members, Architecture architecture) return new ArchitecturePredicate(Condition, description); } + + public static IPredicate AreNotStatic() + { + return new SimplePredicate(member => member.IsStatic.HasValue && !member.IsStatic.Value, + "are not static"); + } } } \ No newline at end of file diff --git a/ArchUnitNET/Fluent/Syntax/Elements/Members/MembersShould.cs b/ArchUnitNET/Fluent/Syntax/Elements/Members/MembersShould.cs index 6ac80228c..5ffef8d15 100644 --- a/ArchUnitNET/Fluent/Syntax/Elements/Members/MembersShould.cs +++ b/ArchUnitNET/Fluent/Syntax/Elements/Members/MembersShould.cs @@ -67,6 +67,12 @@ public TRuleTypeShouldConjunction BeDeclaredIn(IEnumerable types) return Create(_ruleCreator); } + public TRuleTypeShouldConjunction BeStatic() + { + _ruleCreator.AddCondition(MemberConditionsDefinition.BeStatic()); + return Create(_ruleCreator); + } + //Relation Conditions public ShouldRelateToTypesThat BeDeclaredInTypesThat() @@ -126,6 +132,12 @@ public TRuleTypeShouldConjunction NotBeDeclaredIn(IEnumerable types) return Create(_ruleCreator); } + public TRuleTypeShouldConjunction NotBeStatic() + { + _ruleCreator.AddCondition(MemberConditionsDefinition.NotBeStatic()); + return Create(_ruleCreator); + } + //Relation Condition Negations public ShouldRelateToTypesThat NotBeDeclaredInTypesThat() diff --git a/ArchUnitNET/Fluent/Syntax/Elements/Members/ShouldRelateToMembersThat.cs b/ArchUnitNET/Fluent/Syntax/Elements/Members/ShouldRelateToMembersThat.cs index 496362989..b0265a81f 100644 --- a/ArchUnitNET/Fluent/Syntax/Elements/Members/ShouldRelateToMembersThat.cs +++ b/ArchUnitNET/Fluent/Syntax/Elements/Members/ShouldRelateToMembersThat.cs @@ -69,6 +69,12 @@ public TRuleTypeShouldConjunction AreDeclaredIn(IEnumerable types) return Create(_ruleCreator); } + public TRuleTypeShouldConjunction AreStatic() + { + _ruleCreator.ContinueComplexCondition(MemberPredicatesDefinition.AreStatic()); + return Create(_ruleCreator); + } + //Negations @@ -119,5 +125,11 @@ public TRuleTypeShouldConjunction AreNotDeclaredIn(IEnumerable types) _ruleCreator.ContinueComplexCondition(MemberPredicatesDefinition.AreNotDeclaredIn(types)); return Create(_ruleCreator); } + + public TRuleTypeShouldConjunction AreNotStatic() + { + _ruleCreator.ContinueComplexCondition(MemberPredicatesDefinition.AreNotStatic()); + return Create(_ruleCreator); + } } } \ No newline at end of file