@@ -2143,6 +2143,105 @@ void Evaluator_PreEvaluateVariable(object sender, VariablePreEvaluationEventArg
2143
2143
2144
2144
#endregion
2145
2145
2146
+ #region Method with params parameter
2147
+
2148
+ ExpressionEvaluator evaluatorForParamsTests ( )
2149
+ {
2150
+ ExpressionEvaluator ee = new ExpressionEvaluator ( new Dictionary < string , object > ( )
2151
+ {
2152
+ { "paramsObj" , new MethodArgKeywordClass ( ) }
2153
+ } ) ;
2154
+
2155
+ ee . StaticTypesForExtensionsMethods . Add ( typeof ( MethodArgKeywordClassExtension ) ) ;
2156
+ return ee ;
2157
+ }
2158
+
2159
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2160
+ , "paramsObj.SumOf(1, 2)"
2161
+ , null )
2162
+ . Returns ( 3 )
2163
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2164
+
2165
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2166
+ , "paramsObj.SumOf(1, 2, 3)"
2167
+ , null )
2168
+ . Returns ( 6 )
2169
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2170
+
2171
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2172
+ , "paramsObj.SumOf(1,2,3,4)"
2173
+ , null )
2174
+ . Returns ( 10 )
2175
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2176
+
2177
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2178
+ , "paramsObj.SumOf2()"
2179
+ , null )
2180
+ . Returns ( 0 )
2181
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2182
+
2183
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2184
+ , "paramsObj.SumOf2(1)"
2185
+ , null )
2186
+ . Returns ( 1 )
2187
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2188
+
2189
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2190
+ , "paramsObj.SumOf2(1,2,3,4)"
2191
+ , null )
2192
+ . Returns ( 10 )
2193
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2194
+
2195
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2196
+ , "string.Join(\" ,\" , 2, 3.5, \" Hello\" , true)"
2197
+ , null )
2198
+ . Returns ( "2,3.5,Hello,True" )
2199
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2200
+
2201
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2202
+ , "string.Join(\" ,\" , 2, 3.5, null, \" Hello\" , true)"
2203
+ , null )
2204
+ . Returns ( "2,3.5,,Hello,True" )
2205
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2206
+
2207
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2208
+ , "\" ,\" .UseAsSepForJoin(2, 3.5, \" Hello\" , true)"
2209
+ , null )
2210
+ . Returns ( "2,3.5,Hello,True" )
2211
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2212
+
2213
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2214
+ , "\" ,\" .UseAsSepForJoin(2, 3.5, null, \" Hello\" , true)"
2215
+ , null )
2216
+ . Returns ( "2,3.5,,Hello,True" )
2217
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2218
+
2219
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2220
+ , "paramsObj.Join(out x, \" ,\" , 2, 3.5, \" Hello\" , true) ?? x"
2221
+ , null )
2222
+ . Returns ( "2,3.5,Hello,True" )
2223
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2224
+
2225
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2226
+ , "paramsObj.Join(out x, \" ,\" , 2, 3.5, null, \" Hello\" , true) ?? x"
2227
+ , null )
2228
+ . Returns ( "2,3.5,,Hello,True" )
2229
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2230
+
2231
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2232
+ , "\" ,\" .UseAsSepForJoin(ref string x, 2, 3.5, \" Hello\" , true) ?? x"
2233
+ , null )
2234
+ . Returns ( "2,3.5,Hello,True" )
2235
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2236
+
2237
+ yield return new TestCaseData ( evaluatorForParamsTests ( )
2238
+ , "\" ,\" .UseAsSepForJoin(ref x, 2, 3.5, null, \" Hello\" , true) ?? x"
2239
+ , null )
2240
+ . Returns ( "2,3.5,,Hello,True" )
2241
+ . SetCategory ( "ParamsKeywordMethod" ) ;
2242
+
2243
+ #endregion
2244
+
2146
2245
#region Bug resolution
2147
2246
2148
2247
yield return new TestCaseData ( new ExpressionEvaluator ( )
@@ -2380,11 +2479,11 @@ public void MethodWithInParameter()
2380
2479
{
2381
2480
ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
2382
2481
2383
- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2482
+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
2384
2483
2385
2484
evaluator . Variables [ "x" ] = 3 ;
2386
2485
2387
- evaluator . Evaluate ( "refObj .AddOneOnIn(in x)" )
2486
+ evaluator . Evaluate ( "inObj .AddOneOnIn(in x)" )
2388
2487
. ShouldBe ( 4 ) ;
2389
2488
2390
2489
evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2399,9 +2498,9 @@ public void MethodWithInParameterWithoutExistingVariable()
2399
2498
{
2400
2499
ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
2401
2500
2402
- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2501
+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
2403
2502
2404
- evaluator . Evaluate ( "refObj .AddOneOnIn(in x)" )
2503
+ evaluator . Evaluate ( "inObj .AddOneOnIn(in x)" )
2405
2504
. ShouldBe ( 1 ) ;
2406
2505
2407
2506
evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2415,9 +2514,9 @@ public void MethodWithInParameterInlineVarDeclaration()
2415
2514
{
2416
2515
ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
2417
2516
2418
- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2517
+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
2419
2518
2420
- evaluator . Evaluate ( "refObj .AddOneOnIn(in int x)" )
2519
+ evaluator . Evaluate ( "inObj .AddOneOnIn(in int x)" )
2421
2520
. ShouldBe ( 1 ) ;
2422
2521
2423
2522
evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2432,9 +2531,9 @@ public void MethodWithInParameterWithoutExistingVariableAndInit()
2432
2531
{
2433
2532
ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
2434
2533
2435
- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2534
+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
2436
2535
2437
- evaluator . Evaluate ( "refObj .AddOneOnIn(in x = 4)" )
2536
+ evaluator . Evaluate ( "inObj .AddOneOnIn(in x = 4)" )
2438
2537
. ShouldBe ( 5 ) ;
2439
2538
2440
2539
evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2449,9 +2548,9 @@ public void MethodWithInParameterInlineVarDeclarationAndInit()
2449
2548
{
2450
2549
ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
2451
2550
2452
- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2551
+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
2453
2552
2454
- evaluator . Evaluate ( "refObj .AddOneOnIn(in int x = 6)" )
2553
+ evaluator . Evaluate ( "inObj .AddOneOnIn(in int x = 6)" )
2455
2554
. ShouldBe ( 7 ) ;
2456
2555
2457
2556
evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2461,5 +2560,6 @@ public void MethodWithInParameterInlineVarDeclarationAndInit()
2461
2560
}
2462
2561
2463
2562
#endregion
2563
+
2464
2564
}
2465
2565
}
0 commit comments