Пример #1
0
 public TestJobRunner(TestJobData data)
 {
     m_JobData  = data;
     m_PcHelper = new EditModePcHelper();
     Tasks      = GetTaskList(data.executionSettings).ToArray();
     EditorApplication.update += ExecuteStep;
 }
Пример #2
0
        public string RunJob(TestJobData data)
        {
            if (data == null)
            {
                throw new ArgumentException(null, nameof(data));
            }

            if (m_JobData != null && m_JobData.isRunning)
            {
                throw new Exception("TestJobRunner is already running a job.");
            }

            if (data.isHandledByRunner)
            {
                throw new Exception("Test job is already being handled.");
            }

            m_JobData = data;
            m_JobData.isHandledByRunner = true;

            if (!m_JobData.isRunning)
            {
                m_JobData.isRunning = true;
                SavedTestJobData.Add(m_JobData);
            }

            Tasks = GetTasks(data.executionSettings).ToArray();
            if (!data.executionSettings.runSynchronously)
            {
                SubscribeCallback(ExecuteStep);
            }
            else
            {
                while (data.isRunning)
                {
                    ExecuteStep();
                }
            }

            return(data.guid);
        }
Пример #3
0
        public void RunJob(TestJobData data)
        {
            if (data == null)
            {
                throw new ArgumentException(null, nameof(data));
            }

            if (data.taskInfoStack == null)
            {
                throw new ArgumentException($"{nameof(data.taskInfoStack)} on {nameof(TestJobData)} is null.", nameof(data));
            }

            if (IsRunningJob())
            {
                throw new Exception("TestJobRunner is already running a job.");
            }

            if (data.isHandledByRunner)
            {
                throw new Exception("Test job is already being handled.");
            }

            m_JobData = data;
            m_JobData.isHandledByRunner = true;

            if (!IsRunningJob())
            {
                m_JobData.isRunning = true;
                m_JobData.taskInfoStack.Push(new TestJobData.TaskInfo());
                RegisterRun(this, m_JobData);
            }
            else // Is resuming run
            {
                var taskInfoBeforeResuming = m_JobData.taskInfoStack.Peek();
                if (taskInfoBeforeResuming.taskMode != TestJobData.TaskMode.Resume)
                {
                    m_JobData.taskInfoStack.Push(new TestJobData.TaskInfo
                    {
                        taskMode        = TestJobData.TaskMode.Resume,
                        index           = 0,
                        stopBeforeIndex = taskInfoBeforeResuming.index
                    });
                }
                else
                {
                    taskInfoBeforeResuming.index = 0;
                }
            }

            m_JobData.Tasks = GetTasks(data.executionSettings).ToArray();

            if (!data.executionSettings.runSynchronously)
            {
                SubscribePlayModeStateChanged(PlaymodeStateChanged);
                SubscribeCallback(ExecuteCallback);
            }
            else
            {
                while (data.isRunning)
                {
                    ExecuteStep();
                }
            }
        }
Пример #4
0
 public void UnregisterRun(TestJobRunner runner, TestJobData data)
 {
     TestRuns.Remove(data);
     m_Runners.Remove(data.guid);
 }
Пример #5
0
 public void RegisterRun(TestJobRunner runner, TestJobData data)
 {
     TestRuns.Add(data);
     m_Runners.Add(data.guid, runner);
 }