File size: 1,742 Bytes
18a519f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | using System;
using System.Collections;
using System.Reflection;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using NUnit.Framework.Internal;
namespace UnityEngine.TestTools.TestRunner
{
internal class TestEnumeratorWrapper
{
private readonly TestMethod m_TestMethod;
public TestEnumeratorWrapper(TestMethod testMethod)
{
m_TestMethod = testMethod;
}
public IEnumerator GetEnumerator(ITestExecutionContext context)
{
if (m_TestMethod.Method.ReturnType.Type == typeof(IEnumerator))
{
return HandleEnumerableTest(context);
}
var message = string.Format("Return type {0} of {1} in {2} is not supported.",
m_TestMethod.Method.ReturnType, m_TestMethod.Method.Name, m_TestMethod.Method.TypeInfo.FullName);
if (m_TestMethod.Method.ReturnType.Type == typeof(IEnumerable))
{
message += "\nDid you mean IEnumerator?";
}
throw new InvalidSignatureException(message);
}
private IEnumerator HandleEnumerableTest(ITestExecutionContext context)
{
try
{
return m_TestMethod.Method.MethodInfo.Invoke(context.TestObject, m_TestMethod.parms != null ? m_TestMethod.parms.OriginalArguments : null) as IEnumerator;
}
catch (TargetInvocationException e)
{
if (e.InnerException is IgnoreException)
{
context.CurrentResult.SetResult(ResultState.Ignored, e.InnerException.Message);
return null;
}
throw;
}
}
}
}
|