Skip to content

Commit 4a57e5e

Browse files
committed
fix: memberdata removes parameters with same values
The current MemberAutoNSubstituteDataAttribute implementation uses Union to merge parameters form a MemberData paramters and AutoFixtured and NSubstituted parameters. But Union has the side effect of removing duplicate values. Replace Union with Concat instead.
1 parent edb3c01 commit 4a57e5e

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/Atc.Test/MemberAutoNSubstituteDataAttribute.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected override object[] ConvertDataItem(MethodInfo testMethod, object item)
3333
var fixture = FixtureFactory.Create();
3434

3535
return values
36-
.Union(testMethod
36+
.Concat(testMethod
3737
.GetParameters()
3838
.Skip(values.Length)
3939
.Select(p => GetSpecimen(fixture, p)))

test/Atc.Test.Tests/MemberAutoNSubstituteDataAttributeTests.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,29 @@ public void MemberAutoNSubstituteData_Should_Call_For_Each_Value(
2525
dependantType.Should().NotBeNull();
2626
dependantType.Dependency.Should().Be(interfaceType);
2727
}
28+
29+
public static readonly IEnumerable<object[]> TestDataMultiple = new[]
30+
{
31+
new object[] { SampleEnum.One, SampleEnum.Two },
32+
new object[] { SampleEnum.One, SampleEnum.One },
33+
};
34+
35+
[Theory]
36+
[MemberAutoNSubstituteData(nameof(TestDataMultiple))]
37+
public void MemberAutoNSubstituteData_Should_Call_For_Each_Value_Mutliple(
38+
SampleEnum value1,
39+
SampleEnum value2,
40+
[Frozen] ISampleInterface interfaceType,
41+
SampleClass concreteType,
42+
SampleDependantClass dependantType)
43+
{
44+
value1.Should().BeOneOf(SampleEnum.One, SampleEnum.Two, SampleEnum.Three);
45+
value2.Should().BeOneOf(SampleEnum.One, SampleEnum.Two, SampleEnum.Three);
46+
interfaceType.Should().NotBeNull();
47+
interfaceType.IsSubstitute().Should().BeTrue();
48+
concreteType.Should().NotBeNull();
49+
concreteType.IsSubstitute().Should().BeFalse();
50+
dependantType.Should().NotBeNull();
51+
dependantType.Dependency.Should().Be(interfaceType);
52+
}
2853
}

0 commit comments

Comments
 (0)