Skip to content

Commit ed98f4e

Browse files
committed
Separate out generic argument testing
Signed-off-by: Pete Forrest <petemforrest@gmail.com>
1 parent c44c3ca commit ed98f4e

9 files changed

Lines changed: 162 additions & 122 deletions

ArchUnitNETTests/AssemblyTestHelper/DependencyAssemblyTestHelpers.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ public class DependencyAssemblyTestHelper : AssemblyTestHelper
5757
public Class OtherClassWithoutDependencies;
5858
public Type OtherClassWithoutDependenciesSystemType = typeof(OtherClassWithoutDependencies);
5959

60+
public Class GenericArgumentClass;
61+
public Type GenericArgumentClassSystemType =
62+
typeof(TypeDependencyNamespace.GenericArgumentClass);
63+
6064
public Class ClassWithGenericMethodCallDependency;
6165
public Type ClassWithGenericMethodCallDependencySystemType = typeof(ClassWithGenericMethodCall);
6266

@@ -102,6 +106,9 @@ public DependencyAssemblyTestHelper()
102106
OtherClassWithoutDependencies = Architecture.GetClassOfType(
103107
typeof(OtherClassWithoutDependencies)
104108
);
109+
GenericArgumentClass = Architecture.GetClassOfType(
110+
typeof(TypeDependencyNamespace.GenericArgumentClass)
111+
);
105112
MethodWithSingleDependency = Architecture
106113
.MethodMembers.WhereNameIs("MethodWithSingleDependency()")
107114
.First();

ArchUnitNETTests/Fluent/Syntax/Elements/ObjectSyntaxElementsTests.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,6 @@ public async Task DependOnAnyTest()
363363
should.DependOnAny(Classes().That().Are(helper.BaseClass)).AssertNoViolations(helper);
364364
should.DependOnAny(new List<IType> { helper.BaseClass }).AssertNoViolations(helper);
365365
should.DependOnAny(new List<System.Type> { helper.BaseClassSystemType }).AssertNoViolations(helper);
366-
Types().That().Are(helper.ClassWithGenericMethodCallDependency).Should().DependOnAny(helper.ClassWithoutDependencies).AssertNoViolations(helper);
367366

368367
helper.AddSnapshotSubHeader("Predicates");
369368
should.Be(Types().That().DependOnAny(helper.BaseClass)).AssertNoViolations(helper);
@@ -483,6 +482,18 @@ public async Task DependOnAnyTest()
483482
Types().That().Are(helper.ChildClass1, helper.ChildClass2).Should().BeTypesThat().DependOnAny(helper.BaseClassWithMultipleDependenciesSystemType).AssertNoViolations(helper);
484483
Types().That().Are(helper.ChildClass, helper.BaseClass).Should().BeTypesThat().DependOnAny(helper.ClassWithoutDependencies).AssertOnlyViolations(helper);
485484

485+
helper.AddSnapshotHeader("Type with generic argument");
486+
should = Types().That().Are(helper.ClassWithGenericMethodCallDependency).Should();
487+
488+
helper.AddSnapshotSubHeader("Conditions");
489+
should.DependOnAny(helper.GenericArgumentClass).AssertNoViolations(helper);
490+
491+
helper.AddSnapshotSubHeader("Predicates");
492+
should.Be(Types().That().DependOnAny(helper.GenericArgumentClass)).AssertNoViolations(helper);
493+
494+
helper.AddSnapshotSubHeader("Predicates as conditions");
495+
should.BeTypesThat().DependOnAny(helper.GenericArgumentClass).AssertNoViolations(helper);
496+
486497
await helper.AssertSnapshotMatches();
487498
}
488499

ArchUnitNETTests/Fluent/Syntax/Elements/Snapshots/ObjectSyntaxElementsTests.DependOnAnyTest.verified.txt

Lines changed: 48 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,6 @@ Description: TypeDependencyNamespace.ChildClass passed
3232
Message:
3333
All Evaluations passed
3434

35-
Query: Types that are "TypeDependencyNamespace.ClassWithGenericMethodCall" should depend on "TypeDependencyNamespace.ClassWithoutDependencies"
36-
Result: True
37-
Description: TypeDependencyNamespace.ClassWithGenericMethodCall passed
38-
Message:
39-
All Evaluations passed
40-
4135
----- Predicates -----
4236

4337
Query: Types that are "TypeDependencyNamespace.ChildClass" should be Types that depend on "TypeDependencyNamespace.BaseClass"
@@ -202,46 +196,46 @@ Message:
202196

203197
Query: Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"
204198
Result: False
205-
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
199+
Description: TypeDependencyNamespace.ClassWithMultipleDependencies does exist
206200
Message:
207201
"Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"" failed:
208-
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
202+
TypeDependencyNamespace.ClassWithMultipleDependencies does exist
209203

210204

211205

212206
Query: Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"
213207
Result: False
214-
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
208+
Description: TypeDependencyNamespace.ClassWithMultipleDependencies does exist
215209
Message:
216210
"Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"" failed:
217-
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
211+
TypeDependencyNamespace.ClassWithMultipleDependencies does exist
218212

219213

220214

221215
Query: Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any Classes that are "TypeDependencyNamespace.ClassWithoutDependencies"
222216
Result: False
223-
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
217+
Description: TypeDependencyNamespace.ClassWithMultipleDependencies does exist
224218
Message:
225219
"Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any Classes that are "TypeDependencyNamespace.ClassWithoutDependencies"" failed:
226-
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
220+
TypeDependencyNamespace.ClassWithMultipleDependencies does exist
227221

228222

229223

230224
Query: Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"
231225
Result: False
232-
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
226+
Description: TypeDependencyNamespace.ClassWithMultipleDependencies does exist
233227
Message:
234228
"Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"" failed:
235-
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
229+
TypeDependencyNamespace.ClassWithMultipleDependencies does exist
236230

237231

238232

239233
Query: Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"
240234
Result: False
241-
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
235+
Description: TypeDependencyNamespace.ClassWithMultipleDependencies does exist
242236
Message:
243237
"Types that have full name "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"" failed:
244-
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
238+
TypeDependencyNamespace.ClassWithMultipleDependencies does exist
245239

246240

247241

@@ -460,37 +454,37 @@ Message:
460454

461455
Query: Types that are "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any "TypeDependencyNamespace.ClassWithoutDependencies" or "TypeDependencyNamespace.BaseClass"
462456
Result: False
463-
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass" or "TypeDependencyNamespace.ClassWithGenericMethodCall"
457+
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass"
464458
Message:
465459
"Types that are "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any "TypeDependencyNamespace.ClassWithoutDependencies" or "TypeDependencyNamespace.BaseClass"" failed:
466-
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass" or "TypeDependencyNamespace.ClassWithGenericMethodCall"
460+
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass"
467461

468462

469463

470464
Query: Types that are "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any "TypeDependencyNamespace.ClassWithoutDependencies" or "TypeDependencyNamespace.BaseClass"
471465
Result: False
472-
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass" or "TypeDependencyNamespace.ClassWithGenericMethodCall"
466+
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass"
473467
Message:
474468
"Types that are "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any "TypeDependencyNamespace.ClassWithoutDependencies" or "TypeDependencyNamespace.BaseClass"" failed:
475-
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass" or "TypeDependencyNamespace.ClassWithGenericMethodCall"
469+
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass"
476470

477471

478472

479473
Query: Types that are "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any "TypeDependencyNamespace.ClassWithoutDependencies" or "TypeDependencyNamespace.BaseClass"
480474
Result: False
481-
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass" or "TypeDependencyNamespace.ClassWithGenericMethodCall"
475+
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass"
482476
Message:
483477
"Types that are "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any "TypeDependencyNamespace.ClassWithoutDependencies" or "TypeDependencyNamespace.BaseClass"" failed:
484-
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass" or "TypeDependencyNamespace.ClassWithGenericMethodCall"
478+
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass"
485479

486480

487481

488482
Query: Types that are "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any "TypeDependencyNamespace.ClassWithoutDependencies" or "TypeDependencyNamespace.BaseClass"
489483
Result: False
490-
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass" or "TypeDependencyNamespace.ClassWithGenericMethodCall"
484+
Description: TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass"
491485
Message:
492486
"Types that are "TypeDependencyNamespace.ClassWithMultipleDependencies" should be types that depend on any "TypeDependencyNamespace.ClassWithoutDependencies" or "TypeDependencyNamespace.BaseClass"" failed:
493-
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass" or "TypeDependencyNamespace.ClassWithGenericMethodCall"
487+
TypeDependencyNamespace.ClassWithMultipleDependencies is not "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.OtherChildClass"
494488

495489

496490

@@ -587,13 +581,39 @@ All Evaluations passed
587581

588582
Query: Types that are "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.BaseClass" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"
589583
Result: False
590-
Description: TypeDependencyNamespace.BaseClass is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
584+
Description: TypeDependencyNamespace.BaseClass does exist
591585
Result: False
592-
Description: TypeDependencyNamespace.ChildClass is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
586+
Description: TypeDependencyNamespace.ChildClass does exist
593587
Message:
594588
"Types that are "TypeDependencyNamespace.ChildClass" or "TypeDependencyNamespace.BaseClass" should be types that depend on "TypeDependencyNamespace.ClassWithoutDependencies"" failed:
595-
TypeDependencyNamespace.BaseClass is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
596-
TypeDependencyNamespace.ChildClass is not "TypeDependencyNamespace.ClassWithGenericMethodCall"
589+
TypeDependencyNamespace.BaseClass does exist
590+
TypeDependencyNamespace.ChildClass does exist
597591

598592

599593

594+
===== Type with generic argument =====
595+
596+
----- Conditions -----
597+
598+
Query: Types that are "TypeDependencyNamespace.ClassWithGenericMethodCall" should depend on "TypeDependencyNamespace.GenericArgumentClass"
599+
Result: True
600+
Description: TypeDependencyNamespace.ClassWithGenericMethodCall passed
601+
Message:
602+
All Evaluations passed
603+
604+
----- Predicates -----
605+
606+
Query: Types that are "TypeDependencyNamespace.ClassWithGenericMethodCall" should be Types that depend on "TypeDependencyNamespace.GenericArgumentClass"
607+
Result: True
608+
Description: TypeDependencyNamespace.ClassWithGenericMethodCall passed
609+
Message:
610+
All Evaluations passed
611+
612+
----- Predicates as conditions -----
613+
614+
Query: Types that are "TypeDependencyNamespace.ClassWithGenericMethodCall" should be types that depend on "TypeDependencyNamespace.GenericArgumentClass"
615+
Result: True
616+
Description: TypeDependencyNamespace.ClassWithGenericMethodCall passed
617+
Message:
618+
All Evaluations passed
619+

0 commit comments

Comments
 (0)