Maze / Library /PackageCache /com.unity.test-framework@1.1.33 /UnityEditor.TestRunner /TestResultSerializer.cs
| using System; | |
| using System.Reflection; | |
| using System.Text; | |
| using NUnit.Framework.Interfaces; | |
| using NUnit.Framework.Internal; | |
| using UnityEngine; | |
| using UnityEngine.TestRunner.NUnitExtensions; | |
| namespace UnityEditor.TestTools.TestRunner | |
| { | |
| [] | |
| internal class TestResultSerializer | |
| { | |
| private static readonly BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | | |
| BindingFlags.Instance | BindingFlags.FlattenHierarchy; | |
| [] public string id; | |
| [] public string fullName; | |
| [] private double duration; | |
| [] private string label; | |
| [] private string message; | |
| [] private string output; | |
| [] private string site; | |
| [] private string stacktrace; | |
| [] private double startTimeAO; | |
| [] private double endTimeAO; | |
| [] private string status; | |
| [] public string uniqueName; | |
| public static TestResultSerializer MakeFromTestResult(ITestResult result) | |
| { | |
| var wrapper = new TestResultSerializer(); | |
| wrapper.id = result.Test.Id; | |
| wrapper.fullName = result.FullName; | |
| wrapper.status = result.ResultState.Status.ToString(); | |
| wrapper.label = result.ResultState.Label; | |
| wrapper.site = result.ResultState.Site.ToString(); | |
| wrapper.output = result.Output; | |
| wrapper.duration = result.Duration; | |
| wrapper.stacktrace = result.StackTrace; | |
| wrapper.message = result.Message; | |
| wrapper.startTimeAO = result.StartTime.ToOADate(); | |
| wrapper.endTimeAO = result.EndTime.ToOADate(); | |
| wrapper.uniqueName = result.Test.GetUniqueName(); | |
| return wrapper; | |
| } | |
| public void RestoreTestResult(TestResult result) | |
| { | |
| var resultState = new ResultState((TestStatus)Enum.Parse(typeof(TestStatus), status), label, | |
| (FailureSite)Enum.Parse(typeof(FailureSite), site)); | |
| var baseType = result.GetType().BaseType; | |
| baseType.GetField("_resultState", flags).SetValue(result, resultState); | |
| baseType.GetField("_output", flags).SetValue(result, new StringBuilder(output)); | |
| baseType.GetField("_duration", flags).SetValue(result, duration); | |
| if (!string.IsNullOrEmpty(message)) | |
| { | |
| baseType.GetField("_message", flags).SetValue(result, message); | |
| } | |
| baseType.GetField("_stackTrace", flags).SetValue(result, stacktrace); | |
| baseType.GetProperty("StartTime", flags) | |
| .SetValue(result, DateTime.FromOADate(startTimeAO), null); | |
| baseType.GetProperty("EndTime", flags) | |
| .SetValue(result, DateTime.FromOADate(endTimeAO), null); | |
| } | |
| public bool IsPassed() | |
| { | |
| return status == TestStatus.Passed.ToString(); | |
| } | |
| } | |
| } | |