Skip to content

Commit 0d3b29b

Browse files
committed
Test coverage for complex, multi-line block method argument translation
1 parent c4c86e5 commit 0d3b29b

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

ReadableExpressions.UnitTests/WhenFormattingCode.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,40 @@ public void ShouldSplitLongChainedMethodsOntoMultipleLines()
722722
Assert.Equal(EXPECTED.TrimStart(), translated);
723723
}
724724

725+
[Fact]
726+
public void ShouldTranslateAComplexMethodArgument()
727+
{
728+
var intVariable = Expression.Variable(typeof(int), "intValue");
729+
var dictionaryVariable = Expression.Variable(typeof(Dictionary<string, int>), "dictionary_String_IntValues");
730+
var tryGetValueMethod = dictionaryVariable.Type.GetPublicInstanceMethod("TryGetValue", 2);
731+
var key = Expression.Constant("NumberThatIWantToGet");
732+
var tryGetValueCall = Expression.Call(dictionaryVariable, tryGetValueMethod, key, intVariable);
733+
734+
var defaultInt = Expression.Default(typeof(int));
735+
var valueOrDefault = Expression.Condition(tryGetValueCall, intVariable, defaultInt);
736+
var valueOrDefaultBlock = Expression.Block(new[] { intVariable }, valueOrDefault);
737+
738+
var helperCtor = typeof(HelperClass).GetPublicInstanceConstructors().First();
739+
var helper = Expression.New(helperCtor, defaultInt, defaultInt, defaultInt);
740+
var intsMethod = helper.Type.GetPublicInstanceMethod(nameof(HelperClass.GiveMeSomeInts));
741+
var methodCall = Expression.Call(helper, intsMethod, defaultInt, valueOrDefaultBlock, defaultInt);
742+
743+
var translated = methodCall.ToReadableString();
744+
745+
const string EXPECTED = @"
746+
new HelperClass(default(int), default(int), default(int)).GiveMeSomeInts(
747+
default(int),
748+
{
749+
int intValue;
750+
return dictionary_String_IntValues.TryGetValue(""NumberThatIWantToGet"", out intValue)
751+
? intValue
752+
: default(int);
753+
},
754+
default(int))";
755+
756+
Assert.Equal(EXPECTED.TrimStart(), translated);
757+
}
758+
725759
[Fact]
726760
public void ShouldTranslateNullToNull()
727761
{

0 commit comments

Comments
 (0)