Skip to content

Commit 49d556f

Browse files
committed
Updated tests to create BindingTargets in a centralized way.
1 parent 1c13768 commit 49d556f

File tree

10 files changed

+76
-139
lines changed

10 files changed

+76
-139
lines changed

J4JCommandLine.Tests/CommandLineParsing.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class CommandLineParsing
1313

1414
public CommandLineParsing()
1515
{
16-
_cmdLineParser = TestServiceProvider.Instance.GetRequiredService<ICommandLineParser>();
16+
_cmdLineParser = ServiceProvider.Instance.GetRequiredService<ICommandLineParser>();
1717
_errors = new CommandLineErrors( StringComparison.OrdinalIgnoreCase );
1818

1919
var masterText = new MasterTextCollection(StringComparison.OrdinalIgnoreCase);

J4JCommandLine.Tests/EnumTests.cs

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,6 @@ protected class RootProperties
1414
public UnconvertibleEnum Unconvertible { get; set; }
1515
}
1616

17-
private readonly BindingTargetBuilder _builder;
18-
19-
public EnumTests()
20-
{
21-
_builder = TestServiceProvider.Instance.GetRequiredService<BindingTargetBuilder>();
22-
23-
_builder.Prefixes("-", "--", "/")
24-
.Quotes('\'', '"')
25-
.HelpKeys("h", "?")
26-
.Description("a test program for exercising J4JCommandLine")
27-
.ProgramName($"{this.GetType()}");
28-
}
29-
3017
[ Theory ]
3118
[ InlineData( "z", "B", true, MappingResults.MissingRequired, PlainEnum.A ) ]
3219
[ InlineData( "x", "B", true, MappingResults.Success, PlainEnum.B ) ]
@@ -38,8 +25,7 @@ public void Plain_enum(
3825
MappingResults result,
3926
PlainEnum desiredValue )
4027
{
41-
_builder.Build<RootProperties>(null, out var target );
42-
28+
var target = ServiceProvider.GetBindingTarget<RootProperties>( true );
4329
target.Should().NotBeNull();
4430

4531
var option = target!.Bind( x => x.Plain, "x" );
@@ -69,8 +55,7 @@ public void Flags_enum(
6955
MappingResults result,
7056
FlagsEnum desiredValue)
7157
{
72-
_builder.Build<RootProperties>(null, out var target);
73-
58+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
7459
target.Should().NotBeNull();
7560

7661
var option = target!.Bind(x => x.Flags, "x");
@@ -100,8 +85,7 @@ public void Unconvertible_enum(
10085
MappingResults result,
10186
UnconvertibleEnum desiredValue)
10287
{
103-
_builder.Build<RootProperties>(null, out var target);
104-
88+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
10589
target.Should().NotBeNull();
10690

10791
var option = target!.Bind(x => x.Unconvertible, "x");

J4JCommandLine.Tests/HelpErrorTests.cs

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,27 +17,13 @@ protected class RootProperties
1717
public int[] IntArray { get; set; }
1818
}
1919

20-
private readonly BindingTargetBuilder _builder;
21-
22-
public HelpErrorTests()
23-
{
24-
_builder = TestServiceProvider.Instance.GetRequiredService<BindingTargetBuilder>();
25-
26-
_builder.Prefixes("-", "--", "/")
27-
.Quotes('\'', '"')
28-
.HelpKeys("h", "?")
29-
.Description("a test program for exercising J4JCommandLine")
30-
.ProgramName($"{this.GetType()}");
31-
}
32-
3320
[ Theory ]
3421
[ InlineData( "h", MappingResults.HelpRequested ) ]
3522
public void Trigger_help(
3623
string key,
3724
MappingResults result )
3825
{
39-
_builder.Build<RootProperties>( null, out var target );
40-
26+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
4127
target.Should().NotBeNull();
4228

4329
var parseResult = target!.Parse( new string[] { $"-{key}" } );
@@ -48,7 +34,7 @@ public void Trigger_help(
4834
[Fact]
4935
public void No_help_keys()
5036
{
51-
var builder = TestServiceProvider.Instance.GetRequiredService<BindingTargetBuilder>();
37+
var builder = ServiceProvider.Instance.GetRequiredService<BindingTargetBuilder>();
5238

5339
builder.Prefixes("-", "--", "/")
5440
.Quotes('\'', '"')
@@ -63,15 +49,15 @@ public void No_help_keys()
6349
[Fact]
6450
public void Duplicate_help_keys()
6551
{
66-
var builder = TestServiceProvider.Instance.GetRequiredService<BindingTargetBuilder>();
52+
var builder = ServiceProvider.Instance.GetRequiredService<BindingTargetBuilder>();
6753

6854
builder.Prefixes("-", "--", "/")
6955
.Quotes('\'', '"')
7056
.HelpKeys("h","h","h")
7157
.Description("a test program for exercising J4JCommandLine")
7258
.ProgramName($"{this.GetType()}");
7359

74-
_builder.Build<RootProperties>(null, out var target);
60+
builder.Build<RootProperties>(null, out var target);
7561

7662
target.Should().NotBeNull();
7763
}

J4JCommandLine.Tests/ParsingTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class ParsingTests
1616

1717
public ParsingTests()
1818
{
19-
_cmdLineParser = TestServiceProvider.Instance.GetRequiredService<ICommandLineParser>();
19+
_cmdLineParser = ServiceProvider.Instance.GetRequiredService<ICommandLineParser>();
2020
_errors = new CommandLineErrors(StringComparison.OrdinalIgnoreCase);
2121

2222
var masterText = new MasterTextCollection(StringComparison.OrdinalIgnoreCase);

J4JCommandLine.Tests/RootLevelTests.cs

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,6 @@ protected class RootProperties
1919
public int[] IntArray { get; set; }
2020
}
2121

22-
private readonly BindingTargetBuilder _builder;
23-
24-
public RootLevelTests()
25-
{
26-
_builder = TestServiceProvider.Instance.GetRequiredService<BindingTargetBuilder>();
27-
28-
_builder.Prefixes("-", "--", "/")
29-
.Quotes('\'', '"')
30-
.HelpKeys("h", "?")
31-
.Description("a test program for exercising J4JCommandLine")
32-
.ProgramName($"{this.GetType()}");
33-
}
34-
3522
[Theory]
3623
[InlineData("z", "32", true, MappingResults.MissingRequired, -1)]
3724
[InlineData("x", "32", true, MappingResults.Success, 32)]
@@ -43,8 +30,7 @@ public void Simple_property_single(
4330
MappingResults result,
4431
int desiredValue)
4532
{
46-
_builder.Build<RootProperties>( null, out var target );
47-
33+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
4834
target.Should().NotBeNull();
4935

5036
var option = target!.Bind(x => x.IntProperty, "x");
@@ -76,8 +62,7 @@ public void Simple_property_array(
7662
{
7763
var desired = desiredValues == null ? new List<int>() : new List<int>(desiredValues);
7864

79-
_builder.Build<RootProperties>(null, out var target);
80-
65+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
8166
target.Should().NotBeNull();
8267

8368
var option = target!.Bind(x => x.IntArray, "x");
@@ -112,8 +97,7 @@ public void Simple_property_list(
11297
{
11398
var desired = desiredValues == null ? new List<int>() : new List<int>(desiredValues);
11499

115-
_builder.Build<RootProperties>(null, out var target);
116-
100+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
117101
target.Should().NotBeNull();
118102

119103
var option = target!.Bind(x => x.IntList, "x");
@@ -145,8 +129,7 @@ public void Num_parameters_list(
145129
int maxArgs,
146130
MappingResults result)
147131
{
148-
_builder.Build<RootProperties>(null, out var target);
149-
132+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
150133
target.Should().NotBeNull();
151134

152135
var option = target!.Bind(x => x.IntList, "x");
@@ -185,8 +168,7 @@ public void Num_parameters_array(
185168
int maxArgs,
186169
MappingResults result)
187170
{
188-
_builder.Build<RootProperties>(null, out var target);
189-
171+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
190172
target.Should().NotBeNull();
191173

192174
var option = target!.Bind(x => x.IntArray, "x");
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using System;
2+
using Autofac;
3+
using Autofac.Extensions.DependencyInjection;
4+
using J4JSoftware.CommandLine;
5+
using Microsoft.Extensions.DependencyInjection;
6+
7+
namespace J4JCommandLine.Tests
8+
{
9+
public class ServiceProvider
10+
{
11+
private static readonly BindingTargetBuilder _btBuilder;
12+
13+
public static IServiceProvider Instance { get; }
14+
15+
public static BindingTarget<TValue>? GetBindingTarget<TValue>( bool ignoreUnkeyed )
16+
where TValue : class
17+
{
18+
_btBuilder.ProgramName( $"{typeof(TValue)}" )
19+
.IgnoreUnprocessedUnkeyedParameters( ignoreUnkeyed );
20+
21+
_btBuilder.Build<TValue>( null, out var retVal );
22+
23+
return retVal;
24+
}
25+
26+
static ServiceProvider()
27+
{
28+
var builder = new ContainerBuilder();
29+
30+
builder.RegisterType<SimpleConsole>()
31+
.AsImplementedInterfaces();
32+
33+
builder.AddJ4JCommandLine();
34+
35+
builder.AddTextConverters( typeof(ServiceProvider).Assembly );
36+
37+
Instance = new AutofacServiceProvider( builder.Build() );
38+
39+
_btBuilder = Instance.GetRequiredService<BindingTargetBuilder>()
40+
.Prefixes("-")
41+
.Quotes('\'', '"')
42+
.HelpKeys("h")
43+
.Description("a test program for exercising J4JCommandLine");
44+
}
45+
}
46+
}

J4JCommandLine.Tests/StaticLevelTests.cs

Lines changed: 5 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,6 @@ protected class RootProperties
1818
public static int[] IntArray { get; set; }
1919
}
2020

21-
private readonly BindingTargetBuilder _builder;
22-
23-
public StaticLevelTests()
24-
{
25-
_builder = TestServiceProvider.Instance.GetRequiredService<BindingTargetBuilder>();
26-
27-
_builder.Prefixes("-", "--", "/")
28-
.Quotes('\'', '"')
29-
.HelpKeys("h", "?")
30-
.Description("a test program for exercising J4JCommandLine")
31-
.ProgramName($"{this.GetType()}");
32-
}
33-
3421
[ Theory ]
3522
[ InlineData( "z", "32", true, MappingResults.MissingRequired, -1 ) ]
3623
[ InlineData( "x", "32", true, MappingResults.Success, 32 ) ]
@@ -42,8 +29,7 @@ public void Simple_property_single(
4229
MappingResults result,
4330
int desiredValue )
4431
{
45-
_builder.Build<RootProperties>( null, out var target );
46-
32+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
4733
target.Should().NotBeNull();
4834

4935
var option = target!.Bind( x => RootProperties.IntProperty, "x" );
@@ -75,8 +61,7 @@ public void Simple_property_array(
7561
{
7662
var desired = desiredValues == null ? new List<int>() : new List<int>( desiredValues );
7763

78-
_builder.Build<RootProperties>(null, out var target);
79-
64+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
8065
target.Should().NotBeNull();
8166

8267
var option = target!.Bind( x => RootProperties.IntArray, "x" );
@@ -111,8 +96,7 @@ public void Simple_property_list(
11196
{
11297
var desired = desiredValues == null ? new List<int>() : new List<int>( desiredValues );
11398

114-
_builder.Build<RootProperties>(null, out var target);
115-
99+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
116100
target.Should().NotBeNull();
117101

118102
var option = target!.Bind( x => RootProperties.IntList, "x" );
@@ -144,8 +128,7 @@ public void Num_parameters_list(
144128
int maxArgs,
145129
MappingResults result )
146130
{
147-
_builder.Build<RootProperties>(null, out var target);
148-
131+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
149132
target.Should().NotBeNull();
150133

151134
var option = target!.Bind( x => RootProperties.IntList, "x" );
@@ -184,8 +167,7 @@ public void Num_parameters_array(
184167
int maxArgs,
185168
MappingResults result )
186169
{
187-
_builder.Build<RootProperties>(null, out var target);
188-
170+
var target = ServiceProvider.GetBindingTarget<RootProperties>(true);
189171
target.Should().NotBeNull();
190172

191173
var option = target!.Bind( x => RootProperties.IntArray, "x" );

0 commit comments

Comments
 (0)