using System.Reflection; using AutoFixture; using Bit.Test.Common.Helpers; using Xunit; using Xunit.Sdk; using Xunit.v3; namespace Bit.Test.Common.AutoFixture.Attributes; public class BitAutoDataAttribute : DataAttribute { private readonly Func _createFixture; private readonly object?[] _fixedTestParameters; public BitAutoDataAttribute() : this(Array.Empty()) { } public BitAutoDataAttribute(params object?[] fixedTestParameters) : this(() => new Fixture(), fixedTestParameters) { } public BitAutoDataAttribute(Func createFixture, params object?[] fixedTestParameters) : base() { _createFixture = createFixture; _fixedTestParameters = fixedTestParameters; } protected IEnumerable GetDataCore(MethodInfo testMethod) { return BitAutoDataAttributeHelpers.GetData(testMethod, _createFixture(), _fixedTestParameters); } public override ValueTask> GetData(MethodInfo testMethod, DisposalTracker disposalTracker) { var theoryData = new List(); var data = GetDataCore(testMethod); foreach (var dataRow in data) { theoryData.Add(new TheoryDataRow(dataRow)); } return new(theoryData); } public override bool SupportsDiscoveryEnumeration() => false; }