Skip to content

Commit

Permalink
Fix matching step in Scenario Outline when the last part is a paramet…
Browse files Browse the repository at this point in the history
…er and the value of the parameter is empty Fix  #194
  • Loading branch information
Socolin committed Nov 27, 2023
1 parent 86f35ea commit 2f7fa46
Showing 1 changed file with 34 additions and 20 deletions.
54 changes: 34 additions & 20 deletions src/dotnet/ReSharperPlugin.SpecflowRiderPlugin/Psi/GherkinStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,41 +96,46 @@ public string GetStepTextBeforeCaret(DocumentOffset caretLocation)
public string GetStepText(bool withStepKeyWord = false)
{
var sb = new StringBuilder();
for (var te = (TreeElement)FirstChild; te != null; te = te.nextSibling)

var element = (TreeElement)FirstChild;
if (!withStepKeyWord)
{
switch (te)
// Skip keyword and white space at tbe begining
for (; element != null && (element.NodeType == GherkinTokenTypes.STEP_KEYWORD || element.NodeType == GherkinTokenTypes.WHITE_SPACE); element = element.nextSibling)
element = element.nextSibling;
}

for (; element != null; element = element.nextSibling)
{
switch (element)
{
case GherkinStepParameter p:
sb.Append(p.GetText());
break;
case GherkinToken token:
{
if (withStepKeyWord)
{
if (token.NodeType == GherkinTokenTypes.WHITE_SPACE && element.nextSibling != null)
sb.Append(token.GetText());
}
else
{
if (token.NodeType != GherkinTokenTypes.STEP_KEYWORD)
{
sb.Append(token.GetText());
}
}

sb.Append(token.GetText());
break;
}
}
}
return sb.ToString().Trim();
return sb.ToString();
}

public string GetStepTextForExample(IDictionary<string, string> exampleData)
{
var sb = new StringBuilder();
var previousTokenWasAParameter = false;
for (var te = (TreeElement)FirstChild; te != null; te = te.nextSibling)
// Skip keyword and white space at tbe begining
var element = (TreeElement)FirstChild;
for (; element != null && (element.NodeType == GherkinTokenTypes.STEP_KEYWORD || element.NodeType == GherkinTokenTypes.WHITE_SPACE); element = element.nextSibling)
element = element.nextSibling;
for (; element != null; element = element.nextSibling)
{
switch (te)
switch (element)
{
case GherkinStepParameter p:
if (exampleData.TryGetValue(p.GetParameterName(), out var value))
Expand All @@ -145,17 +150,26 @@ public string GetStepTextForExample(IDictionary<string, string> exampleData)
}

break;
case GherkinToken token when token.NodeType != GherkinTokenTypes.STEP_KEYWORD:
sb.Append(token.GetText());

case GherkinToken token:
// Remove `>`
if (previousTokenWasAParameter)
sb.Length--;
if (token.NodeType != GherkinTokenTypes.WHITE_SPACE)
{
sb.Append(token.GetText());
if (previousTokenWasAParameter)
sb.Length--;
}
else if (element.nextSibling != null)
{
sb.Append(token.GetText());
if (previousTokenWasAParameter)
sb.Length--;
}
previousTokenWasAParameter = false;
break;
}
}
return sb.ToString().Trim();
return sb.ToString();
}

public SpecflowStepDeclarationReference GetStepReference()
Expand Down

0 comments on commit 2f7fa46

Please sign in to comment.