TestCaseParameters
The TestCaseParameters class encapsulates method arguments and
other selected parameters needed for constructing
a parameterized test case.
using NUnit.Framework.Interfaces;
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace NUnit.Framework.Internal
{
public class TestCaseParameters : TestParameters, ITestCaseData, ITestData, IApplyToTest
{
[System.Runtime.CompilerServices.Nullable(2)]
private object _expectedResult;
[System.Runtime.CompilerServices.Nullable(2)]
public object ExpectedResult {
[System.Runtime.CompilerServices.NullableContext(2)]
get {
return _expectedResult;
}
[System.Runtime.CompilerServices.NullableContext(2)]
set {
_expectedResult = value;
HasExpectedResult = true;
}
}
public bool HasExpectedResult { get; set; }
[System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
[field: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
public Type[] TypeArgs {
[return: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
get;
[param: System.Runtime.CompilerServices.Nullable(new byte[] {
2,
1
})]
set;
}
public TestCaseParameters()
{
}
[System.Runtime.CompilerServices.NullableContext(1)]
public TestCaseParameters(Exception exception)
: base(exception)
{
}
public TestCaseParameters([System.Runtime.CompilerServices.Nullable(new byte[] {
1,
2
})] object[] args)
: base(args)
{
}
[System.Runtime.CompilerServices.NullableContext(1)]
public TestCaseParameters(ITestCaseData data)
: base(data)
{
if (data.HasExpectedResult)
ExpectedResult = data.ExpectedResult;
}
[System.Runtime.CompilerServices.NullableContext(1)]
public TestCaseParameters(TestCaseParameters data)
: base(data)
{
if (data.HasExpectedResult)
ExpectedResult = data.ExpectedResult;
TypeArgs = data.TypeArgs;
}
[System.Runtime.CompilerServices.NullableContext(1)]
internal void AdjustArgumentsForMethod(IMethodInfo method)
{
ParameterInfo[] parameters = method.MethodInfo.GetParameters();
int num = parameters.Length;
int num2 = base.Arguments.Length;
if (HasExpectedResult && ParamAttributeTypeConversions.TryConvert(ExpectedResult, method.ReturnType.Type, out object convertedValue))
ExpectedResult = convertedValue;
if (parameters.Length != 0) {
base.Arguments = Reflect.PopulateOptionalArgsAndParamsArray(method.MethodInfo, TypeArgs, base.Arguments, parameters);
num2 = num;
}
if (num == 1 && parameters[0].ParameterType == typeof(object[]) && (num2 > 1 || (num2 == 1 && base.Arguments[0]?.GetType() != typeof(object[]))))
base.Arguments = new object[1] {
base.Arguments
};
if (num2 == num) {
for (int i = 0; i < base.Arguments.Length; i++) {
object value = base.Arguments[i];
Type parameterType = parameters[i].ParameterType;
if (ParamAttributeTypeConversions.TryConvert(value, parameterType, out object convertedValue2))
base.Arguments[i] = convertedValue2;
}
}
}
}
}