Maze / Library /PackageCache /com.unity.test-framework@1.1.33 /UnityEngine.TestRunner /NUnitExtensions /BaseDelegator.cs
| using System; | |
| using System.Threading; | |
| using NUnit.Framework.Internal; | |
| namespace UnityEngine.TestTools.NUnitExtensions | |
| { | |
| internal abstract class BaseDelegator | |
| { | |
| protected ManualResetEvent m_Signal = new ManualResetEvent(false); | |
| protected object m_Result; | |
| protected Exception m_Exception; | |
| protected ITestExecutionContext m_Context; | |
| protected bool m_Aborted; | |
| protected object HandleResult() | |
| { | |
| SetCurrentTestContext(); | |
| if (m_Exception != null) | |
| { | |
| var temp = m_Exception; | |
| m_Exception = null; | |
| throw temp; | |
| } | |
| var tempResult = m_Result; | |
| m_Result = null; | |
| return tempResult; | |
| } | |
| protected void WaitForSignal() | |
| { | |
| while (!m_Signal.WaitOne(100)) | |
| { | |
| if (m_Aborted) | |
| { | |
| m_Aborted = false; | |
| Reflect.MethodCallWrapper = null; | |
| throw new Exception(); | |
| } | |
| } | |
| } | |
| public void Abort() | |
| { | |
| m_Aborted = true; | |
| } | |
| protected void SetCurrentTestContext() | |
| { | |
| var prop = typeof(TestExecutionContext).GetProperty("CurrentContext"); | |
| if (prop != null) | |
| { | |
| prop.SetValue(null, m_Context, null); | |
| } | |
| } | |
| } | |
| } | |