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.
142 lines
4.4 KiB
142 lines
4.4 KiB
9 years ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace UnityTest
|
||
|
{
|
||
|
[Serializable]
|
||
|
public class TestResult : ITestResult, IComparable<TestResult>
|
||
|
{
|
||
|
private readonly GameObject m_Go;
|
||
|
private string m_Name;
|
||
|
public ResultType resultType = ResultType.NotRun;
|
||
|
public double duration;
|
||
|
public string messages;
|
||
|
public string stacktrace;
|
||
|
public string id;
|
||
|
public bool dynamicTest;
|
||
|
|
||
|
public TestComponent TestComponent;
|
||
|
|
||
|
public GameObject GameObject
|
||
|
{
|
||
|
get { return m_Go; }
|
||
|
}
|
||
|
|
||
|
public TestResult(TestComponent testComponent)
|
||
|
{
|
||
|
TestComponent = testComponent;
|
||
|
m_Go = testComponent.gameObject;
|
||
|
id = testComponent.gameObject.GetInstanceID().ToString();
|
||
|
dynamicTest = testComponent.dynamic;
|
||
|
|
||
|
if (m_Go != null) m_Name = m_Go.name;
|
||
|
|
||
|
if (dynamicTest)
|
||
|
id = testComponent.dynamicTypeName;
|
||
|
}
|
||
|
|
||
|
public void Update(TestResult oldResult)
|
||
|
{
|
||
|
resultType = oldResult.resultType;
|
||
|
duration = oldResult.duration;
|
||
|
messages = oldResult.messages;
|
||
|
stacktrace = oldResult.stacktrace;
|
||
|
}
|
||
|
|
||
|
public enum ResultType
|
||
|
{
|
||
|
Success,
|
||
|
Failed,
|
||
|
Timeout,
|
||
|
NotRun,
|
||
|
FailedException,
|
||
|
Ignored
|
||
|
}
|
||
|
|
||
|
public void Reset()
|
||
|
{
|
||
|
resultType = ResultType.NotRun;
|
||
|
duration = 0f;
|
||
|
messages = "";
|
||
|
stacktrace = "";
|
||
|
}
|
||
|
|
||
|
#region ITestResult implementation
|
||
|
public TestResultState ResultState {
|
||
|
get
|
||
|
{
|
||
|
switch (resultType)
|
||
|
{
|
||
|
case ResultType.Success: return TestResultState.Success;
|
||
|
case ResultType.Failed: return TestResultState.Failure;
|
||
|
case ResultType.FailedException: return TestResultState.Error;
|
||
|
case ResultType.Ignored: return TestResultState.Ignored;
|
||
|
case ResultType.NotRun: return TestResultState.Skipped;
|
||
|
case ResultType.Timeout: return TestResultState.Cancelled;
|
||
|
default: throw new Exception();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
public string Message { get { return messages; } }
|
||
|
public string Logs { get { return null; } }
|
||
|
public bool Executed { get { return resultType != ResultType.NotRun; } }
|
||
|
public string Name { get { if (m_Go != null) m_Name = m_Go.name; return m_Name; } }
|
||
|
public string Id { get { return id; } }
|
||
|
public bool IsSuccess { get { return resultType == ResultType.Success; } }
|
||
|
public bool IsTimeout { get { return resultType == ResultType.Timeout; } }
|
||
|
public double Duration { get { return duration; } }
|
||
|
public string StackTrace { get { return stacktrace; } }
|
||
|
public string FullName {
|
||
|
get
|
||
|
{
|
||
|
var fullName = Name;
|
||
|
if (m_Go != null)
|
||
|
{
|
||
|
var tempGo = m_Go.transform.parent;
|
||
|
while (tempGo != null)
|
||
|
{
|
||
|
fullName = tempGo.name + "." + fullName;
|
||
|
tempGo = tempGo.transform.parent;
|
||
|
}
|
||
|
}
|
||
|
return fullName;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public bool IsIgnored { get { return resultType == ResultType.Ignored; } }
|
||
|
public bool IsFailure
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return resultType == ResultType.Failed
|
||
|
|| resultType == ResultType.FailedException
|
||
|
|| resultType == ResultType.Timeout;
|
||
|
}
|
||
|
}
|
||
|
#endregion
|
||
|
|
||
|
#region IComparable, GetHashCode and Equals implementation
|
||
|
public override int GetHashCode()
|
||
|
{
|
||
|
return id.GetHashCode();
|
||
|
}
|
||
|
|
||
|
public int CompareTo(TestResult other)
|
||
|
{
|
||
|
var result = Name.CompareTo(other.Name);
|
||
|
if (result == 0)
|
||
|
result = m_Go.GetInstanceID().CompareTo(other.m_Go.GetInstanceID());
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
public override bool Equals(object obj)
|
||
|
{
|
||
|
if (obj is TestResult)
|
||
|
return GetHashCode() == obj.GetHashCode();
|
||
|
return base.Equals(obj);
|
||
|
}
|
||
|
#endregion
|
||
|
}
|
||
|
}
|