using System; using System.Collections; using NUnit.Framework.Internal; using UnityEngine.TestTools.NUnitExtensions; namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks { internal class SetupConstructDelegatorTask : TestTaskBase { internal Func CreateConstructDelegator = stateSerializer => new ConstructDelegator(stateSerializer); internal Action> SetConstructorCallWrapper = func => Reflect.ConstructorCallWrapper = func; public SetupConstructDelegatorTask() { RerunAfterResume = true; } public override IEnumerator Execute(TestJobData testJobData) { var taskInfo = testJobData.taskInfoStack.Peek(); if (taskInfo.taskMode == TaskMode.Normal) { testJobData.testRunnerStateSerializer = new TestRunnerStateSerializer(); } testJobData.ConstructDelegator = CreateConstructDelegator(testJobData.testRunnerStateSerializer); SetConstructorCallWrapper(testJobData.ConstructDelegator.Delegate); yield break; } } }