A game about forced loneliness, made by TACStudios
1using System;
2using System.Reflection;
3using System.Text;
4using NUnit.Framework.Interfaces;
5using UnityEngine.TestRunner.NUnitExtensions.Runner;
6
7namespace UnityEngine.TestTools
8{
9 [Serializable]
10 internal class BeforeAfterTestCommandState
11 {
12 private const BindingFlags Flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy;
13 public int NextBeforeStepIndex;
14 public int NextBeforeStepPc;
15 public int NextAfterStepIndex;
16 public int NextAfterStepPc;
17 public bool TestHasRun;
18 public TestStatus CurrentTestResultStatus;
19 public string CurrentTestResultLabel;
20 public FailureSite CurrentTestResultSite;
21 public string CurrentTestMessage;
22 public string CurrentTestStrackTrace;
23 public bool TestAfterStarted;
24 public string Output;
25 public long StartTicks;
26 public double StartTimeOA;
27 public bool ShouldRestore;
28
29 public void Reset()
30 {
31 NextBeforeStepIndex = 0;
32 NextBeforeStepPc = 0;
33 NextAfterStepIndex = 0;
34 NextAfterStepPc = 0;
35 TestHasRun = false;
36 CurrentTestResultStatus = TestStatus.Inconclusive;
37 CurrentTestResultLabel = null;
38 CurrentTestResultSite = default(FailureSite);
39 CurrentTestMessage = null;
40 CurrentTestStrackTrace = null;
41 TestAfterStarted = false;
42 Output = null;
43 StartTicks = 0;
44 StartTimeOA = 0;
45 ShouldRestore = false;
46 }
47
48 public void StoreContext(UnityTestExecutionContext context)
49 {
50 var result = context.CurrentResult;
51 CurrentTestResultStatus = result.ResultState.Status;
52 CurrentTestResultLabel = result.ResultState.Label;
53 CurrentTestResultSite = result.ResultState.Site;
54 CurrentTestMessage = result.Message;
55 CurrentTestStrackTrace = result.StackTrace;
56 Output = result.Output;
57 StartTicks = context.StartTicks;
58 StartTimeOA = context.StartTime.ToOADate();
59 ShouldRestore = true;
60 }
61
62 public void ApplyContext(UnityTestExecutionContext context)
63 {
64 var outputProp = context.CurrentResult.GetType().BaseType.GetField("_output", Flags);
65 var stringBuilder = (outputProp.GetValue(context.CurrentResult) as StringBuilder);
66 stringBuilder.Clear();
67 stringBuilder.Append(Output);
68 context.StartTicks = StartTicks;
69 context.StartTime = DateTime.FromOADate(StartTimeOA);
70 context.CurrentResult.SetResult(new ResultState(CurrentTestResultStatus, CurrentTestResultLabel, CurrentTestResultSite), CurrentTestMessage, CurrentTestStrackTrace);
71 ShouldRestore = false;
72 }
73 }
74}