@@ -2143,6 +2143,105 @@ void Evaluator_PreEvaluateVariable(object sender, VariablePreEvaluationEventArg
21432143
21442144 #endregion
21452145
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+
21462245 #region Bug resolution
21472246
21482247 yield return new TestCaseData ( new ExpressionEvaluator ( )
@@ -2380,11 +2479,11 @@ public void MethodWithInParameter()
23802479 {
23812480 ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
23822481
2383- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2482+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
23842483
23852484 evaluator . Variables [ "x" ] = 3 ;
23862485
2387- evaluator . Evaluate ( "refObj .AddOneOnIn(in x)" )
2486+ evaluator . Evaluate ( "inObj .AddOneOnIn(in x)" )
23882487 . ShouldBe ( 4 ) ;
23892488
23902489 evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2399,9 +2498,9 @@ public void MethodWithInParameterWithoutExistingVariable()
23992498 {
24002499 ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
24012500
2402- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2501+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
24032502
2404- evaluator . Evaluate ( "refObj .AddOneOnIn(in x)" )
2503+ evaluator . Evaluate ( "inObj .AddOneOnIn(in x)" )
24052504 . ShouldBe ( 1 ) ;
24062505
24072506 evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2415,9 +2514,9 @@ public void MethodWithInParameterInlineVarDeclaration()
24152514 {
24162515 ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
24172516
2418- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2517+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
24192518
2420- evaluator . Evaluate ( "refObj .AddOneOnIn(in int x)" )
2519+ evaluator . Evaluate ( "inObj .AddOneOnIn(in int x)" )
24212520 . ShouldBe ( 1 ) ;
24222521
24232522 evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2432,9 +2531,9 @@ public void MethodWithInParameterWithoutExistingVariableAndInit()
24322531 {
24332532 ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
24342533
2435- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2534+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
24362535
2437- evaluator . Evaluate ( "refObj .AddOneOnIn(in x = 4)" )
2536+ evaluator . Evaluate ( "inObj .AddOneOnIn(in x = 4)" )
24382537 . ShouldBe ( 5 ) ;
24392538
24402539 evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2449,9 +2548,9 @@ public void MethodWithInParameterInlineVarDeclarationAndInit()
24492548 {
24502549 ExpressionEvaluator evaluator = new ExpressionEvaluator ( ) ;
24512550
2452- evaluator . Variables [ "refObj " ] = new MethodArgKeywordClass ( ) ;
2551+ evaluator . Variables [ "inObj " ] = new MethodArgKeywordClass ( ) ;
24532552
2454- evaluator . Evaluate ( "refObj .AddOneOnIn(in int x = 6)" )
2553+ evaluator . Evaluate ( "inObj .AddOneOnIn(in int x = 6)" )
24552554 . ShouldBe ( 7 ) ;
24562555
24572556 evaluator . Variables . ShouldContainKey ( "x" ) ;
@@ -2461,5 +2560,6 @@ public void MethodWithInParameterInlineVarDeclarationAndInit()
24612560 }
24622561
24632562 #endregion
2563+
24642564 }
24652565}
0 commit comments