Skip to content

Commit d96a4a7

Browse files
committed
fix UseParameters and params string[] values throws
fixes #532
1 parent 2e97023 commit d96a4a7

File tree

6 files changed

+49
-0
lines changed

6 files changed

+49
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
value
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
value

src/Verify.Tests/Naming/NamerTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,13 @@ await Verify("value")
362362

363363
#endregion
364364

365+
[Theory]
366+
[InlineData("One")]
367+
[InlineData("foo", "bar", "baz")]
368+
public async Task TheoryWithArray(params string[] values) =>
369+
await Verify("value")
370+
.UseParameters(values);
371+
365372
[Fact]
366373
public async Task IgnoreParametersForVerified()
367374
{

src/Verify/Naming/ParameterSettings.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@ public partial class VerifySettings
1010
/// When this is not possible, an exception will be thrown instructing the use of <see cref="UseParameters" />
1111
/// Not compatible with <see cref="UseTextForParameters" />.
1212
/// </summary>
13+
public void UseParameters<T>(params T[] parameters) =>
14+
UseParameters(
15+
new object?[]
16+
{
17+
parameters
18+
});
19+
20+
public void UseParameters<T>(T parameter) =>
21+
UseParameters(
22+
new object?[]
23+
{
24+
parameter
25+
});
26+
1327
public void UseParameters(params object?[] parameters)
1428
{
1529
Guard.AgainstNullOrEmpty(parameters, nameof(parameters));

src/Verify/Naming/VerifierSettings.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,20 @@ internal static string GetNameForParameter(object? parameter)
116116
}
117117
}
118118

119+
if (parameter is IEnumerable enumerable &&
120+
parameter.GetType().IsCollection())
121+
{
122+
var innerBuilder = new StringBuilder();
123+
foreach (var item in enumerable)
124+
{
125+
innerBuilder.Append(GetNameForParameter(item));
126+
innerBuilder.Append(',');
127+
}
128+
innerBuilder.Length--;
129+
130+
return innerBuilder.ToString();
131+
}
132+
119133
var nameForParameter = parameter.ToString();
120134
// ReSharper disable once ConditionIsAlwaysTrueOrFalse
121135
if (nameForParameter is null)

src/Verify/SettingsTask.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,18 @@ public SettingsTask UseParameters(params object?[] parameters)
7777
return this;
7878
}
7979

80+
public SettingsTask UseParameters<T>(T parameter)
81+
{
82+
CurrentSettings.UseParameters(parameter);
83+
return this;
84+
}
85+
86+
public SettingsTask UseParameters<T>(T[] parameters)
87+
{
88+
CurrentSettings.UseParameters(parameters);
89+
return this;
90+
}
91+
8092
/// <summary>
8193
/// Modify the resulting test content using custom code.
8294
/// </summary>

0 commit comments

Comments
 (0)