No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BeforeAfterTestCommandState.cs 2.8KB

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