A game about forced loneliness, made by TACStudios
1using System.Collections; 2using System.Diagnostics; 3using System.Reflection; 4using NUnit.Framework.Interfaces; 5using NUnit.Framework.Internal; 6using NUnit.Framework.Internal.Commands; 7using UnityEngine.TestRunner.NUnitExtensions.Runner; 8 9namespace UnityEngine.TestTools 10{ 11 internal class EnumerableMaxTimeCommand : DelegatingTestCommand, IEnumerableTestMethodCommand 12 { 13 private int maxTime; 14 public EnumerableMaxTimeCommand(MaxTimeCommand commandToReplace) : base(commandToReplace.GetInnerCommand()) 15 { 16 maxTime = (int)typeof(MaxTimeCommand) 17 .GetField("maxTime", BindingFlags.NonPublic | BindingFlags.Instance) 18 .GetValue(commandToReplace); 19 } 20 21 public override TestResult Execute(ITestExecutionContext context) 22 { 23 throw new System.NotImplementedException("Use ExecuteEnumerable"); 24 } 25 26 public IEnumerable ExecuteEnumerable(ITestExecutionContext context) 27 { 28 long timestamp = Stopwatch.GetTimestamp(); 29 30 if (innerCommand is IEnumerableTestMethodCommand) 31 { 32 var executeEnumerable = ((IEnumerableTestMethodCommand)innerCommand).ExecuteEnumerable(context); 33 foreach (var iterator in executeEnumerable) 34 { 35 yield return iterator; 36 } 37 } 38 else 39 { 40 context.CurrentResult = innerCommand.Execute(context); 41 } 42 43 var duration = (Stopwatch.GetTimestamp() - timestamp) / (double) Stopwatch.Frequency; 44 var testResult = context.CurrentResult; 45 testResult.Duration = duration; 46 if (testResult.ResultState == ResultState.Success) 47 { 48 var durationInMilliseconds = duration * 1000.0; 49 if (durationInMilliseconds > maxTime) 50 testResult.SetResult(ResultState.Failure, string.Format("Elapsed time of {0}ms exceeds maximum of {1}ms", (object) durationInMilliseconds, (object) this.maxTime)); 51 } 52 } 53 } 54}