<PackageReference Include="NUnit" Version="3.11.0" />

ValuesAttribute

Provides literal arguments for an individual parameter of a test.
using NUnit.Compatibility; using NUnit.Framework.Interfaces; using NUnit.Framework.Internal; using System; using System.Collections; namespace NUnit.Framework { [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)] public class ValuesAttribute : NUnitAttribute, IParameterDataSource { protected object[] data; public ValuesAttribute() { data = new object[0]; } public ValuesAttribute(object arg1) { data = new object[1] { arg1 }; } public ValuesAttribute(object arg1, object arg2) { data = new object[2] { arg1, arg2 }; } public ValuesAttribute(object arg1, object arg2, object arg3) { data = new object[3] { arg1, arg2, arg3 }; } public ValuesAttribute(params object[] args) { data = (args ?? new object[1]); } public IEnumerable GetData(IParameterInfo parameter) { if (data.Length == 0) return GenerateData(parameter.ParameterType); return ParamAttributeTypeConversions.ConvertData(data, parameter.ParameterType); } private static IEnumerable GenerateData(Type targetType) { if (IsNullableEnum(targetType)) { Array values = Enum.GetValues(Nullable.GetUnderlyingType(targetType)); object[] array = new object[values.Length + 1]; Array.Copy(values, array, values.Length); return array; } if (targetType.GetTypeInfo().IsEnum) return Enum.GetValues(targetType); if (targetType == typeof(bool?)) return new object[3] { null, true, false }; if (targetType == typeof(bool)) return new object[2] { true, false }; return new object[0]; } private static bool IsNullableEnum(Type t) { Type underlyingType = Nullable.GetUnderlyingType(t); if (underlyingType != (Type)null) return underlyingType.GetTypeInfo().IsEnum; return false; } } }