Skip to content

Commit 77db62b

Browse files
committed
Extending test coverage for multi-line label values
1 parent 0ff97b1 commit 77db62b

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

ReadableExpressions.UnitTests/WhenTranslatingGotos.cs

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ public void ShouldNotIncludeLabelNamesWithoutAGoto()
158158
Assert.AreEqual(EXPECTED.TrimStart(), translated);
159159
}
160160

161-
162161
[TestMethod]
163162
public void ShouldTranslateAReturnStatementWithABlock()
164163
{
@@ -195,5 +194,42 @@ public void ShouldTranslateAReturnStatementWithABlock()
195194

196195
Assert.AreEqual(EXPECTED.TrimStart(), translated);
197196
}
197+
198+
[TestMethod]
199+
public void ShouldTranslateALabelWithABlockDefaultValue()
200+
{
201+
var returnLabelTarget = Expression.Label(typeof(int), "Return");
202+
203+
var intVariable = Expression.Variable(typeof(int), "i");
204+
var variableInit = Expression.Assign(intVariable, Expression.Constant(0));
205+
var variablePlusOne = Expression.Add(intVariable, Expression.Constant(1));
206+
var variableAdditionOne = Expression.Assign(intVariable, variablePlusOne);
207+
var variablePlusTwo = Expression.Add(intVariable, Expression.Constant(2));
208+
var variableAdditionTwo = Expression.Assign(intVariable, variablePlusTwo);
209+
210+
var variableBlock = Expression.Block(variableAdditionTwo, intVariable);
211+
212+
var returnVariableBlock = Expression.Label(returnLabelTarget, variableBlock);
213+
214+
var returnBlock = Expression.Block(
215+
new[] { intVariable },
216+
variableInit,
217+
variableAdditionOne,
218+
returnVariableBlock);
219+
220+
const string EXPECTED = @"
221+
var i = 0;
222+
i = i + 1;
223+
224+
return
225+
{
226+
i = i + 2;
227+
return i;
228+
};";
229+
230+
var translated = returnBlock.ToReadableString();
231+
232+
Assert.AreEqual(EXPECTED.TrimStart(), translated);
233+
}
198234
}
199235
}

ReadableExpressions/Translators/LabelExpressionTranslator.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public override string Translate(Expression expression, TranslationContext conte
2020
{
2121
return labelNamePart;
2222
}
23+
2324
var labelValuePart = $"{Environment.NewLine}return {context.TranslateAsCodeBlock(label.DefaultValue)};";
2425

2526
return labelNamePart + labelValuePart;

0 commit comments

Comments
 (0)