-
Notifications
You must be signed in to change notification settings - Fork 75
Expand file tree
/
Copy pathMultipleConditionRulesTests.cs
More file actions
76 lines (63 loc) · 2.31 KB
/
MultipleConditionRulesTests.cs
File metadata and controls
76 lines (63 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System.Linq;
using ArchUnitNET.Domain;
using ArchUnitNET.Domain.Extensions;
using ArchUnitNET.Loader;
using Xunit;
using static ArchUnitNET.Fluent.ArchRuleDefinition;
using Attribute = System.Attribute;
namespace ArchUnitNETTests.Fluent
{
public class MultipleConditionRulesTests
{
private static readonly Architecture Architecture = new ArchLoader()
.LoadAssemblies(System.Reflection.Assembly.Load("ArchUnitNETTests"))
.Build();
private readonly Class _failingClass;
private readonly Class _passingClass1;
private readonly Class _passingClass2;
public MultipleConditionRulesTests()
{
_passingClass1 = Architecture.GetClassOfType(typeof(PassingClass1));
_passingClass2 = Architecture.GetClassOfType(typeof(PassingClass2));
_failingClass = Architecture.GetClassOfType(typeof(FailingClass));
}
[Fact]
public void AssignCorrectTypeToEvaluationResults()
{
var evaluationResults = Classes()
.That()
.Are(typeof(PassingClass1), typeof(FailingClass), typeof(PassingClass2))
.And()
.AreNotPrivate()
.Should()
.HaveAnyAttributes(typeof(Test1))
.AndShould()
.HaveAnyAttributes(typeof(Test2))
.Evaluate(Architecture)
.ToList();
var passedObjects = evaluationResults
.Where(result => result.Passed)
.Select(result => result.EvaluatedObject)
.ToList();
var failedObjects = evaluationResults
.Where(result => !result.Passed)
.Select(result => result.EvaluatedObject)
.ToList();
Assert.Equal(2, passedObjects.Count);
Assert.Single(failedObjects);
Assert.Contains(_passingClass1, passedObjects);
Assert.Contains(_passingClass2, passedObjects);
Assert.Contains(_failingClass, failedObjects);
}
}
[Test1]
[Test2]
internal class PassingClass1 { }
[Test1]
internal class FailingClass { }
[Test1]
[Test2]
internal class PassingClass2 { }
internal class Test1 : Attribute { }
internal class Test2 : Attribute { }
}