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}