@@ -979,6 +979,43 @@ public void Ensure_Stable_When_Additional_Args_Are_Provided_But_Capture_Addition
979979 Assert . IsFalse ( result . HelpCalled ) ;
980980 }
981981
982+ [ Test ]
983+ public void Ensure_Additional_Args_Can_Be_Captured_For_Different_Options ( )
984+ {
985+ var parser = CreateFluentParser ( ) ;
986+
987+ var option1AddArgs = new List < string > ( ) ;
988+ var option2AddArgs = new List < string > ( ) ;
989+
990+ string option1Value = null ;
991+ string option2Value = null ;
992+
993+ parser . Setup < string > ( "option-one" )
994+ . Callback ( s => option1Value = s )
995+ . CaptureAdditionalArguments ( option1AddArgs . AddRange ) ;
996+
997+ parser . Setup < string > ( "option-two" )
998+ . Callback ( s => option2Value = s )
999+ . CaptureAdditionalArguments ( option2AddArgs . AddRange ) ;
1000+
1001+ var result = parser . Parse ( new [ ] { "--option-one" , "value-one" , "addArg1" , "addArg2" , "--option-two" , "value-two" , "addArg3" , "addArg4" } ) ;
1002+
1003+ Assert . IsFalse ( result . HasErrors ) ;
1004+ Assert . IsFalse ( result . EmptyArgs ) ;
1005+ Assert . IsFalse ( result . HelpCalled ) ;
1006+
1007+ Assert . AreEqual ( "value-one" , option1Value ) ;
1008+ Assert . AreEqual ( "value-two" , option2Value ) ;
1009+
1010+ Assert . AreEqual ( 2 , option1AddArgs . Count ( ) ) ;
1011+ Assert . IsTrue ( option1AddArgs . Contains ( "addArg1" ) ) ;
1012+ Assert . IsTrue ( option1AddArgs . Contains ( "addArg2" ) ) ;
1013+
1014+ Assert . AreEqual ( 2 , option1AddArgs . Count ( ) ) ;
1015+ Assert . IsTrue ( option2AddArgs . Contains ( "addArg3" ) ) ;
1016+ Assert . IsTrue ( option2AddArgs . Contains ( "addArg4" ) ) ;
1017+ }
1018+
9821019 #endregion
9831020
9841021 #region Lists
0 commit comments