A game about forced loneliness, made by TACStudios
1using System; 2using System.Collections; 3using System.Collections.Generic; 4using System.Linq; 5using NUnit.Framework.Interfaces; 6using UnityEngine; 7 8namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks 9{ 10 internal class InitializeTestProgressTask : TestTaskBase 11 { 12 public InitializeTestProgressTask() 13 { 14 RerunAfterResume = true; 15 } 16 17 public override IEnumerator Execute(TestJobData testJobData) 18 { 19 testJobData.TestStartedEvent.AddListener(test => OnTestStarted(test, testJobData)); 20 testJobData.TestFinishedEvent.AddListener(test => OnTestFinished(test, testJobData)); 21 22 if (testJobData.taskInfoStack.Peek().taskMode == TaskMode.Resume) 23 { 24 yield break; 25 } 26 27 if (testJobData.testTree == null) 28 { 29 throw new RequiredTestRunDataMissingException(nameof(testJobData.testTree)); 30 } 31 32 var allTests = 33 GetTestsExpectedToRun(testJobData.testTree, testJobData.executionSettings.BuildNUnitFilter()); 34 testJobData.testProgress = new TestProgress(allTests.ToArray()); 35 var numTasks = testJobData.Tasks.Count(); 36 var numTests = testJobData.testProgress.AllTestsToRun.Length; 37 var progressAvailableToTests = 1.0f - numTasks * RunProgress.progressPrTask; 38 39 if (numTests > 0) 40 { 41 testJobData.runProgress.progressPrTest = progressAvailableToTests / numTests; 42 } 43 } 44 45 private void OnTestStarted(ITest test, TestJobData data) 46 { 47 if (!test.IsSuite) 48 { 49 data.runProgress.stepName = test.Name; 50 } 51 } 52 53 private void OnTestFinished(ITestResult result, TestJobData data) 54 { 55 if (!result.Test.IsSuite) 56 { 57 data.runProgress.progress += data.runProgress.progressPrTest; 58 } 59 } 60 61 private static List<string> GetTestsExpectedToRun(ITest test, ITestFilter filter) 62 { 63 var expectedTests = new List<string>(); 64 65 if (filter.Pass(test)) 66 { 67 if (test.IsSuite) 68 { 69 expectedTests.AddRange(test.Tests.SelectMany(subTest => GetTestsExpectedToRun(subTest, filter))); 70 } 71 else 72 { 73 expectedTests.Add(test.FullName); 74 } 75 } 76 77 return expectedTests; 78 } 79 } 80}