コード例 #1
0
        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);
            });
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }