public void OnGUI() { if (UnityTest.TestRunner == this) { GUI.depth = -10; GUILayout.BeginArea(GUITools.FullScreen, "Unit Tests", "window"); viewState = TestRunnerGUI.ShowAggregateResults(viewState, aggregateResults); GUILayout.EndArea(); } }
public static TestResultsViewState ShowAggregateResults(TestResultsViewState state, ArrayList aggregateResults) { if(state.labels.Length != aggregateResults.Count) { state.labels = new string[aggregateResults.Count]; for(int i = 0; i < state.labels.Length; i++) { SuiteResults sr = ((SuiteResults)(aggregateResults[i])); state.labels[i] = sr.suite.Name + ((sr.variant != null) ? sr.variant : ""); } } GUILayout.BeginHorizontal(GUITools.ConstrainedBox); GUILayout.BeginVertical(); GUITools.TextColorState tcs; state.outerScrollPosition = GUILayout.BeginScrollView(state.outerScrollPosition, false, false, GUILayout.Width(180)); if((state.labels.Length > 0) && (state.selectedIndex >= 0)) { for(int i = 0; i < state.labels.Length; i++) { SuiteResults sr = ((SuiteResults)(aggregateResults[i])); TestResultStyle style = TestResultStyle.Pass; // TODO: UGH! This SUCKS! We shouldn't have to iterate every // result multiple times every frame!!!! bool isFailed = false; foreach(TestResult r in sr.results) { // If ANY result is ongoing, the result is Ongoing. // If there's no ongoing test AND there is ANY failed test, the // result is Failed. // Otherwise, the result is Passed. if(r.IsRunning) { style = TestResultStyle.Ongoing; if(Application.isPlaying) state.selectedIndex = i; break; } else if(r.Passed) { if(!isFailed) style = TestResultStyle.Pass; } else { style = TestResultStyle.Fail; isFailed = true; continue; } } tcs = GUITools.SetTextColor(style.color, "button"); if(GUILayout.Toggle((state.selectedIndex == i), state.labels[i], "button", GUILayout.Width(150))) state.selectedIndex = i; GUITools.RestoreTextColor(tcs); } } GUILayout.EndScrollView(); GUILayout.EndVertical(); GUILayout.BeginVertical(); if(state.labels.Length > 0) { if(state.selectedIndex >= state.labels.Length) state.selectedIndex = state.labels.Length - 1; GUILayout.Label(state.labels[state.selectedIndex]); if((state.selectedIndex >= 0) && (aggregateResults.Count > 0)) state.innerScrollPosition = TestRunnerGUI.ShowSuiteResults(state.innerScrollPosition, ((SuiteResults)(aggregateResults[state.selectedIndex])).results); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); return state; }
public void OnGUI() { if (UnityTestController.Instance != null) { aggregateResults = UnityTestController.Instance.aggregateResults; } GUILayout.BeginVertical(GUITools.ConstrainedBox); if (UnityTestController.Instance != null) { viewState = TestRunnerGUI.ShowAggregateResults(viewState, aggregateResults); } else if (UnityTest.Instance != null) { viewState.innerScrollPosition = TestRunnerGUI.ShowSuiteResults(viewState.innerScrollPosition, UnityTest.Instance.results); } else { GUILayout.Label("No test data..."); GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); }
public void OnGUI() { if(UnityTestController.Instance != null) aggregateResults = UnityTestController.Instance.aggregateResults; GUILayout.BeginVertical(GUITools.ConstrainedBox); if(UnityTestController.Instance != null) viewState = TestRunnerGUI.ShowAggregateResults(viewState, aggregateResults); else if(UnityTest.Instance != null) viewState.innerScrollPosition = TestRunnerGUI.ShowSuiteResults(viewState.innerScrollPosition, UnityTest.Instance.results); else { GUILayout.Label("No test data..."); GUILayout.FlexibleSpace(); } GUILayout.EndVertical(); }
public void OnGUI() { if(UnityTest.TestRunner == this) { GUI.depth = -10; GUILayout.BeginArea(GUITools.FullScreen, "Unit Tests", "window"); viewState = TestRunnerGUI.ShowAggregateResults(viewState, aggregateResults); GUILayout.EndArea(); } }
public static TestResultsViewState ShowAggregateResults(TestResultsViewState state, ArrayList aggregateResults) { if (state.labels.Length != aggregateResults.Count) { state.labels = new string[aggregateResults.Count]; for (int i = 0; i < state.labels.Length; i++) { SuiteResults sr = ((SuiteResults)(aggregateResults[i])); state.labels[i] = sr.suite.Name + ((sr.variant != null) ? sr.variant : ""); } } GUILayout.BeginHorizontal(GUITools.ConstrainedBox); GUILayout.BeginVertical(); GUITools.TextColorState tcs; state.outerScrollPosition = GUILayout.BeginScrollView(state.outerScrollPosition, false, false, GUILayout.Width(180)); if ((state.labels.Length > 0) && (state.selectedIndex >= 0)) { for (int i = 0; i < state.labels.Length; i++) { SuiteResults sr = ((SuiteResults)(aggregateResults[i])); TestResultStyle style = TestResultStyle.Pass; // TODO: UGH! This SUCKS! We shouldn't have to iterate every // result multiple times every frame!!!! bool isFailed = false; foreach (TestResult r in sr.results) { // If ANY result is ongoing, the result is Ongoing. // If there's no ongoing test AND there is ANY failed test, the // result is Failed. // Otherwise, the result is Passed. if (r.IsRunning) { style = TestResultStyle.Ongoing; if (Application.isPlaying) { state.selectedIndex = i; } break; } else if (r.Passed) { if (!isFailed) { style = TestResultStyle.Pass; } } else { style = TestResultStyle.Fail; isFailed = true; continue; } } tcs = GUITools.SetTextColor(style.color, "button"); if (GUILayout.Toggle((state.selectedIndex == i), state.labels[i], "button", GUILayout.Width(150))) { state.selectedIndex = i; } GUITools.RestoreTextColor(tcs); } } GUILayout.EndScrollView(); GUILayout.EndVertical(); GUILayout.BeginVertical(); if (state.labels.Length > 0) { if (state.selectedIndex >= state.labels.Length) { state.selectedIndex = state.labels.Length - 1; } GUILayout.Label(state.labels[state.selectedIndex]); if ((state.selectedIndex >= 0) && (aggregateResults.Count > 0)) { state.innerScrollPosition = TestRunnerGUI.ShowSuiteResults(state.innerScrollPosition, ((SuiteResults)(aggregateResults[state.selectedIndex])).results); } } GUILayout.EndVertical(); GUILayout.EndHorizontal(); return(state); }