public static void CreateTest() { var candidates = Util.GetAllTypes(t => typeof(IModule).IsAssignableFrom(t) && t.IsInterface == false); TypeSelectorWindow.Open(candidates, "Choose Modules").Done(moduleToTest => { List <Type> modules = new List <Type>() { moduleToTest.GetInterfaces()[1] }; DependsOnModulesAttribute deps = moduleToTest.GetCustomAttribute <DependsOnModulesAttribute>(); if (deps != null) { modules.AddRange(deps.dependencies); } var folder = EditorUtility.SaveFolderPanel("Choose test folder", Util.RelativeFrameworkRootFolder + "/Tests", "NewTest"); Directory.CreateDirectory(folder + "/Resources"); Directory.CreateDirectory(folder + "/Resources/Configs"); string name = new DirectoryInfo(folder).Name; string testNamespace = "SwiftFramework.Tests." + name; string prefix = $"{name}__"; CodeCompileUnit manifest = GenerateCustomManifestClass(prefix, testNamespace, modules.ToArray()); ScriptBuilder.SaveClassToDisc(manifest, folder + "/" + prefix + "ModuleManifest.cs", true); var manifestClassName = manifest.Namespaces[0].Types[0].Name; var manifestPath = PathUtils.ToRelativePath(folder + "/Resources/Configs/" + manifestClassName + ".asset"); Util.CreateAssetAfterScriptReload(manifestClassName, manifestPath); instance.pendingTests.Add(new TestConfig() { manifestPath = manifestPath, manifestType = manifestClassName }); CodeCompileUnit game = GenerateGameClass(prefix, testNamespace, modules.ToArray()); ScriptBuilder.SaveClassToDisc(game, folder + "/" + prefix + "Game.cs", true); CodeCompileUnit test = GenerateTestClass(prefix, testNamespace); ScriptBuilder.SaveClassToDisc(test, folder + "/" + prefix + "Test.cs", true); EditorUtility.SetDirty(instance); }); }
public static IPromise <Type> Open(IEnumerable <Type> types, string title) { TypeSelectorWindow win = GetWindow <TypeSelectorWindow>(true, title, true); win.MoveToCenter(); win.types = types; win.promise = Promise <Type> .Create(); return(win.promise); }
public static IPromise <Type> Open(Type interfaceType, string title) { TypeSelectorWindow win = GetWindow <TypeSelectorWindow>(true, title, true); win.MoveToCenter(); win.types = new List <Type>(Util.GetAllTypes(t => t.IsGenericType == false && t.IsAbstract == false && interfaceType.IsAssignableFrom(t) && typeof(UnityEngine.Object).IsAssignableFrom(t)));; win.promise = Promise <Type> .Create(); return(win.promise); }