/
StepDefinitionSkeletonProviderBase.cs
48 lines (39 loc) · 1.69 KB
/
StepDefinitionSkeletonProviderBase.cs
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
using System;
using System.Text.RegularExpressions;
using TechTalk.SpecFlow.Bindings;
using TechTalk.SpecFlow.Parser;
using TechTalk.SpecFlow.Parser.Gherkin;
using System.Linq;
namespace TechTalk.SpecFlow.BindingSkeletons
{
internal abstract class StepDefinitionSkeletonProviderBase : IStepDefinitionSkeletonProvider
{
public const string CODEINDENT = " ";
private GherkinDialect gherkinDialect;
protected StepDefinitionSkeletonProviderBase(GherkinDialect gherkinDialect)
{
this.gherkinDialect = gherkinDialect;
}
public abstract string GetStepDefinitionSkeleton(StepInstance stepInstance);
public abstract string GetBindingClassSkeleton(string stepDefinitions);
protected static string GetAttributeName(Type attributeType)
{
return attributeType.Name.Substring(0, attributeType.Name.Length - "Attribute".Length);
}
protected static string EscapeRegex(string text)
{
return Regex.Escape(text).Replace("\"", "\"\"").Replace("\\ ", " ");
}
protected string GetStepText(StepInstance stepInstance)
{
string keyword;
if (stepInstance.StepDefinitionKeyword == StepDefinitionKeyword.Given ||
stepInstance.StepDefinitionKeyword == StepDefinitionKeyword.When ||
stepInstance.StepDefinitionKeyword == StepDefinitionKeyword.Then)
keyword = stepInstance.Keyword;
else
keyword = gherkinDialect.GetStepKeywords((StepKeyword) stepInstance.StepDefinitionType).FirstOrDefault(k => !k.StartsWith("*")) ?? "";
return keyword + stepInstance.Text;
}
}
}