75 lines
2.8 KiB
C#
75 lines
2.8 KiB
C#
|
using System;
|
||
|
using System.Reflection;
|
||
|
using System.Text;
|
||
|
using NUnit.Framework.Interfaces;
|
||
|
using UnityEngine.TestRunner.NUnitExtensions.Runner;
|
||
|
|
||
|
namespace UnityEngine.TestTools
|
||
|
{
|
||
|
[Serializable]
|
||
|
internal class BeforeAfterTestCommandState
|
||
|
{
|
||
|
private const BindingFlags Flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy;
|
||
|
public int NextBeforeStepIndex;
|
||
|
public int NextBeforeStepPc;
|
||
|
public int NextAfterStepIndex;
|
||
|
public int NextAfterStepPc;
|
||
|
public bool TestHasRun;
|
||
|
public TestStatus CurrentTestResultStatus;
|
||
|
public string CurrentTestResultLabel;
|
||
|
public FailureSite CurrentTestResultSite;
|
||
|
public string CurrentTestMessage;
|
||
|
public string CurrentTestStrackTrace;
|
||
|
public bool TestAfterStarted;
|
||
|
public string Output;
|
||
|
public long StartTicks;
|
||
|
public double StartTimeOA;
|
||
|
public bool ShouldRestore;
|
||
|
|
||
|
public void Reset()
|
||
|
{
|
||
|
NextBeforeStepIndex = 0;
|
||
|
NextBeforeStepPc = 0;
|
||
|
NextAfterStepIndex = 0;
|
||
|
NextAfterStepPc = 0;
|
||
|
TestHasRun = false;
|
||
|
CurrentTestResultStatus = TestStatus.Inconclusive;
|
||
|
CurrentTestResultLabel = null;
|
||
|
CurrentTestResultSite = default(FailureSite);
|
||
|
CurrentTestMessage = null;
|
||
|
CurrentTestStrackTrace = null;
|
||
|
TestAfterStarted = false;
|
||
|
Output = null;
|
||
|
StartTicks = 0;
|
||
|
StartTimeOA = 0;
|
||
|
ShouldRestore = false;
|
||
|
}
|
||
|
|
||
|
public void StoreContext(UnityTestExecutionContext context)
|
||
|
{
|
||
|
var result = context.CurrentResult;
|
||
|
CurrentTestResultStatus = result.ResultState.Status;
|
||
|
CurrentTestResultLabel = result.ResultState.Label;
|
||
|
CurrentTestResultSite = result.ResultState.Site;
|
||
|
CurrentTestMessage = result.Message;
|
||
|
CurrentTestStrackTrace = result.StackTrace;
|
||
|
Output = result.Output;
|
||
|
StartTicks = context.StartTicks;
|
||
|
StartTimeOA = context.StartTime.ToOADate();
|
||
|
ShouldRestore = true;
|
||
|
}
|
||
|
|
||
|
public void ApplyContext(UnityTestExecutionContext context)
|
||
|
{
|
||
|
var outputProp = context.CurrentResult.GetType().BaseType.GetField("_output", Flags);
|
||
|
var stringBuilder = (outputProp.GetValue(context.CurrentResult) as StringBuilder);
|
||
|
stringBuilder.Clear();
|
||
|
stringBuilder.Append(Output);
|
||
|
context.StartTicks = StartTicks;
|
||
|
context.StartTime = DateTime.FromOADate(StartTimeOA);
|
||
|
context.CurrentResult.SetResult(new ResultState(CurrentTestResultStatus, CurrentTestResultLabel, CurrentTestResultSite), CurrentTestMessage, CurrentTestStrackTrace);
|
||
|
ShouldRestore = false;
|
||
|
}
|
||
|
}
|
||
|
}
|