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.
84 lines
2.8 KiB
84 lines
2.8 KiB
using System; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using UnityEditor; |
|
using UnityEngine; |
|
|
|
namespace UnityTest |
|
{ |
|
class IntegrationTestGroupLine : IntegrationTestRendererBase |
|
{ |
|
public static List<GameObject> FoldMarkers; |
|
private IntegrationTestRendererBase[] m_Children; |
|
|
|
public IntegrationTestGroupLine(GameObject gameObject) : base(gameObject) |
|
{ |
|
} |
|
|
|
protected internal override void DrawLine(Rect rect, GUIContent label, bool isSelected, RenderingOptions options) |
|
{ |
|
EditorGUI.BeginChangeCheck(); |
|
var isClassFolded = !EditorGUI.Foldout(rect, !Folded, label, isSelected ? Styles.selectedFoldout : Styles.foldout); |
|
if (EditorGUI.EndChangeCheck()) Folded = isClassFolded; |
|
} |
|
|
|
private bool Folded |
|
{ |
|
get { return FoldMarkers.Contains(m_GameObject); } |
|
|
|
set |
|
{ |
|
if (value) FoldMarkers.Add(m_GameObject); |
|
else FoldMarkers.RemoveAll(s => s == m_GameObject); |
|
} |
|
} |
|
|
|
protected internal override void Render(int indend, RenderingOptions options) |
|
{ |
|
base.Render(indend, options); |
|
if (!Folded) |
|
foreach (var child in m_Children) |
|
child.Render(indend + 1, options); |
|
} |
|
|
|
protected internal override TestResult.ResultType GetResult() |
|
{ |
|
bool ignored = false; |
|
bool success = false; |
|
foreach (var child in m_Children) |
|
{ |
|
var result = child.GetResult(); |
|
|
|
if (result == TestResult.ResultType.Failed || result == TestResult.ResultType.FailedException || result == TestResult.ResultType.Timeout) |
|
return TestResult.ResultType.Failed; |
|
if (result == TestResult.ResultType.Success) |
|
success = true; |
|
else if (result == TestResult.ResultType.Ignored) |
|
ignored = true; |
|
else |
|
ignored = false; |
|
} |
|
if (success) return TestResult.ResultType.Success; |
|
if (ignored) return TestResult.ResultType.Ignored; |
|
return TestResult.ResultType.NotRun; |
|
} |
|
|
|
protected internal override bool IsVisible(RenderingOptions options) |
|
{ |
|
return m_Children.Any(c => c.IsVisible(options)); |
|
} |
|
|
|
public override bool SetCurrentTest(TestComponent tc) |
|
{ |
|
m_IsRunning = false; |
|
foreach (var child in m_Children) |
|
m_IsRunning |= child.SetCurrentTest(tc); |
|
return m_IsRunning; |
|
} |
|
|
|
public void AddChildren(IntegrationTestRendererBase[] parseTestList) |
|
{ |
|
m_Children = parseTestList; |
|
} |
|
} |
|
}
|
|
|