Skip to content

Commit 52d0831

Browse files
committed
MethodFinder : Add unit tests for String.TrimEnd()
1 parent 4d6c03b commit 52d0831

File tree

2 files changed

+36
-8
lines changed

2 files changed

+36
-8
lines changed

src/System.Linq.Dynamic.Core/Parser/SupportedMethods/MethodFinder.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ bool IsApplicable(MethodData method, Expression[] args)
168168

169169
for (int j = method.Parameters.Length - 1; j < args.Length; j++)
170170
{
171-
Expression promoted = this._parsingConfig.ExpressionPromoter.Promote(args[j], paramElementType, false, method.MethodBase.DeclaringType != typeof(IEnumerableSignatures));
171+
Expression promoted = _parsingConfig.ExpressionPromoter.Promote(args[j], paramElementType, false, method.MethodBase.DeclaringType != typeof(IEnumerableSignatures));
172172
if (promoted == null)
173173
{
174174
return false;
@@ -190,7 +190,7 @@ bool IsApplicable(MethodData method, Expression[] args)
190190
return false;
191191
}
192192

193-
Expression promoted = this._parsingConfig.ExpressionPromoter.Promote(args[i], pi.ParameterType, false, method.MethodBase.DeclaringType != typeof(IEnumerableSignatures));
193+
Expression promoted = _parsingConfig.ExpressionPromoter.Promote(args[i], pi.ParameterType, false, method.MethodBase.DeclaringType != typeof(IEnumerableSignatures));
194194
if (promoted == null)
195195
{
196196
return false;
@@ -205,13 +205,13 @@ bool IsApplicable(MethodData method, Expression[] args)
205205

206206
bool IsBetterThan(Expression[] args, MethodData first, MethodData second)
207207
{
208-
bool better = false;
209-
//If args count is 0, than parametereless method is better than method method with parameters
210-
if (args.Length == 0)
208+
// If args count is 0 -> parametereless method is better than method method with parameters
209+
if (args.Length == 0)
211210
{
212-
better = (first.Parameters.Length == 0) && (second.Parameters.Length != 0);
213-
}
214-
211+
return first.Parameters.Length == 0 && second.Parameters.Length != 0;
212+
}
213+
214+
bool better = false;
215215
for (int i = 0; i < args.Length; i++)
216216
{
217217
CompareConversionType result = CompareConversions(args[i].Type, first.Parameters[i].ParameterType, second.Parameters[i].ParameterType);

test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs

+28
Original file line numberDiff line numberDiff line change
@@ -1230,5 +1230,33 @@ public void DynamicExpressionParser_ParseLambda_ActionDelegate_VoidMethodCallExp
12301230
// Assert
12311231
dataSource.Name.Should().NotBeNullOrEmpty();
12321232
}
1233+
1234+
[Fact]
1235+
public void DynamicExpressionParser_ParseLambda_String_TrimEnd_0_Parameters()
1236+
{
1237+
// Act
1238+
var expression = DynamicExpressionParser.ParseLambda<string, bool>(new ParsingConfig(), false, "TrimEnd().EndsWith(@0)", "test");
1239+
1240+
var @delegate = expression.Compile();
1241+
1242+
var result = (bool) @delegate.DynamicInvoke("This is a test ");
1243+
1244+
// Assert
1245+
result.Should().BeTrue();
1246+
}
1247+
1248+
[Fact]
1249+
public void DynamicExpressionParser_ParseLambda_String_TrimEnd_1_Parameter()
1250+
{
1251+
// Act
1252+
var expression = DynamicExpressionParser.ParseLambda<string, bool>(new ParsingConfig(), false, "TrimEnd('.').EndsWith(@0)", "test");
1253+
1254+
var @delegate = expression.Compile();
1255+
1256+
var result = (bool)@delegate.DynamicInvoke("This is a test...");
1257+
1258+
// Assert
1259+
result.Should().BeTrue();
1260+
}
12331261
}
12341262
}

0 commit comments

Comments
 (0)