Skip to content

Commit 34a1354

Browse files
committed
add some more integration test cases using the new additional arguments callback
1 parent e6eac08 commit 34a1354

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

FluentCommandLineParser.Tests/FluentCommandLineParserTests.cs

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,25 @@ public void Ensure_Parser_Calls_The_Callback_With_Expected_Int32_When_Using_Long
199199
});
200200
}
201201

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+
202221
#endregion Int32 Option
203222

204223
#region Double Option
@@ -247,6 +266,25 @@ public void Ensure_Parser_Calls_The_Callback_With_Expected_Double_When_Using_Lon
247266
});
248267
}
249268

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+
250288
#endregion Double Option
251289

252290
#region Enum Option
@@ -866,6 +904,110 @@ public void Ensure_Obsolete_Setup_Does_Not_Allow_Long_Option_With_One_Char()
866904

867905
#endregion
868906

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+
8691011
#endregion Top Level Tests
8701012

8711013
#region Duplicate Options Tests

0 commit comments

Comments
 (0)