コード例 #1
0
 public static void BuildTemporaryReportForSingleConsoleFailure(string testMethodName)
 {
                 #if UNITY_EDITOR
     SetCompleteReport(testMethodName);
     FileBroker.CreateFileAtPath(string.Format("{0}SingleTestAsReportTemp.html", FileBroker.RESOURCES_DIRECTORY), htmlBody.ToString());
                 #endif
 }
コード例 #2
0
        public static void GenerateFullCodeSnippet()
        {
            StringBuilder snippet = new StringBuilder();

            snippet.AppendLine("<style> .code_display { border: 1px solid black; border-radius: 6px; padding: 20px; margin: 20px; } .code_line { padding-bottom: 5px; } .object_declaration { color: #0f93b5; font-weight: bold; } .string_text { color: #cc7a00; } .title { padding: 20px; } .value { color: #008080; } .variable { color: #537da5; } </style>");
            snippet.AppendLine("<h2 class='title'>GENERATED CODE</h2>");

            snippet.AppendLine("<h4 class='title'>Using</h2>");
            snippet.AppendLine("<div id='using_statements' class='code_display'>");
            snippet.AppendLine("<div class='code_line'><span class='object_declaration'>using</span> System;</div>");
            snippet.AppendLine("<div class='code_line'><span class='object_declaration'>using</span> UnityEngine;</div>");
            if (AutomationRecorder.RecordedActions.FindAll(x => x.Action == ActableTypes.Input || x.Action == ActableTypes.Scroll).Any())
            {
                snippet.AppendLine("<div class='code_line'><span class='object_declaration'>using</span> UnityEngine.UI;</div>");
            }
            snippet.AppendLine("</div>");

            snippet.AppendLine("<h4 class='title'>Test Code</h2>");
            snippet.AppendLine("<div id='code_display' class='code_display'>");

            snippet.AppendLine("<div class='code_line'><span class='object_declaration'>GameObject</span> <span class='variable'>parentObject</span> = <span class='value'>null</span>;</div>");
            bool setCurrentObjectValue     = true;
            bool setMiddleLevelObjectValue = true;

            for (int x = 0; x < AutomationRecorder.RecordedActions.Count; x++)
            {
                snippet.AppendLine("<div class='code_line'>");
                bool anyAssertions = AutomationRecorder.RecordedActions[x].Assertions.Any();

                if (anyAssertions && setCurrentObjectValue)
                {
                    setCurrentObjectValue = false;
                    snippet.AppendLine("<div class='code_line'><span class='object_declaration'>GameObject</span> <span class='variable'>currentObject</span> = <span class='value'>null</span>;</div>");
                    snippet.AppendLine("</div><div class='code_line'>");
                }

                if (setMiddleLevelObjectValue && AutomationRecorder.RecordedActions[x].ParentNames.Count > MAX_NUM_PARENTNAMES_BEFORE_DRILLDOWN)
                {
                    //Searches for a parent level object closer to the object attempting to be found, to decrease finding of wrong object with identical name.
                    setMiddleLevelObjectValue = false;
                    snippet.AppendLine("<div class='code_line'><span class='object_declaration'>GameObject</span> <span class='variable'>middleLevelObject</span> = <span class='value'>null</span>;</div>");
                    snippet.AppendLine("</div><div class='code_line'>");
                }

                string assert = RenderAssertions(true, x);

                switch (AutomationRecorder.RecordedActions[x].Action)
                {
                case ActableTypes.Clickable:
                    snippet.AppendLine(GenerateClickCodeStub(AutomationRecorder.RecordedActions[x], anyAssertions, assert));
                    break;

                case ActableTypes.Input:
                    snippet.AppendLine(GenerateInputCodeStub(AutomationRecorder.RecordedActions[x], anyAssertions, assert));
                    break;

                case ActableTypes.Scroll:
                    snippet.AppendLine(GenerateScrollCodeStub(AutomationRecorder.RecordedActions[x], anyAssertions, assert));
                    break;

                case ActableTypes.Draggable:
                    //TODO
                    break;

                case ActableTypes.KeyDown:
                    //TODO
                    break;

                case ActableTypes.Screenshot:
                    snippet.AppendLine(string.Format("<div class='code_line'><span class='value'><span class='value'>yield return StartCoroutine</span></span>(<span class='object_declaration'>Q</span>.driver.TakeTestScreenshot(\"{0}\"));</div>", AutomationRecorder.RecordedActions[x].Name));
                    break;

                case ActableTypes.Wait:
                    snippet.AppendLine(string.Format("<div class='code_line'><span class='value'><span class='value'>yield return StartCoroutine</span></span>(<span class='object_declaration'>Q</span>.driver.WaitRealTime({0}f));</div>", AutomationRecorder.RecordedActions[x].Duration.ToString()));
                    break;
                }

                snippet.AppendLine("</div>");
                snippet.AppendLine(RenderAssertions(false, x));
            }

            snippet.AppendLine("</div>");
            FileBroker.CreateFileAtPath(string.Format("{0}RecordedTestCodeGen.html", FileBroker.RESOURCES_DIRECTORY), snippet.ToString());
        }