Skip to content

Commit

Permalink
fix UseParameters and params string[] values throws
Browse files Browse the repository at this point in the history
fixes #532
  • Loading branch information
SimonCropp committed Jun 2, 2022
1 parent 2e97023 commit d96a4a7
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
value
7 changes: 7 additions & 0 deletions src/Verify.Tests/Naming/NamerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,13 @@ await Verify("value")

#endregion

[Theory]
[InlineData("One")]
[InlineData("foo", "bar", "baz")]
public async Task TheoryWithArray(params string[] values) =>
await Verify("value")
.UseParameters(values);

[Fact]
public async Task IgnoreParametersForVerified()
{
Expand Down
14 changes: 14 additions & 0 deletions src/Verify/Naming/ParameterSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,20 @@ public partial class VerifySettings
/// When this is not possible, an exception will be thrown instructing the use of <see cref="UseParameters" />
/// Not compatible with <see cref="UseTextForParameters" />.
/// </summary>
public void UseParameters<T>(params T[] parameters) =>
UseParameters(
new object?[]
{
parameters
});

public void UseParameters<T>(T parameter) =>
UseParameters(
new object?[]
{
parameter
});

public void UseParameters(params object?[] parameters)
{
Guard.AgainstNullOrEmpty(parameters, nameof(parameters));
Expand Down
14 changes: 14 additions & 0 deletions src/Verify/Naming/VerifierSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,20 @@ internal static string GetNameForParameter(object? parameter)
}
}

if (parameter is IEnumerable enumerable &&
parameter.GetType().IsCollection())
{
var innerBuilder = new StringBuilder();
foreach (var item in enumerable)
{
innerBuilder.Append(GetNameForParameter(item));
innerBuilder.Append(',');
}
innerBuilder.Length--;

return innerBuilder.ToString();
}

var nameForParameter = parameter.ToString();
// ReSharper disable once ConditionIsAlwaysTrueOrFalse
if (nameForParameter is null)
Expand Down
12 changes: 12 additions & 0 deletions src/Verify/SettingsTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,18 @@ public SettingsTask UseParameters(params object?[] parameters)
return this;
}

public SettingsTask UseParameters<T>(T parameter)
{
CurrentSettings.UseParameters(parameter);
return this;
}

public SettingsTask UseParameters<T>(T[] parameters)
{
CurrentSettings.UseParameters(parameters);
return this;
}

/// <summary>
/// Modify the resulting test content using custom code.
/// </summary>
Expand Down

0 comments on commit d96a4a7

Please sign in to comment.