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.
176 lines
4.4 KiB
176 lines
4.4 KiB
using System; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
#if UNITY_5_3_OR_NEWER |
|
using UnityEngine.SceneManagement; |
|
#endif |
|
|
|
namespace UnityTest |
|
{ |
|
[Serializable] |
|
public class ResultDTO |
|
{ |
|
public MessageType messageType; |
|
public int levelCount; |
|
public int loadedLevel; |
|
public string loadedLevelName; |
|
public string testName; |
|
public float testTimeout; |
|
public ITestResult testResult; |
|
|
|
private ResultDTO(MessageType messageType) |
|
{ |
|
this.messageType = messageType; |
|
#if UNITY_5_3_OR_NEWER |
|
levelCount = UnityEngine.SceneManagement.SceneManager.sceneCount; |
|
loadedLevel = UnityEngine.SceneManagement.SceneManager.GetActiveScene().buildIndex; |
|
loadedLevelName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name; |
|
#else |
|
levelCount = Application.levelCount; |
|
loadedLevel = Application.loadedLevel; |
|
loadedLevelName = Application.loadedLevelName; |
|
#endif |
|
} |
|
|
|
public enum MessageType : byte |
|
{ |
|
Ping, |
|
RunStarted, |
|
RunFinished, |
|
TestStarted, |
|
TestFinished, |
|
RunInterrupted, |
|
AllScenesFinished |
|
} |
|
|
|
public static ResultDTO CreatePing() |
|
{ |
|
var dto = new ResultDTO(MessageType.Ping); |
|
return dto; |
|
} |
|
|
|
public static ResultDTO CreateRunStarted() |
|
{ |
|
var dto = new ResultDTO(MessageType.RunStarted); |
|
return dto; |
|
} |
|
|
|
public static ResultDTO CreateRunFinished(List<TestResult> testResults) |
|
{ |
|
var dto = new ResultDTO(MessageType.RunFinished); |
|
return dto; |
|
} |
|
|
|
public static ResultDTO CreateTestStarted(TestResult test) |
|
{ |
|
var dto = new ResultDTO(MessageType.TestStarted); |
|
dto.testName = test.FullName; |
|
dto.testTimeout = test.TestComponent.timeout; |
|
return dto; |
|
} |
|
|
|
public static ResultDTO CreateTestFinished(TestResult test) |
|
{ |
|
var dto = new ResultDTO(MessageType.TestFinished); |
|
dto.testName = test.FullName; |
|
dto.testResult = GetSerializableTestResult(test); |
|
return dto; |
|
} |
|
|
|
public static ResultDTO CreateAllScenesFinished() |
|
{ |
|
var dto = new ResultDTO(MessageType.AllScenesFinished); |
|
return dto; |
|
} |
|
|
|
private static ITestResult GetSerializableTestResult(TestResult test) |
|
{ |
|
var str = new SerializableTestResult(); |
|
|
|
str.resultState = test.ResultState; |
|
str.message = test.messages; |
|
str.executed = test.Executed; |
|
str.name = test.Name; |
|
str.fullName = test.FullName; |
|
str.id = test.id; |
|
str.isSuccess = test.IsSuccess; |
|
str.duration = test.duration; |
|
str.stackTrace = test.stacktrace; |
|
str.isIgnored = test.IsIgnored; |
|
|
|
return str; |
|
} |
|
} |
|
|
|
#region SerializableTestResult |
|
[Serializable] |
|
internal class SerializableTestResult : ITestResult |
|
{ |
|
public TestResultState resultState; |
|
public string message; |
|
public bool executed; |
|
public string name; |
|
public string fullName; |
|
public string id; |
|
public bool isSuccess; |
|
public double duration; |
|
public string stackTrace; |
|
public bool isIgnored; |
|
|
|
public TestResultState ResultState |
|
{ |
|
get { return resultState; } |
|
} |
|
|
|
public string Message |
|
{ |
|
get { return message; } |
|
} |
|
|
|
public string Logs |
|
{ |
|
get { return null; } |
|
} |
|
|
|
public bool Executed |
|
{ |
|
get { return executed; } |
|
} |
|
|
|
public string Name |
|
{ |
|
get { return name; } |
|
} |
|
|
|
public string FullName |
|
{ |
|
get { return fullName; } |
|
} |
|
|
|
public string Id |
|
{ |
|
get { return id; } |
|
} |
|
|
|
public bool IsSuccess |
|
{ |
|
get { return isSuccess; } |
|
} |
|
|
|
public double Duration |
|
{ |
|
get { return duration; } |
|
} |
|
|
|
public string StackTrace |
|
{ |
|
get { return stackTrace; } |
|
} |
|
|
|
public bool IsIgnored |
|
{ |
|
get { return isIgnored; } |
|
} |
|
} |
|
#endregion |
|
}
|
|
|