Skip to content

Commit 374c080

Browse files
authored
(feature) Support all datatypes (#97)
* Refactor to support array and collection types. Fixes #93 * Add list type support * Add support for set types * Add global parser tests for all datatypes * Add specific resolvers
1 parent d33e00d commit 374c080

37 files changed

Lines changed: 1211 additions & 181 deletions

CommandLineParser.Tests/Command/CommandInModelTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using MatthiWare.CommandLine.Abstractions.Command;
22
using MatthiWare.CommandLine.Core.Attributes;
3-
using System.Threading.Tasks;
43
using Xunit;
54
using Xunit.Abstractions;
65

CommandLineParser.Tests/CommandLineParserTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -779,6 +779,7 @@ private StringType2(string input)
779779

780780
public string Result { get; }
781781

782+
#pragma warning disable IDE0060 // Remove unused parameter
782783
public static bool TryParse(string input, IFormatProvider format, out StringType2 result)
783784
{
784785
result = new StringType2(input);
@@ -853,6 +854,7 @@ public static StringType5 Parse(string input, IFormatProvider provider, IFormatP
853854
{
854855
return null;
855856
}
857+
#pragma warning restore IDE0060 // Remove unused parameter
856858
}
857859

858860
private class OrderModel

CommandLineParser.Tests/OptionBuilderTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void OptionBuilderConfiguresOptionCorrectly()
2222
new CommandLineParserOptions { PrefixLongOption = string.Empty, PrefixShortOption = string.Empty },
2323
new object(),
2424
XUnitExtensions.CreateLambda<object, string>(o => o.ToString()),
25-
new DefaultResolver<object>(NullLogger<CommandLineParser>.Instance), NullLogger.Instance);
25+
new DefaultResolver<object>(NullLogger<CommandLineParser>.Instance, serviceProviderMock.Object), NullLogger.Instance);
2626

2727
var builder = cmdOption as IOptionBuilder;
2828
var option = cmdOption as CommandLineOptionBase;

CommandLineParser.Tests/Parsing/OptionClusteringTests.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
using MatthiWare.CommandLine.Core.Attributes;
2-
using System;
3-
using System.Collections.Generic;
4-
using System.Text;
52
using Xunit;
63
using Xunit.Abstractions;
74

CommandLineParser.Tests/Parsing/Resolvers/BoolResolverTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public void TestResolveTrue(string input)
2323
{
2424
var resolver = ServiceProvider.GetRequiredService<IArgumentResolver<bool>>();
2525

26-
var result = resolver.Resolve(new ArgumentModel { Value = input });
26+
var result = resolver.Resolve(new ArgumentModel(string.Empty, input));
2727

2828
Assert.True(result);
2929
}
@@ -36,7 +36,7 @@ public void TestResolveFalse(string input)
3636
{
3737
var resolver = ServiceProvider.GetRequiredService<IArgumentResolver<bool>>();
3838

39-
var result = resolver.Resolve(new ArgumentModel { Value = input });
39+
var result = resolver.Resolve(new ArgumentModel(string.Empty, input));
4040

4141
Assert.False(result);
4242
}

CommandLineParser.Tests/Parsing/Resolvers/DefaultResolverTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
using MatthiWare.CommandLine.Abstractions.Models;
22
using MatthiWare.CommandLine.Abstractions.Parsing;
3+
using MatthiWare.CommandLine.Core.Parsing.Resolvers;
34
using Microsoft.Extensions.DependencyInjection;
5+
using Microsoft.Extensions.Logging.Abstractions;
6+
using System;
47
using Xunit;
58
using Xunit.Abstractions;
69

@@ -13,6 +16,24 @@ public DefaultResolverTests(ITestOutputHelper outputHelper) : base(outputHelper)
1316
{
1417
}
1518

19+
[Fact]
20+
public void ThrowsExceptionInCorrectPlaces()
21+
{
22+
Assert.Throws<ArgumentNullException>(() => new DefaultResolver<object>(null, null));
23+
Assert.Throws<ArgumentNullException>(() => new DefaultResolver<object>(NullLogger<CommandLineParser>.Instance, null));
24+
Assert.Throws<NotImplementedException>(() => new DefaultResolver<object>(NullLogger<CommandLineParser>.Instance, ServiceProvider).CanResolve(""));
25+
Assert.Throws<NotImplementedException>(() => new DefaultResolver<object>(NullLogger<CommandLineParser>.Instance, ServiceProvider).Resolve(""));
26+
}
27+
28+
[Fact]
29+
public void WorksCorrectlyWithNullValues()
30+
{
31+
var resolver = new DefaultResolver<object>(NullLogger<CommandLineParser>.Instance, ServiceProvider);
32+
33+
Assert.False(resolver.CanResolve((ArgumentModel)null));
34+
Assert.Null(resolver.Resolve((ArgumentModel)null));
35+
}
36+
1637
[Theory]
1738
[InlineData(true, "-m", "test")]
1839
[InlineData(true, "-m", "my string")]

0 commit comments

Comments
 (0)