@@ -83,13 +83,13 @@ public string JoinToString(string thisIsAStringParameter,
8383 int thisIsAnIntParameter ,
8484 float thisIsAFloatParameter ,
8585 double thisIsADoubleParameter ,
86- decimal thisIsADecimalParameter ,
86+ decimal ? thisIsADecimalParameter ,
8787 bool thisIsABoolParameter ,
88- DateTime thisIsADateTimeParameter )
88+ DateTime thisIsADateTimeParameter = default )
8989 {
9090 // Join all parameters into a single string separated by "-"
9191 return string . Join ( "-" , thisIsAStringParameter , thisIsACharParameter , thisIsAnIntParameter , thisIsAFloatParameter ,
92- thisIsADoubleParameter , thisIsADecimalParameter , thisIsABoolParameter , string . Format ( "{0:MMddyyyy}" , thisIsADateTimeParameter ) ) ;
92+ thisIsADoubleParameter , thisIsADecimalParameter ?? 123.456m , thisIsABoolParameter , string . Format ( "{0:MMddyyyy}" , thisIsADateTimeParameter ) ) ;
9393 }
9494 }
9595
@@ -342,59 +342,83 @@ private static IEnumerable<TestCaseData> SnakeCasedNamedArgsTestCases
342342 // 1.1. Original method name:
343343 var args = Array . Empty < object > ( ) ;
344344 var namedArgs = new Dictionary < string , object > ( )
345- {
346- { "thisIsAStringParameter" , stringParam } ,
347- { "thisIsACharParameter" , charParam } ,
348- { "thisIsAnIntParameter" , intParam } ,
349- { "thisIsAFloatParameter" , floatParam } ,
350- { "thisIsADoubleParameter" , doubleParam } ,
351- { "thisIsADecimalParameter" , decimalParam } ,
352- { "thisIsABoolParameter" , boolParam } ,
353- { "thisIsADateTimeParameter" , dateTimeParam }
354- } ;
355- yield return new TestCaseData ( "JoinToString" , args , namedArgs ) ;
345+ {
346+ { "thisIsAStringParameter" , stringParam } ,
347+ { "thisIsACharParameter" , charParam } ,
348+ { "thisIsAnIntParameter" , intParam } ,
349+ { "thisIsAFloatParameter" , floatParam } ,
350+ { "thisIsADoubleParameter" , doubleParam } ,
351+ { "thisIsADecimalParameter" , decimalParam } ,
352+ { "thisIsABoolParameter" , boolParam } ,
353+ { "thisIsADateTimeParameter" , dateTimeParam }
354+ } ;
355+ var expectedResult = "string-c-1-2-3-4.0-True-01052013" ;
356+ yield return new TestCaseData ( "JoinToString" , args , namedArgs , expectedResult ) ;
356357
357358 // 1.2. Snake-cased method name:
358359 namedArgs = new Dictionary < string , object > ( )
359- {
360- { "this_is_a_string_parameter" , stringParam } ,
361- { "this_is_a_char_parameter" , charParam } ,
362- { "this_is_an_int_parameter" , intParam } ,
363- { "this_is_a_float_parameter" , floatParam } ,
364- { "this_is_a_double_parameter" , doubleParam } ,
365- { "this_is_a_decimal_parameter" , decimalParam } ,
366- { "this_is_a_bool_parameter" , boolParam } ,
367- { "this_is_a_date_time_parameter" , dateTimeParam }
368- } ;
369- yield return new TestCaseData ( "join_to_string" , args , namedArgs ) ;
360+ {
361+ { "this_is_a_string_parameter" , stringParam } ,
362+ { "this_is_a_char_parameter" , charParam } ,
363+ { "this_is_an_int_parameter" , intParam } ,
364+ { "this_is_a_float_parameter" , floatParam } ,
365+ { "this_is_a_double_parameter" , doubleParam } ,
366+ { "this_is_a_decimal_parameter" , decimalParam } ,
367+ { "this_is_a_bool_parameter" , boolParam } ,
368+ { "this_is_a_date_time_parameter" , dateTimeParam }
369+ } ;
370+ yield return new TestCaseData ( "join_to_string" , args , namedArgs , expectedResult ) ;
370371
371372 // 2. Some args and some kwargs:
372373
373374 // 2.1. Original method name:
374375 args = new object [ ] { stringParam , charParam , intParam , floatParam } ;
375376 namedArgs = new Dictionary < string , object > ( )
376- {
377- { "thisIsADoubleParameter" , doubleParam } ,
378- { "thisIsADecimalParameter" , decimalParam } ,
379- { "thisIsABoolParameter" , boolParam } ,
380- { "thisIsADateTimeParameter" , dateTimeParam }
381- } ;
382- yield return new TestCaseData ( "JoinToString" , args , namedArgs ) ;
377+ {
378+ { "thisIsADoubleParameter" , doubleParam } ,
379+ { "thisIsADecimalParameter" , decimalParam } ,
380+ { "thisIsABoolParameter" , boolParam } ,
381+ { "thisIsADateTimeParameter" , dateTimeParam }
382+ } ;
383+ yield return new TestCaseData ( "JoinToString" , args , namedArgs , expectedResult ) ;
383384
384385 // 2.2. Snake-cased method name:
385386 namedArgs = new Dictionary < string , object > ( )
386- {
387- { "this_is_a_double_parameter" , doubleParam } ,
388- { "this_is_a_decimal_parameter" , decimalParam } ,
389- { "this_is_a_bool_parameter" , boolParam } ,
390- { "this_is_a_date_time_parameter" , dateTimeParam }
391- } ;
392- yield return new TestCaseData ( "join_to_string" , args , namedArgs ) ;
387+ {
388+ { "this_is_a_double_parameter" , doubleParam } ,
389+ { "this_is_a_decimal_parameter" , decimalParam } ,
390+ { "this_is_a_bool_parameter" , boolParam } ,
391+ { "this_is_a_date_time_parameter" , dateTimeParam }
392+ } ;
393+ yield return new TestCaseData ( "join_to_string" , args , namedArgs , expectedResult ) ;
394+
395+ // 3. Nullable args:
396+ namedArgs = new Dictionary < string , object > ( )
397+ {
398+ { "thisIsADoubleParameter" , doubleParam } ,
399+ { "thisIsADecimalParameter" , null } ,
400+ { "thisIsABoolParameter" , boolParam } ,
401+ { "thisIsADateTimeParameter" , dateTimeParam }
402+ } ;
403+ expectedResult = "string-c-1-2-3-123.456-True-01052013" ;
404+ yield return new TestCaseData ( "JoinToString" , args , namedArgs , expectedResult ) ;
405+
406+ // 4. Parameters with default values:
407+ namedArgs = new Dictionary < string , object > ( )
408+ {
409+ { "this_is_a_double_parameter" , doubleParam } ,
410+ { "this_is_a_decimal_parameter" , decimalParam } ,
411+ { "this_is_a_bool_parameter" , boolParam } ,
412+ // Purposefully omitting the DateTime parameter so the default value is used
413+ } ;
414+ expectedResult = "string-c-1-2-3-4.0-True-01010001" ;
415+ yield return new TestCaseData ( "join_to_string" , args , namedArgs , expectedResult ) ;
393416 }
394417 }
395418
396419 [ TestCaseSource ( nameof ( SnakeCasedNamedArgsTestCases ) ) ]
397- public void CanCallSnakeCasedMethodWithSnakeCasedNamedArguments ( string methodName , object [ ] args , Dictionary < string , object > namedArgs )
420+ public void CanCallSnakeCasedMethodWithSnakeCasedNamedArguments ( string methodName , object [ ] args , Dictionary < string , object > namedArgs ,
421+ string expectedResult )
398422 {
399423 using var obj = new SnakeCaseNamesTesClass ( ) . ToPython ( ) ;
400424
@@ -407,7 +431,7 @@ public void CanCallSnakeCasedMethodWithSnakeCasedNamedArguments(string methodNam
407431
408432 var result = obj . InvokeMethod ( methodName , pyArgs , pyNamedArgs ) . As < string > ( ) ;
409433
410- Assert . AreEqual ( "string-c-1-2-3-4.0-True-01052013" , result ) ;
434+ Assert . AreEqual ( expectedResult , result ) ;
411435 }
412436
413437 [ Test ]
0 commit comments