diff options
Diffstat (limited to 'Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks')
8 files changed, 375 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs new file mode 100644 index 0000000..66c48e5 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs @@ -0,0 +1,47 @@ +using NUnit.Framework;
+using NUnit.Framework.Interfaces;
+
+namespace UnityEngine.TestTools.TestRunner.Callbacks
+{
+ [AddComponentMenu("")]
+ internal class PlayModeRunnerCallback : MonoBehaviour, ITestRunnerListener
+ {
+ private TestResultRenderer m_ResultRenderer;
+
+ public void RunFinished(ITestResult testResults)
+ {
+ Application.logMessageReceivedThreaded -= LogRecieved;
+ if (Camera.main == null)
+ {
+ gameObject.AddComponent<Camera>();
+ }
+ m_ResultRenderer = new TestResultRenderer(testResults);
+ m_ResultRenderer.ShowResults();
+ }
+
+ public void TestFinished(ITestResult result)
+ {
+ }
+
+ public void OnGUI()
+ {
+ if (m_ResultRenderer != null)
+ m_ResultRenderer.Draw();
+ }
+
+ public void RunStarted(ITest testsToRun)
+ {
+ Application.logMessageReceivedThreaded += LogRecieved;
+ }
+
+ public void TestStarted(ITest test)
+ {
+ }
+
+ private void LogRecieved(string message, string stacktrace, LogType type)
+ {
+ if (TestContext.Out != null)
+ TestContext.Out.WriteLine(message);
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs.meta new file mode 100644 index 0000000..7f533f6 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/PlayModeRunnerCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2
+guid: 3cf5cb9e1ef590c48b1f919f2a7bd895
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs new file mode 100644 index 0000000..1bfb63e --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs @@ -0,0 +1,151 @@ +using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework.Interfaces;
+using UnityEngine.Networking.PlayerConnection;
+using UnityEngine.TestRunner.TestLaunchers;
+
+namespace UnityEngine.TestTools.TestRunner.Callbacks
+{
+ [AddComponentMenu("")]
+ internal class RemoteTestResultSender : MonoBehaviour, ITestRunnerListener
+ {
+ private class QueueData
+ {
+ public Guid id { get; set; }
+ public byte[] data { get; set; }
+ }
+
+ private const int k_aliveMessageFrequency = 120;
+ private float m_NextliveMessage = k_aliveMessageFrequency;
+ private readonly Queue<QueueData> m_SendQueue = new Queue<QueueData>();
+ private readonly object m_LockQueue = new object();
+ private readonly IRemoteTestResultDataFactory m_TestResultDataFactory = new RemoteTestResultDataFactory();
+
+ public void Start()
+ {
+ PlayerConnection.instance.Register(PlayerConnectionMessageIds.quitPlayerMessageId, EditorProccessedTheResult);
+ StartCoroutine(SendDataRoutine());
+ }
+
+ private void EditorProccessedTheResult(MessageEventArgs arg0)
+ {
+ if (arg0.data != null)
+ {
+ return;
+ }
+
+ //Some platforms don't quit, so we need to disconnect to make sure they will not connect to another editor instance automatically.
+ PlayerConnection.instance.DisconnectAll();
+
+ //XBOX has an error when quitting
+ if (Application.platform == RuntimePlatform.XboxOne)
+ {
+ return;
+ }
+ Application.Quit();
+ }
+
+ private byte[] SerializeObject(object objectToSerialize)
+ {
+ return Encoding.UTF8.GetBytes(JsonUtility.ToJson(objectToSerialize));
+ }
+
+ public void RunStarted(ITest testsToRun)
+ {
+ var data = SerializeObject(m_TestResultDataFactory.CreateFromTest(testsToRun));
+ lock (m_LockQueue)
+ {
+ m_SendQueue.Enqueue(new QueueData
+ {
+ id = PlayerConnectionMessageIds.runStartedMessageId,
+ data = data
+ });
+ }
+ }
+
+ public void RunFinished(ITestResult testResults)
+ {
+ var data = SerializeObject(m_TestResultDataFactory.CreateFromTestResult(testResults));
+ lock (m_LockQueue)
+ {
+ m_SendQueue.Enqueue(new QueueData { id = PlayerConnectionMessageIds.runFinishedMessageId, data = data, });
+ }
+ }
+
+ public void TestStarted(ITest test)
+ {
+ var data = SerializeObject(m_TestResultDataFactory.CreateFromTest(test));
+ lock (m_LockQueue)
+ {
+ m_SendQueue.Enqueue(new QueueData
+ {
+ id = PlayerConnectionMessageIds.testStartedMessageId,
+ data = data
+ });
+ }
+ }
+
+ public void TestFinished(ITestResult result)
+ {
+ var testRunnerResultForApi = m_TestResultDataFactory.CreateFromTestResult(result);
+ var resultData = SerializeObject(testRunnerResultForApi);
+ lock (m_LockQueue)
+ {
+ m_SendQueue.Enqueue(new QueueData
+ {
+ id = PlayerConnectionMessageIds.testFinishedMessageId,
+ data = resultData,
+ });
+ }
+ }
+
+ public IEnumerator SendDataRoutine()
+ {
+ while (!PlayerConnection.instance.isConnected)
+ {
+ yield return new WaitForSeconds(1);
+ }
+
+ while (true)
+ {
+ lock (m_LockQueue)
+ {
+ if (PlayerConnection.instance.isConnected && m_SendQueue.Count > 0)
+ {
+ ResetNextPlayerAliveMessageTime();
+ var queueData = m_SendQueue.Dequeue();
+ PlayerConnection.instance.Send(queueData.id, queueData.data);
+ yield return null;
+ }
+
+ //This is needed so we dont stall the player totally
+ if (!m_SendQueue.Any())
+ {
+ SendAliveMessageIfNeeded();
+ yield return new WaitForSeconds(0.02f);
+ }
+ }
+ }
+ }
+
+ private void SendAliveMessageIfNeeded()
+ {
+ if (Time.timeSinceLevelLoad < m_NextliveMessage)
+ {
+ return;
+ }
+
+ Debug.Log("Sending player alive message back to editor.");
+ ResetNextPlayerAliveMessageTime();
+ PlayerConnection.instance.Send(PlayerConnectionMessageIds.playerAliveHeartbeat, new byte[0]);
+ }
+
+ private void ResetNextPlayerAliveMessageTime()
+ {
+ m_NextliveMessage = Time.timeSinceLevelLoad + k_aliveMessageFrequency;
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs.meta new file mode 100644 index 0000000..13af2c8 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/RemoteTestResultSender.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2
+guid: 20793418366caf14293b29c55df5e9ec
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs new file mode 100644 index 0000000..95316e7 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs @@ -0,0 +1,97 @@ +using System.Collections.Generic;
+using System.Linq;
+using NUnit.Framework.Interfaces;
+using NUnit.Framework.Internal;
+
+namespace UnityEngine.TestTools.TestRunner.Callbacks
+{
+ internal class TestResultRenderer
+ {
+ private static class Styles
+ {
+ public static readonly GUIStyle SucceedLabelStyle;
+ public static readonly GUIStyle FailedLabelStyle;
+ public static readonly GUIStyle FailedMessagesStyle;
+
+ static Styles()
+ {
+ SucceedLabelStyle = new GUIStyle("label");
+ SucceedLabelStyle.normal.textColor = Color.green;
+ SucceedLabelStyle.fontSize = 48;
+
+ FailedLabelStyle = new GUIStyle("label");
+ FailedLabelStyle.normal.textColor = Color.red;
+ FailedLabelStyle.fontSize = 32;
+
+ FailedMessagesStyle = new GUIStyle("label");
+ FailedMessagesStyle.wordWrap = false;
+ FailedMessagesStyle.richText = true;
+ }
+ }
+
+ private readonly List<ITestResult> m_FailedTestCollection;
+
+ private bool m_ShowResults;
+ private Vector2 m_ScrollPosition;
+
+ public TestResultRenderer(ITestResult testResults)
+ {
+ m_FailedTestCollection = new List<ITestResult>();
+ GetFailedTests(testResults);
+ }
+
+ private void GetFailedTests(ITestResult testResults)
+ {
+ if (testResults is TestCaseResult)
+ {
+ if (testResults.ResultState.Status == TestStatus.Failed)
+ m_FailedTestCollection.Add(testResults);
+ }
+ else if (testResults.HasChildren)
+ {
+ foreach (var testResultsChild in testResults.Children)
+ {
+ GetFailedTests(testResultsChild);
+ }
+ }
+ }
+
+ private const int k_MaxStringLength = 15000;
+
+ public void ShowResults()
+ {
+ m_ShowResults = true;
+ Cursor.visible = true;
+ }
+
+ public void Draw()
+ {
+ if (!m_ShowResults) return;
+ if (m_FailedTestCollection.Count == 0)
+ {
+ GUILayout.Label("All test(s) succeeded", Styles.SucceedLabelStyle, GUILayout.Width(600));
+ }
+ else
+ {
+ int count = m_FailedTestCollection.Count;
+ GUILayout.Label(count + " tests failed!", Styles.FailedLabelStyle);
+
+ m_ScrollPosition = GUILayout.BeginScrollView(m_ScrollPosition, GUILayout.ExpandWidth(true));
+ var text = "";
+
+ text += "<b><size=18>Code-based tests</size></b>\n";
+ text += string.Join("\n", m_FailedTestCollection
+ .Select(result => result.Name + " " + result.ResultState + "\n" + result.Message)
+ .ToArray());
+
+ if (text.Length > k_MaxStringLength)
+ text = text.Substring(0, k_MaxStringLength);
+
+ GUILayout.TextArea(text, Styles.FailedMessagesStyle);
+ GUILayout.EndScrollView();
+ }
+ if (GUILayout.Button("Close"))
+ Application.Quit();
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs.meta new file mode 100644 index 0000000..1814f78 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRenderer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2
+guid: 5ebb87899ca30b743bb4274bc00c02b4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs new file mode 100644 index 0000000..9f5ce05 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs @@ -0,0 +1,36 @@ +using NUnit.Framework.Interfaces;
+
+namespace UnityEngine.TestTools.TestRunner.Callbacks
+{
+ internal class TestResultRendererCallback : MonoBehaviour, ITestRunnerListener
+ {
+ private TestResultRenderer m_ResultRenderer;
+ public void RunStarted(ITest testsToRun)
+ {
+ }
+
+ public void RunFinished(ITestResult testResults)
+ {
+ if (Camera.main == null)
+ {
+ gameObject.AddComponent<Camera>();
+ }
+ m_ResultRenderer = new TestResultRenderer(testResults);
+ m_ResultRenderer.ShowResults();
+ }
+
+ public void OnGUI()
+ {
+ if (m_ResultRenderer != null)
+ m_ResultRenderer.Draw();
+ }
+
+ public void TestStarted(ITest test)
+ {
+ }
+
+ public void TestFinished(ITestResult result)
+ {
+ }
+ }
+}
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs.meta b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs.meta new file mode 100644 index 0000000..21e7ef0 --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEngine.TestRunner/TestRunner/Callbacks/TestResultRendererCallback.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2
+guid: dfc336f10b83bd74eaded16a658275c7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
|
