A game about forced loneliness, made by TACStudios
at master 2.6 kB view raw
1using System; 2using System.Collections.Generic; 3using UnityEditor.TestTools.TestRunner.Api; 4using UnityEngine; 5 6namespace Microsoft.Unity.VisualStudio.Editor.Testing 7{ 8 internal class TestRunnerCallbacks : ICallbacks 9 { 10 private string Serialize<TContainer, TSource, TAdaptor>( 11 TSource source, 12 Func<TSource, int, TAdaptor> createAdaptor, 13 Func<TSource, IEnumerable<TSource>> children, 14 Func<TAdaptor[], TContainer> container) 15 { 16 var adaptors = new List<TAdaptor>(); 17 18 void AddAdaptor(TSource item, int parentIndex) 19 { 20 var index = adaptors.Count; 21 adaptors.Add(createAdaptor(item, parentIndex)); 22 foreach (var child in children(item)) 23 AddAdaptor(child, index); 24 } 25 26 AddAdaptor(source, -1); 27 28 return JsonUtility.ToJson(container(adaptors.ToArray())); 29 } 30 31 private string Serialize(ITestAdaptor testAdaptor) 32 { 33 return Serialize( 34 testAdaptor, 35 (a, parentIndex) => new TestAdaptor(a, parentIndex), 36 (a) => a.Children, 37 (r) => new TestAdaptorContainer { TestAdaptors = r }); 38 } 39 40 private string Serialize(ITestResultAdaptor testResultAdaptor) 41 { 42 return Serialize( 43 testResultAdaptor, 44 (a, parentIndex) => new TestResultAdaptor(a, parentIndex), 45 (a) => a.Children, 46 (r) => new TestResultAdaptorContainer { TestResultAdaptors = r }); 47 } 48 49 public void RunFinished(ITestResultAdaptor testResultAdaptor) 50 { 51 VisualStudioIntegration.BroadcastMessage(Messaging.MessageType.RunFinished, Serialize(testResultAdaptor)); 52 } 53 54 public void RunStarted(ITestAdaptor testAdaptor) 55 { 56 VisualStudioIntegration.BroadcastMessage(Messaging.MessageType.RunStarted, Serialize(testAdaptor)); 57 } 58 59 public void TestFinished(ITestResultAdaptor testResultAdaptor) 60 { 61 VisualStudioIntegration.BroadcastMessage(Messaging.MessageType.TestFinished, Serialize(testResultAdaptor)); 62 } 63 64 public void TestStarted(ITestAdaptor testAdaptor) 65 { 66 VisualStudioIntegration.BroadcastMessage(Messaging.MessageType.TestStarted, Serialize(testAdaptor)); 67 } 68 69 private static string TestModeName(TestMode testMode) 70 { 71 switch (testMode) 72 { 73 case TestMode.EditMode: return "EditMode"; 74 case TestMode.PlayMode: return "PlayMode"; 75 } 76 77 throw new ArgumentOutOfRangeException(); 78 } 79 80 81 internal void TestListRetrieved(TestMode testMode, ITestAdaptor testAdaptor) 82 { 83 // TestListRetrieved format: 84 // TestMode:Json 85 86 var value = TestModeName(testMode) + ":" + Serialize(testAdaptor); 87 VisualStudioIntegration.BroadcastMessage(Messaging.MessageType.TestListRetrieved, value); 88 } 89 } 90}