12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- 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);
- }
- }
- }
- }
|