Skip to content

Commit a3355d3

Browse files
authored
Merge pull request #106 from thomasdc/feature-regex-matching
Allow regex matching on name and full name when providing a string pattern
2 parents 9c0d03b + c9a4cad commit a3355d3

File tree

7 files changed

+56
-55
lines changed

7 files changed

+56
-55
lines changed

ArchUnitNET/Fluent/Syntax/Elements/GivenObjectsThat.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -388,9 +388,9 @@ public TGivenRuleTypeConjunction HaveName(string name)
388388
return Create<TGivenRuleTypeConjunction, TRuleType>(_ruleCreator);
389389
}
390390

391-
public TGivenRuleTypeConjunction HaveNameMatching(string pattern)
391+
public TGivenRuleTypeConjunction HaveNameMatching(string pattern, bool useRegularExpressions = false)
392392
{
393-
_ruleCreator.AddPredicate(ObjectPredicatesDefinition<TRuleType>.HaveNameMatching(pattern));
393+
_ruleCreator.AddPredicate(ObjectPredicatesDefinition<TRuleType>.HaveNameMatching(pattern, useRegularExpressions));
394394
return Create<TGivenRuleTypeConjunction, TRuleType>(_ruleCreator);
395395
}
396396

@@ -400,9 +400,9 @@ public TGivenRuleTypeConjunction HaveFullName(string fullname)
400400
return Create<TGivenRuleTypeConjunction, TRuleType>(_ruleCreator);
401401
}
402402

403-
public TGivenRuleTypeConjunction HaveFullNameMatching(string pattern)
403+
public TGivenRuleTypeConjunction HaveFullNameMatching(string pattern, bool useRegularExpressions = false)
404404
{
405-
_ruleCreator.AddPredicate(ObjectPredicatesDefinition<TRuleType>.HaveFullNameMatching(pattern));
405+
_ruleCreator.AddPredicate(ObjectPredicatesDefinition<TRuleType>.HaveFullNameMatching(pattern, useRegularExpressions));
406406
return Create<TGivenRuleTypeConjunction, TRuleType>(_ruleCreator);
407407
}
408408

@@ -738,9 +738,9 @@ public TGivenRuleTypeConjunction DoNotHaveName(string name)
738738
return Create<TGivenRuleTypeConjunction, TRuleType>(_ruleCreator);
739739
}
740740

741-
public TGivenRuleTypeConjunction DoNotHaveNameMatching(string pattern)
741+
public TGivenRuleTypeConjunction DoNotHaveNameMatching(string pattern, bool useRegularExpressions = false)
742742
{
743-
_ruleCreator.AddPredicate(ObjectPredicatesDefinition<TRuleType>.DoNotHaveNameMatching(pattern));
743+
_ruleCreator.AddPredicate(ObjectPredicatesDefinition<TRuleType>.DoNotHaveNameMatching(pattern, useRegularExpressions));
744744
return Create<TGivenRuleTypeConjunction, TRuleType>(_ruleCreator);
745745
}
746746

@@ -750,9 +750,9 @@ public TGivenRuleTypeConjunction DoNotHaveFullName(string fullname)
750750
return Create<TGivenRuleTypeConjunction, TRuleType>(_ruleCreator);
751751
}
752752

753-
public TGivenRuleTypeConjunction DoNotHaveFullNameMatching(string pattern)
753+
public TGivenRuleTypeConjunction DoNotHaveFullNameMatching(string pattern, bool useRegularExpressions = false)
754754
{
755-
_ruleCreator.AddPredicate(ObjectPredicatesDefinition<TRuleType>.DoNotHaveFullNameMatching(pattern));
755+
_ruleCreator.AddPredicate(ObjectPredicatesDefinition<TRuleType>.DoNotHaveFullNameMatching(pattern, useRegularExpressions));
756756
return Create<TGivenRuleTypeConjunction, TRuleType>(_ruleCreator);
757757
}
758758

ArchUnitNET/Fluent/Syntax/Elements/IObjectConditions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ public interface IObjectConditions<out TReturnType, out TRuleType> where TRuleTy
7373
TReturnType HaveAttributeWithNamedArguments(Type attribute, IEnumerable<(string,object)> attributeArguments);
7474
TReturnType HaveAttributeWithNamedArguments(Type attribute, (string,object) firstAttributeArgument, params (string,object)[] moreAttributeArguments);
7575
TReturnType HaveName(string name);
76-
TReturnType HaveNameMatching(string pattern);
76+
TReturnType HaveNameMatching(string pattern, bool useRegularExpressions = false);
7777
TReturnType HaveFullName(string fullname);
78-
TReturnType HaveFullNameMatching(string pattern);
78+
TReturnType HaveFullNameMatching(string pattern, bool useRegularExpressions = false);
7979
TReturnType HaveNameStartingWith(string pattern);
8080
TReturnType HaveNameEndingWith(string pattern);
8181
TReturnType HaveNameContaining(string pattern);
@@ -129,9 +129,9 @@ public interface IObjectConditions<out TReturnType, out TRuleType> where TRuleTy
129129
TReturnType NotHaveAttributeWithNamedArguments(Type attribute, IEnumerable<(string,object)> attributeArguments);
130130
TReturnType NotHaveAttributeWithNamedArguments(Type attribute, (string,object) firstAttributeArgument, params (string,object)[] moreAttributeArguments);
131131
TReturnType NotHaveName(string name);
132-
TReturnType NotHaveNameMatching(string pattern);
132+
TReturnType NotHaveNameMatching(string pattern, bool useRegularExpressions = false);
133133
TReturnType NotHaveFullName(string fullname);
134-
TReturnType NotHaveFullNameMatching(string pattern);
134+
TReturnType NotHaveFullNameMatching(string pattern, bool useRegularExpressions = false);
135135
TReturnType NotHaveNameStartingWith(string pattern);
136136
TReturnType NotHaveNameEndingWith(string pattern);
137137
TReturnType NotHaveNameContaining(string pattern);

ArchUnitNET/Fluent/Syntax/Elements/IObjectPredicates.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ public interface IObjectPredicates<out TReturnType, TRuleType> where TRuleType :
7171
TReturnType HaveAttributeWithNamedArguments(Type attribute, IEnumerable<(string,object)> attributeArguments);
7272
TReturnType HaveAttributeWithNamedArguments(Type attribute, (string,object) firstAttributeArgument, params (string,object)[] moreAttributeArguments);
7373
TReturnType HaveName(string name);
74-
TReturnType HaveNameMatching(string pattern);
74+
TReturnType HaveNameMatching(string pattern, bool useRegularExpressions = false);
7575
TReturnType HaveFullName(string fullname);
76-
TReturnType HaveFullNameMatching(string pattern);
76+
TReturnType HaveFullNameMatching(string pattern, bool useRegularExpressions = false);
7777
TReturnType HaveNameStartingWith(string pattern);
7878
TReturnType HaveNameEndingWith(string pattern);
7979
TReturnType HaveNameContaining(string pattern);
@@ -130,9 +130,9 @@ public interface IObjectPredicates<out TReturnType, TRuleType> where TRuleType :
130130
TReturnType DoNotHaveAttributeWithNamedArguments(Type attribute, IEnumerable<(string,object)> attributeArguments);
131131
TReturnType DoNotHaveAttributeWithNamedArguments(Type attribute, (string,object) firstAttributeArgument, params (string,object)[] moreAttributeArguments);
132132
TReturnType DoNotHaveName(string name);
133-
TReturnType DoNotHaveNameMatching(string pattern);
133+
TReturnType DoNotHaveNameMatching(string pattern, bool useRegularExpressions = false);
134134
TReturnType DoNotHaveFullName(string fullname);
135-
TReturnType DoNotHaveFullNameMatching(string pattern);
135+
TReturnType DoNotHaveFullNameMatching(string pattern, bool useRegularExpressions = false);
136136
TReturnType DoNotHaveNameStartingWith(string pattern);
137137
TReturnType DoNotHaveNameEndingWith(string pattern);
138138
TReturnType DoNotHaveNameContaining(string pattern);

ArchUnitNET/Fluent/Syntax/Elements/ObjectConditionsDefinition.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,11 +1569,11 @@ public static ICondition<TRuleType> HaveName(string name)
15691569
obj => obj.Name.Equals(name), obj => "does have name " + obj.Name, "have name \"" + name + "\"");
15701570
}
15711571

1572-
public static SimpleCondition<TRuleType> HaveNameMatching(string pattern)
1572+
public static SimpleCondition<TRuleType> HaveNameMatching(string pattern, bool useRegularExpressions = false)
15731573
{
1574-
return new SimpleCondition<TRuleType>(obj => obj.NameMatches(pattern),
1574+
return new SimpleCondition<TRuleType>(obj => obj.NameMatches(pattern, useRegularExpressions),
15751575
obj => "does have name " + obj.Name,
1576-
"have full name matching \"" + pattern + "\"");
1576+
"have full name " + (useRegularExpressions ? "matching" : "containing") + " \"" + pattern + "\"");
15771577
}
15781578

15791579

@@ -1584,11 +1584,11 @@ public static ICondition<TRuleType> HaveFullName(string fullname)
15841584
"have full name \"" + fullname + "\"");
15851585
}
15861586

1587-
public static ICondition<TRuleType> HaveFullNameMatching(string pattern)
1587+
public static ICondition<TRuleType> HaveFullNameMatching(string pattern, bool useRegularExpressions = false)
15881588
{
1589-
return new SimpleCondition<TRuleType>(obj => obj.FullNameMatches(pattern),
1589+
return new SimpleCondition<TRuleType>(obj => obj.FullNameMatches(pattern, useRegularExpressions),
15901590
obj => "does have full name " + obj.FullName,
1591-
"have full name matching \"" + pattern + "\"");
1591+
"have full name " + (useRegularExpressions ? "matching" : "containing") + " \"" + pattern + "\"");
15921592
}
15931593

15941594
public static ICondition<TRuleType> HaveNameStartingWith(string pattern)
@@ -2881,10 +2881,10 @@ public static ICondition<TRuleType> NotHaveName(string name)
28812881
"not have name \"" + name + "\"");
28822882
}
28832883

2884-
public static ICondition<TRuleType> NotHaveNameMatching(string pattern)
2884+
public static ICondition<TRuleType> NotHaveNameMatching(string pattern, bool useRegularExpressions = false)
28852885
{
2886-
return new SimpleCondition<TRuleType>(obj => !obj.NameMatches(pattern), obj => "does have name " + obj.Name,
2887-
"not have name matching \"" + pattern + "\"");
2886+
return new SimpleCondition<TRuleType>(obj => !obj.NameMatches(pattern, useRegularExpressions), obj => "does have name " + obj.Name,
2887+
"not have name " + (useRegularExpressions ? "matching" : "containing") + " \"" + pattern + "\"");
28882888
}
28892889

28902890
public static ICondition<TRuleType> NotHaveFullName(string fullname)
@@ -2893,11 +2893,11 @@ public static ICondition<TRuleType> NotHaveFullName(string fullname)
28932893
obj => "does have full name " + obj.FullName, "not have full name \"" + fullname + "\"");
28942894
}
28952895

2896-
public static ICondition<TRuleType> NotHaveFullNameMatching(string pattern)
2896+
public static ICondition<TRuleType> NotHaveFullNameMatching(string pattern, bool useRegularExpressions = false)
28972897
{
2898-
return new SimpleCondition<TRuleType>(obj => !obj.FullNameMatches(pattern),
2898+
return new SimpleCondition<TRuleType>(obj => !obj.FullNameMatches(pattern, useRegularExpressions),
28992899
obj => "does have full name " + obj.FullName,
2900-
"not have full name matching \"" + pattern + "\"");
2900+
"not have full name " + (useRegularExpressions ? "matching" : "containing") + " \"" + pattern + "\"");
29012901
}
29022902

29032903
public static ICondition<TRuleType> NotHaveNameStartingWith(string pattern)

ArchUnitNET/Fluent/Syntax/Elements/ObjectPredicatesDefinition.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,20 +1113,21 @@ public static IPredicate<T> HaveName(string name)
11131113
return new SimplePredicate<T>(obj => obj.Name.Equals(name), "have name \"" + name + "\"");
11141114
}
11151115

1116-
public static IPredicate<T> HaveNameMatching(string pattern)
1116+
public static IPredicate<T> HaveNameMatching(string pattern, bool useRegularExpressions = false)
11171117
{
1118-
return new SimplePredicate<T>(obj => obj.NameMatches(pattern), "have name matching \"" + pattern + "\"");
1118+
return new SimplePredicate<T>(obj => obj.NameMatches(pattern, useRegularExpressions),
1119+
"have name " + (useRegularExpressions ? "matching" : "containing") + " \"" + pattern + "\"");
11191120
}
11201121

11211122
public static IPredicate<T> HaveFullName(string fullname)
11221123
{
11231124
return new SimplePredicate<T>(obj => obj.FullName.Equals(fullname), "have full name \"" + fullname + "\"");
11241125
}
11251126

1126-
public static IPredicate<T> HaveFullNameMatching(string pattern)
1127+
public static IPredicate<T> HaveFullNameMatching(string pattern, bool useRegularExpressions = false)
11271128
{
1128-
return new SimplePredicate<T>(obj => obj.FullNameMatches(pattern),
1129-
"have full name matching \"" + pattern + "\"");
1129+
return new SimplePredicate<T>(obj => obj.FullNameMatches(pattern, useRegularExpressions),
1130+
"have full name " + (useRegularExpressions ? "matching" : "containing") + " \"" + pattern + "\"");
11301131
}
11311132

11321133
public static IPredicate<T> HaveNameStartingWith(string pattern)
@@ -2062,10 +2063,10 @@ public static IPredicate<T> DoNotHaveName(string name)
20622063
return new SimplePredicate<T>(obj => !obj.Name.Equals(name), "do not have name \"" + name + "\"");
20632064
}
20642065

2065-
public static IPredicate<T> DoNotHaveNameMatching(string pattern)
2066+
public static IPredicate<T> DoNotHaveNameMatching(string pattern, bool useRegularExpressions = false)
20662067
{
2067-
return new SimplePredicate<T>(obj => !obj.NameMatches(pattern),
2068-
"do not have name matching \"" + pattern + "\"");
2068+
return new SimplePredicate<T>(obj => !obj.NameMatches(pattern, useRegularExpressions),
2069+
"do not have name " + (useRegularExpressions ? "matching" : "containing") + " \"" + pattern + "\"");
20692070
}
20702071

20712072
public static IPredicate<T> DoNotHaveFullName(string fullname)
@@ -2074,10 +2075,10 @@ public static IPredicate<T> DoNotHaveFullName(string fullname)
20742075
"do not have full name \"" + fullname + "\"");
20752076
}
20762077

2077-
public static IPredicate<T> DoNotHaveFullNameMatching(string pattern)
2078+
public static IPredicate<T> DoNotHaveFullNameMatching(string pattern, bool useRegularExpressions = false)
20782079
{
2079-
return new SimplePredicate<T>(obj => !obj.FullNameMatches(pattern),
2080-
"do not have full name matching \"" + pattern + "\"");
2080+
return new SimplePredicate<T>(obj => !obj.FullNameMatches(pattern, useRegularExpressions),
2081+
"do not have full name " + (useRegularExpressions ? "matching" : "containing") + " \"" + pattern + "\"");
20812082
}
20822083

20832084
public static IPredicate<T> DoNotHaveNameStartingWith(string pattern)

ArchUnitNET/Fluent/Syntax/Elements/ObjectsShould.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -444,9 +444,9 @@ public TRuleTypeShouldConjunction HaveName(string name)
444444
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
445445
}
446446

447-
public TRuleTypeShouldConjunction HaveNameMatching(string pattern)
447+
public TRuleTypeShouldConjunction HaveNameMatching(string pattern, bool useRegularExpressions = false)
448448
{
449-
_ruleCreator.AddCondition(ObjectConditionsDefinition<TRuleType>.HaveNameMatching(pattern));
449+
_ruleCreator.AddCondition(ObjectConditionsDefinition<TRuleType>.HaveNameMatching(pattern, useRegularExpressions));
450450
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
451451
}
452452

@@ -456,9 +456,9 @@ public TRuleTypeShouldConjunction HaveFullName(string fullname)
456456
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
457457
}
458458

459-
public TRuleTypeShouldConjunction HaveFullNameMatching(string pattern)
459+
public TRuleTypeShouldConjunction HaveFullNameMatching(string pattern, bool useRegularExpressions = false)
460460
{
461-
_ruleCreator.AddCondition(ObjectConditionsDefinition<TRuleType>.HaveFullNameMatching(pattern));
461+
_ruleCreator.AddCondition(ObjectConditionsDefinition<TRuleType>.HaveFullNameMatching(pattern, useRegularExpressions));
462462
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
463463
}
464464

@@ -870,9 +870,9 @@ public TRuleTypeShouldConjunction NotHaveName(string name)
870870
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
871871
}
872872

873-
public TRuleTypeShouldConjunction NotHaveNameMatching(string pattern)
873+
public TRuleTypeShouldConjunction NotHaveNameMatching(string pattern, bool useRegularExpressions = false)
874874
{
875-
_ruleCreator.AddCondition(ObjectConditionsDefinition<TRuleType>.NotHaveNameMatching(pattern));
875+
_ruleCreator.AddCondition(ObjectConditionsDefinition<TRuleType>.NotHaveNameMatching(pattern, useRegularExpressions));
876876
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
877877
}
878878

@@ -882,9 +882,9 @@ public TRuleTypeShouldConjunction NotHaveFullName(string fullname)
882882
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
883883
}
884884

885-
public TRuleTypeShouldConjunction NotHaveFullNameMatching(string pattern)
885+
public TRuleTypeShouldConjunction NotHaveFullNameMatching(string pattern, bool useRegularExpressions = false)
886886
{
887-
_ruleCreator.AddCondition(ObjectConditionsDefinition<TRuleType>.NotHaveFullNameMatching(pattern));
887+
_ruleCreator.AddCondition(ObjectConditionsDefinition<TRuleType>.NotHaveFullNameMatching(pattern, useRegularExpressions));
888888
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
889889
}
890890

ArchUnitNET/Fluent/Syntax/Elements/ShouldRelateToObjectsThat.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -428,10 +428,10 @@ public TRuleTypeShouldConjunction HaveName(string name)
428428
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
429429
}
430430

431-
public TRuleTypeShouldConjunction HaveNameMatching(string pattern)
431+
public TRuleTypeShouldConjunction HaveNameMatching(string pattern, bool useRegularExpressions = false)
432432
{
433433
_ruleCreator.ContinueComplexCondition(
434-
ObjectPredicatesDefinition<TReferenceType>.HaveNameMatching(pattern));
434+
ObjectPredicatesDefinition<TReferenceType>.HaveNameMatching(pattern, useRegularExpressions));
435435
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
436436
}
437437

@@ -441,10 +441,10 @@ public TRuleTypeShouldConjunction HaveFullName(string fullname)
441441
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
442442
}
443443

444-
public TRuleTypeShouldConjunction HaveFullNameMatching(string pattern)
444+
public TRuleTypeShouldConjunction HaveFullNameMatching(string pattern, bool useRegularExpressions = false)
445445
{
446446
_ruleCreator.ContinueComplexCondition(
447-
ObjectPredicatesDefinition<TReferenceType>.HaveFullNameMatching(pattern));
447+
ObjectPredicatesDefinition<TReferenceType>.HaveFullNameMatching(pattern, useRegularExpressions));
448448
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
449449
}
450450

@@ -811,10 +811,10 @@ public TRuleTypeShouldConjunction DoNotHaveName(string name)
811811
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
812812
}
813813

814-
public TRuleTypeShouldConjunction DoNotHaveNameMatching(string pattern)
814+
public TRuleTypeShouldConjunction DoNotHaveNameMatching(string pattern, bool useRegularExpressions = false)
815815
{
816816
_ruleCreator.ContinueComplexCondition(
817-
ObjectPredicatesDefinition<TReferenceType>.DoNotHaveNameMatching(pattern));
817+
ObjectPredicatesDefinition<TReferenceType>.DoNotHaveNameMatching(pattern, useRegularExpressions));
818818
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
819819
}
820820

@@ -825,10 +825,10 @@ public TRuleTypeShouldConjunction DoNotHaveFullName(string fullname)
825825
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
826826
}
827827

828-
public TRuleTypeShouldConjunction DoNotHaveFullNameMatching(string pattern)
828+
public TRuleTypeShouldConjunction DoNotHaveFullNameMatching(string pattern, bool useRegularExpressions = false)
829829
{
830830
_ruleCreator.ContinueComplexCondition(
831-
ObjectPredicatesDefinition<TReferenceType>.DoNotHaveFullNameMatching(pattern));
831+
ObjectPredicatesDefinition<TReferenceType>.DoNotHaveFullNameMatching(pattern, useRegularExpressions));
832832
return Create<TRuleTypeShouldConjunction, TRuleType>(_ruleCreator);
833833
}
834834

0 commit comments

Comments
 (0)