@@ -199,6 +199,25 @@ public void Ensure_Parser_Calls_The_Callback_With_Expected_Int32_When_Using_Long
199
199
} ) ;
200
200
}
201
201
202
+ [ Test ]
203
+ public void Ensure_Negative_Integer_Can_Be_Specified_With_Unix_Style ( )
204
+ {
205
+ var parser = CreateFluentParser ( ) ;
206
+
207
+ int actual = 0 ;
208
+
209
+ parser . Setup < int > ( "integer" )
210
+ . Callback ( i => actual = i ) ;
211
+
212
+ var result = parser . Parse ( new [ ] { "--integer" , "--" , "-123" } ) ;
213
+
214
+ Assert . IsFalse ( result . HasErrors ) ;
215
+ Assert . IsFalse ( result . EmptyArgs ) ;
216
+ Assert . IsFalse ( result . HelpCalled ) ;
217
+
218
+ Assert . AreEqual ( - 123 , actual ) ;
219
+ }
220
+
202
221
#endregion Int32 Option
203
222
204
223
#region Double Option
@@ -247,6 +266,25 @@ public void Ensure_Parser_Calls_The_Callback_With_Expected_Double_When_Using_Lon
247
266
} ) ;
248
267
}
249
268
269
+ [ Test ]
270
+ public void Ensure_Negative_Double_Can_Be_Specified_With_Unix_Style ( )
271
+ {
272
+ var parser = CreateFluentParser ( ) ;
273
+
274
+ double actual = 0 ;
275
+
276
+ parser . Setup < double > ( "double" )
277
+ . Callback ( i => actual = i ) ;
278
+
279
+ var result = parser . Parse ( new [ ] { "--double" , "--" , "-123.456" } ) ;
280
+
281
+ Assert . IsFalse ( result . HasErrors ) ;
282
+ Assert . IsFalse ( result . EmptyArgs ) ;
283
+ Assert . IsFalse ( result . HelpCalled ) ;
284
+
285
+ Assert . AreEqual ( - 123.456 , actual ) ;
286
+ }
287
+
250
288
#endregion Double Option
251
289
252
290
#region Enum Option
@@ -866,6 +904,110 @@ public void Ensure_Obsolete_Setup_Does_Not_Allow_Long_Option_With_One_Char()
866
904
867
905
#endregion
868
906
907
+ #region Addtional Arguments
908
+
909
+ [ Test ]
910
+ public void Ensure_Additional_Arguments_Callback_Called_When_Additional_Args_Provided ( )
911
+ {
912
+ var parser = CreateFluentParser ( ) ;
913
+
914
+ var capturedAdditionalArgs = new List < string > ( ) ;
915
+
916
+ parser . Setup < string > ( "my-option" )
917
+ . CaptureAdditionalArguments ( capturedAdditionalArgs . AddRange ) ;
918
+
919
+ var result = parser . Parse ( new [ ] { "--my-option" , "value" , "--" , "addArg1" , "addArg2" } ) ;
920
+
921
+ Assert . IsFalse ( result . HasErrors ) ;
922
+ Assert . IsFalse ( result . EmptyArgs ) ;
923
+ Assert . IsFalse ( result . HelpCalled ) ;
924
+
925
+ Assert . AreEqual ( 2 , capturedAdditionalArgs . Count ( ) ) ;
926
+ Assert . IsTrue ( capturedAdditionalArgs . Contains ( "addArg1" ) ) ;
927
+ Assert . IsTrue ( capturedAdditionalArgs . Contains ( "addArg2" ) ) ;
928
+ }
929
+
930
+ [ Test ]
931
+ public void Ensure_Additional_Arguments_Callback_Not_Called_When_No_Additional_Args_Provided ( )
932
+ {
933
+ var parser = CreateFluentParser ( ) ;
934
+
935
+ var capturedAdditionalArgs = new List < string > ( ) ;
936
+
937
+ parser . Setup < string > ( "my-option" )
938
+ . CaptureAdditionalArguments ( capturedAdditionalArgs . AddRange ) ;
939
+
940
+ var result = parser . Parse ( new [ ] { "--my-option" , "value" } ) ;
941
+
942
+ Assert . IsFalse ( result . HasErrors ) ;
943
+ Assert . IsFalse ( result . EmptyArgs ) ;
944
+ Assert . IsFalse ( result . HelpCalled ) ;
945
+
946
+ Assert . IsEmpty ( capturedAdditionalArgs ) ;
947
+ }
948
+
949
+ [ Test ]
950
+ public void Ensure_Additional_Arguments_Callback_Not_Called_When_No_Additional_Args_Follow_A_Double_Dash ( )
951
+ {
952
+ var parser = CreateFluentParser ( ) ;
953
+
954
+ var capturedAdditionalArgs = new List < string > ( ) ;
955
+
956
+ parser . Setup < string > ( "my-option" )
957
+ . CaptureAdditionalArguments ( capturedAdditionalArgs . AddRange ) ;
958
+
959
+ var result = parser . Parse ( new [ ] { "--my-option" , "value" , "--" } ) ;
960
+
961
+ Assert . IsFalse ( result . HasErrors ) ;
962
+ Assert . IsFalse ( result . EmptyArgs ) ;
963
+ Assert . IsFalse ( result . HelpCalled ) ;
964
+
965
+ Assert . IsEmpty ( capturedAdditionalArgs ) ;
966
+ }
967
+
968
+ [ Test ]
969
+ public void Ensure_Stable_When_Additional_Args_Are_Provided_But_Capture_Additional_Arguments_Has_Not_Been_Setup ( )
970
+ {
971
+ var parser = CreateFluentParser ( ) ;
972
+
973
+ parser . Setup < string > ( "my-option" ) ;
974
+
975
+ var result = parser . Parse ( new [ ] { "--my-option" , "value" , "--" , "addArg1" , "addArg2" } ) ;
976
+
977
+ Assert . IsFalse ( result . HasErrors ) ;
978
+ Assert . IsFalse ( result . EmptyArgs ) ;
979
+ Assert . IsFalse ( result . HelpCalled ) ;
980
+ }
981
+
982
+ #endregion
983
+
984
+ #region Lists
985
+
986
+ [ Test ]
987
+ public void Ensure_Can_Parse_Mulitple_Arguments_Containing_Negative_Integers_To_A_List ( )
988
+ {
989
+ var parser = CreateFluentParser ( ) ;
990
+
991
+ var actual = new List < int > ( ) ;
992
+
993
+ parser . Setup < List < int > > ( "integers" )
994
+ . Callback ( actual . AddRange ) ;
995
+
996
+ var result = parser . Parse ( new [ ] { "--integers" , "--" , "123" , "-123" , "-321" , "321" } ) ;
997
+
998
+ Assert . IsFalse ( result . HasErrors ) ;
999
+ Assert . IsFalse ( result . EmptyArgs ) ;
1000
+ Assert . IsFalse ( result . HelpCalled ) ;
1001
+
1002
+ Assert . AreEqual ( 4 , actual . Count ( ) ) ;
1003
+ Assert . IsTrue ( actual . Contains ( 123 ) ) ;
1004
+ Assert . IsTrue ( actual . Contains ( - 123 ) ) ;
1005
+ Assert . IsTrue ( actual . Contains ( - 321 ) ) ;
1006
+ Assert . IsTrue ( actual . Contains ( 321 ) ) ;
1007
+ }
1008
+
1009
+ #endregion
1010
+
869
1011
#endregion Top Level Tests
870
1012
871
1013
#region Duplicate Options Tests
0 commit comments