Skip to content

Commit 8109710

Browse files
committed
refactored DefaultMethodNameStepScanner & MethodNameMatcher
1 parent 43ff2a6 commit 8109710

File tree

3 files changed

+39
-24
lines changed

3 files changed

+39
-24
lines changed

TestStack.BDDfy/Scanners/StepScanners/MethodName/DefaultMethodNameStepScanner.cs

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,22 @@ namespace TestStack.BDDfy
55
public class DefaultMethodNameStepScanner : MethodNameStepScanner
66
{
77
public DefaultMethodNameStepScanner()
8-
: base(CleanupTheStepText,
9-
new[]
10-
{
11-
new MethodNameMatcher(s => s.EndsWith("Context", StringComparison.OrdinalIgnoreCase), false, ExecutionOrder.Initialize, false),
12-
new MethodNameMatcher(s => s.Equals("Setup", StringComparison.OrdinalIgnoreCase), false, ExecutionOrder.Initialize, false),
13-
new MethodNameMatcher(s => s.StartsWith("Given", StringComparison.OrdinalIgnoreCase), false, ExecutionOrder.SetupState, true),
14-
new MethodNameMatcher(s => s.StartsWith("AndGiven", StringComparison.OrdinalIgnoreCase), false, ExecutionOrder.ConsecutiveSetupState, true),
15-
new MethodNameMatcher(s => s.StartsWith("And_Given_", StringComparison.OrdinalIgnoreCase), false, ExecutionOrder.ConsecutiveSetupState, true),
16-
new MethodNameMatcher(s => s.StartsWith("When", StringComparison.OrdinalIgnoreCase), false, ExecutionOrder.Transition, true),
17-
new MethodNameMatcher(s => s.StartsWith("AndWhen", StringComparison.OrdinalIgnoreCase), false, ExecutionOrder.ConsecutiveTransition, true),
18-
new MethodNameMatcher(s => s.StartsWith("And_When_", StringComparison.OrdinalIgnoreCase), false, ExecutionOrder.ConsecutiveTransition, true),
19-
new MethodNameMatcher(s => s.StartsWith("Then", StringComparison.OrdinalIgnoreCase), true, ExecutionOrder.Assertion, true),
20-
new MethodNameMatcher(s => s.StartsWith("And", StringComparison.OrdinalIgnoreCase), true, ExecutionOrder.ConsecutiveAssertion, true),
21-
new MethodNameMatcher(s => s.StartsWith("AndThen", StringComparison.OrdinalIgnoreCase), true, ExecutionOrder.ConsecutiveAssertion, true),
22-
new MethodNameMatcher(s => s.StartsWith("And_Then_", StringComparison.OrdinalIgnoreCase), true, ExecutionOrder.ConsecutiveAssertion, true),
23-
new MethodNameMatcher(s => s.StartsWith("But", StringComparison.OrdinalIgnoreCase), true, ExecutionOrder.ConsecutiveAssertion, true),
24-
new MethodNameMatcher(s => s.StartsWith("TearDown", StringComparison.OrdinalIgnoreCase), false, ExecutionOrder.TearDown, false)
25-
})
8+
: base(CleanupTheStepText)
269
{
10+
AddMatcher(new MethodNameMatcher(s => s.EndsWith("Context", StringComparison.OrdinalIgnoreCase), ExecutionOrder.Initialize) { ShouldReport = false });
11+
AddMatcher(new MethodNameMatcher(s => s.Equals("Setup", StringComparison.OrdinalIgnoreCase), ExecutionOrder.Initialize) { ShouldReport = false });
12+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("Given", StringComparison.OrdinalIgnoreCase), ExecutionOrder.SetupState));
13+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("AndGiven", StringComparison.OrdinalIgnoreCase), ExecutionOrder.ConsecutiveSetupState));
14+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("And_Given_", StringComparison.OrdinalIgnoreCase), ExecutionOrder.ConsecutiveSetupState));
15+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("When", StringComparison.OrdinalIgnoreCase), ExecutionOrder.Transition));
16+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("AndWhen", StringComparison.OrdinalIgnoreCase), ExecutionOrder.ConsecutiveTransition));
17+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("And_When_", StringComparison.OrdinalIgnoreCase), ExecutionOrder.ConsecutiveTransition));
18+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("Then", StringComparison.OrdinalIgnoreCase), ExecutionOrder.Assertion) { Asserts = true });
19+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("And", StringComparison.OrdinalIgnoreCase), ExecutionOrder.ConsecutiveAssertion) { Asserts = true });
20+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("AndThen", StringComparison.OrdinalIgnoreCase), ExecutionOrder.ConsecutiveAssertion) { Asserts = true });
21+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("And_Then_", StringComparison.OrdinalIgnoreCase), ExecutionOrder.ConsecutiveAssertion) { Asserts = true });
22+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("But", StringComparison.OrdinalIgnoreCase), ExecutionOrder.ConsecutiveAssertion) { Asserts = true });
23+
AddMatcher(new MethodNameMatcher(s => s.StartsWith("TearDown", StringComparison.OrdinalIgnoreCase), ExecutionOrder.TearDown) { ShouldReport = false });
2724
}
2825

2926
static string CleanupTheStepText(string stepText)

TestStack.BDDfy/Scanners/StepScanners/MethodName/MethodNameMatcher.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,23 @@ namespace TestStack.BDDfy
55
public class MethodNameMatcher
66
{
77
public MethodNameMatcher(Predicate<string> isMethodOfInterest, bool asserts, ExecutionOrder executionOrder, bool shouldReport)
8+
: this(isMethodOfInterest, executionOrder)
89
{
9-
IsMethodOfInterest = isMethodOfInterest;
1010
Asserts = asserts;
11-
ExecutionOrder = executionOrder;
1211
ShouldReport = shouldReport;
1312
}
1413

14+
public MethodNameMatcher(Predicate<string> isMethodOfInterest, ExecutionOrder executionOrder)
15+
{
16+
IsMethodOfInterest = isMethodOfInterest;
17+
ExecutionOrder = executionOrder;
18+
Asserts = false;
19+
ShouldReport = true;
20+
}
21+
1522
public Predicate<string> IsMethodOfInterest { get; private set; }
16-
public bool Asserts { get; private set; }
17-
public bool ShouldReport { get; private set; }
23+
public bool Asserts { get; set; }
24+
public bool ShouldReport { get; set; }
1825
public ExecutionOrder ExecutionOrder { get; private set; }
1926
}
2027
}

TestStack.BDDfy/Scanners/StepScanners/MethodName/MethodNameStepScanner.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,23 @@ namespace TestStack.BDDfy
3838
public class MethodNameStepScanner : IStepScanner
3939
{
4040
private readonly Func<string, string> _stepTextTransformer;
41-
private readonly MethodNameMatcher[] _matchers;
41+
private readonly List<MethodNameMatcher> _matchers;
4242

4343
public MethodNameStepScanner(Func<string, string> stepTextTransformer, params MethodNameMatcher[] matchers)
4444
{
4545
_stepTextTransformer = stepTextTransformer;
46-
_matchers = matchers;
46+
_matchers = matchers.ToList();
47+
}
48+
49+
public MethodNameStepScanner(Func<string, string> stepTextTransformer)
50+
{
51+
_stepTextTransformer = stepTextTransformer;
52+
_matchers = new List<MethodNameMatcher>();
53+
}
54+
55+
protected void AddMatcher(MethodNameMatcher matcher)
56+
{
57+
_matchers.Add(matcher);
4758
}
4859

4960
public IEnumerable<Step> Scan(ITestContext testContext, MethodInfo method)

0 commit comments

Comments
 (0)