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}