Skip to content

Commit 4283baa

Browse files
authored
Add options model and fix codefactor issues (#7)
Add options model and fix codefactor issues
1 parent f64de12 commit 4283baa

50 files changed

Lines changed: 370 additions & 295 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CommandLineParser.Tests/CommandLineArgumentOptionTest.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Text;
4-
using Xunit;
5-
6-
namespace MatthiWare.CommandLineParser.Tests
1+
namespace MatthiWare.CommandLineParser.Tests
72
{
83

94
public class CommandLineArgumentOptionTest
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
using MatthiWare.CommandLine;
2+
using MatthiWare.CommandLine.Core.Attributes;
3+
using Xunit;
4+
5+
namespace MatthiWare.CommandLineParser.Tests
6+
{
7+
public class CommandLineModelTests
8+
{
9+
[Fact]
10+
public void TestBasicModel()
11+
{
12+
var parser = new CommandLineParser<Model>();
13+
14+
Assert.Equal(1, parser.Options.Count);
15+
16+
var message = parser.Options[0];
17+
18+
Assert.NotNull(message);
19+
20+
Assert.True(message.HasLongName && message.HasShortName);
21+
22+
Assert.Equal("-m", message.ShortName);
23+
Assert.Equal("--message", message.LongName);
24+
25+
Assert.True(message.HasDefault);
26+
Assert.True(message.IsRequired);
27+
28+
Assert.Equal("Help", message.HelpText);
29+
}
30+
31+
[Fact]
32+
public void TestBasicModelWithOverwritingUsingFluentApi()
33+
{
34+
var parser = new CommandLineParser<Model>();
35+
36+
parser.Configure(_ => _.Message)
37+
.Required(false)
38+
.HelpText("Different");
39+
40+
Assert.Equal(1, parser.Options.Count);
41+
42+
var message = parser.Options[0];
43+
44+
Assert.NotNull(message);
45+
46+
Assert.True(message.HasLongName && message.HasShortName);
47+
48+
Assert.Equal("-m", message.ShortName);
49+
Assert.Equal("--message", message.LongName);
50+
51+
Assert.True(message.HasDefault);
52+
Assert.False(message.IsRequired);
53+
54+
Assert.Equal("Different", message.HelpText);
55+
}
56+
57+
private class Model
58+
{
59+
[Required, Name("-m", "--message"), DefaultValue("not found"), HelpText("Help")]
60+
public string Message { get; set; }
61+
}
62+
}
63+
}

CommandLineParser.Tests/CommandLineParserTests.cs

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Text;
4-
using System.Threading;
1+
using System.Threading;
52
using MatthiWare.CommandLine;
63
using Xunit;
7-
using static MatthiWare.CommandLineParser.Tests.XUnitExtensions;
84

95
namespace MatthiWare.CommandLineParser.Tests
106
{
@@ -16,7 +12,7 @@ public void ParseTests()
1612
var parser = new CommandLineParser<Options>();
1713

1814
parser.Configure(opt => opt.Option1)
19-
.ShortName("-o")
15+
.Name("-o")
2016
.Default("Default message")
2117
.Required();
2218

@@ -38,17 +34,17 @@ public void ParseWithDefaults(string[] args, string result1, string result2, str
3834
var parser = new CommandLineParser<OptionsWithThreeParams>();
3935

4036
parser.Configure(opt => opt.Option1)
41-
.ShortName("-1")
37+
.Name("-1")
4238
.Default(result1)
4339
.Required();
4440

4541
parser.Configure(opt => opt.Option2)
46-
.ShortName("-2")
42+
.Name("-2")
4743
.Default(result2)
4844
.Required();
4945

5046
parser.Configure(opt => opt.Option3)
51-
.ShortName("-3")
47+
.Name("-3")
5248
.Default(result3)
5349
.Required();
5450

@@ -71,13 +67,12 @@ public void ParseWithCommandTests()
7167
var parser = new CommandLineParser<Options>();
7268

7369
parser.Configure(opt => opt.Option1)
74-
.ShortName("-o")
70+
.Name("-o")
7571
.Default("Default message")
7672
.Required();
7773

7874
var addCmd = parser.AddCommand<AddOption>()
79-
.ShortName("-A")
80-
.LongName("--Add")
75+
.Name("-A", "--Add")
8176
.OnExecuting(x =>
8277
{
8378
Assert.Equal("my message", x.Message);
@@ -86,8 +81,7 @@ public void ParseWithCommandTests()
8681

8782

8883
addCmd.Configure(opt => opt.Message)
89-
.LongName("--message")
90-
.ShortName("-m")
84+
.Name("-m", "--message")
9185
.Required();
9286

9387
var parsed = parser.Parse(new string[] { "app.exe", "-o", "test", "--Add", "-m", "my message" });
@@ -111,18 +105,15 @@ public void ParseCommandTests(string[] args, string result1, string result2)
111105
var parser = new CommandLineParser<AddOption>();
112106

113107
parser.AddCommand<AddOption>()
114-
.LongName("--add")
115-
.ShortName("-a")
108+
.Name("-a", "--add")
116109
.Required()
117110
.OnExecuting(r => Assert.Equal(result2, r.Message))
118111
.Configure(c => c.Message)
119-
.LongName("--message")
120-
.ShortName("-m")
112+
.Name("-m", "--message")
121113
.Required();
122114

123115
parser.Configure(opt => opt.Message)
124-
.LongName("--message")
125-
.ShortName("-m")
116+
.Name("-m", "--message")
126117
.Required();
127118

128119
var result = parser.Parse(args);
@@ -140,14 +131,12 @@ public void ConfigureTests()
140131
var parser = new CommandLineParser<Options>();
141132

142133
parser.Configure(opt => opt.Option1)
143-
.ShortName("-o")
144-
.LongName("--opt")
134+
.Name("-o", "--opt")
145135
.Default("Default message")
146136
.Required();
147137

148138
parser.Configure(opt => opt.Option2)
149-
.ShortName("-x")
150-
.LongName("--xsomething")
139+
.Name("-x", "--xsomething")
151140
.Required();
152141

153142
Assert.Equal(2, parser.Options.Count);
@@ -171,11 +160,13 @@ private class AddOption
171160
{
172161
public string Message { get; set; }
173162
}
163+
174164
private class Options
175165
{
176166
public string Option1 { get; set; }
177167
public bool Option2 { get; set; }
178168
}
169+
179170
private class OptionsWithThreeParams
180171
{
181172
public string Option1 { get; set; }

CommandLineParser.Tests/ExtensionsTests.cs

Lines changed: 0 additions & 37 deletions
This file was deleted.
Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Text;
4-
using MatthiWare.CommandLine.Abstractions;
1+
using MatthiWare.CommandLine.Abstractions;
52
using MatthiWare.CommandLine.Abstractions.Parsing;
63
using MatthiWare.CommandLine.Core;
74
using Moq;
@@ -11,13 +8,12 @@ namespace MatthiWare.CommandLineParser.Tests
118
{
129
public class OptionBuilderTest
1310
{
14-
1511
[Fact]
1612
public void OptionBuilderConfiguresOptionCorrectly()
1713
{
1814
var resolverMock = new Mock<ICommandLineArgumentResolver<string>>();
19-
var option = new CommandLineOption<object, string>(new object(), o => o.ToString(), resolverMock.Object);
20-
var builder = option as IOptionBuilder<string>;
15+
var option = new CommandLineOption(new object(), XUnitExtensions.CreateLambda<object, string>(o => o.ToString()), resolverMock.Object);
16+
var builder = option as IOptionBuilder;
2117

2218
string sDefault = "default";
2319
string sHelp = "help";
@@ -27,8 +23,7 @@ public void OptionBuilderConfiguresOptionCorrectly()
2723
builder
2824
.Default(sDefault)
2925
.HelpText(sHelp)
30-
.LongName(sLong)
31-
.ShortName(sShort)
26+
.Name(sShort, sLong)
3227
.Required();
3328

3429
Assert.True(option.HasDefault);
@@ -41,7 +36,6 @@ public void OptionBuilderConfiguresOptionCorrectly()
4136

4237
Assert.True(option.HasShortName);
4338
Assert.Equal(sShort, option.ShortName);
44-
4539
}
4640
}
4741
}

CommandLineParser.Tests/Parsing/ParserResultTest.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Text;
42
using MatthiWare.CommandLine.Abstractions.Parsing.Command;
53
using MatthiWare.CommandLine.Core.Parsing;
64
using Moq;

CommandLineParser.Tests/Parsing/ResolverFactoryTest.cs

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Text;
2+
using MatthiWare.CommandLine.Abstractions.Models;
43
using MatthiWare.CommandLine.Abstractions.Parsing;
54
using MatthiWare.CommandLine.Core.Parsing;
65
using MatthiWare.CommandLine.Core.Parsing.Resolvers;
@@ -11,8 +10,7 @@ namespace MatthiWare.CommandLineParser.Tests.Parsing
1110
{
1211
public class ResolverFactoryTest
1312
{
14-
15-
private class RandomType { }
13+
public class RandomType { }
1614

1715
[Fact]
1816
public void ContainsWork()
@@ -26,6 +24,30 @@ public void ContainsWork()
2624
Assert.False(factory.Contains<RandomType>());
2725
}
2826

27+
[Fact]
28+
public void RegisterAndGet()
29+
{
30+
var instance = new RandomType();
31+
32+
var mockResolver = new Mock<ICommandLineArgumentResolver<RandomType>>();
33+
mockResolver.Setup(_ => _.CanResolve(It.IsAny<ArgumentModel>())).Returns(true);
34+
mockResolver.Setup(_ => _.Resolve(It.IsAny<ArgumentModel>())).Returns(instance);
35+
36+
var factory = new ResolverFactory();
37+
38+
factory.Register(mockResolver.Object);
39+
40+
var resolver = factory.CreateResolver<RandomType>();
41+
42+
var model = new ArgumentModel();
43+
44+
Assert.Same(mockResolver.Object, resolver);
45+
Assert.True(resolver.CanResolve(model));
46+
Assert.Same(instance, resolver.Resolve(model));
47+
48+
mockResolver.VerifyAll();
49+
}
50+
2951
[Fact]
3052
public void RegisterOverrideWorks()
3153
{
@@ -46,6 +68,5 @@ public void RegisterThrowsException()
4668

4769
Assert.Throws<ArgumentException>(() => factory.Register<string, StringResolver>());
4870
}
49-
5071
}
5172
}

CommandLineParser.Tests/Parsing/Resolvers/BoolResolverTests.cs

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

CommandLineParser.Tests/Parsing/Resolvers/DoubleResolverTests.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Globalization;
4-
using System.Text;
5-
using MatthiWare.CommandLine.Abstractions.Models;
1+
using MatthiWare.CommandLine.Abstractions.Models;
62
using MatthiWare.CommandLine.Core.Parsing.Resolvers;
73
using Xunit;
84

CommandLineParser.Tests/Parsing/Resolvers/IntResolverTests.cs

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

0 commit comments

Comments
 (0)