| Quintiq file version 2.0 | 
| #parent: #root | 
| Method PTF_ExecuteTest ( | 
|   structured[LibPTF_TestScript] testscripts | 
| ) id:Method_LibPTF_pnlTestController_PTF_ExecuteTest | 
| { | 
|   #keys: '[105690.0.201964467]' | 
|   Body: | 
|   [* | 
|     // Execute the selected test scripts | 
|     rowDelimiter    := LibPTF_Util::StringListRowDelimiter();      | 
|     columnDelimiter := LibPTF_Util::StringListColumnDelimiter(); | 
|      | 
|     validtestscripts := selectset( testscripts, | 
|                                    Elements, | 
|                                    script, | 
|                                    true, | 
|                                    script.IsScriptValid() | 
|                                  ); | 
|      | 
|     nrtotal   := testscripts.Size(); | 
|     nrvalid   := validtestscripts.Size(); | 
|     nrinvalid := nrtotal - nrvalid; | 
|     message   := "There are " + [String]nrinvalid + " invalid test script(s)." + String::NewLine() + String::NewLine() | 
|                  + "Do you want to execute the other " + [String]nrvalid + " valid test script(s)?"; | 
|      | 
|     // If all scripts valid or user continues to execute other valid scripts | 
|     if( nrvalid = nrtotal | 
|         or MessageBox::Warning( this, message, '&Yes|&No', 1 ) = 0 ) | 
|     { | 
|       //Logs a line in log file as an indication of the beginning of a PTF run | 
|       LibPTF::LogRunStarted(); | 
|                                                        | 
|       resultLogFileName := this.PTF_GetResultLogFileName();                                                   | 
|        | 
|       this.vhResultLogFolder().Value( resultLogFileName ) | 
|       OS::CreateDirectory( LibPTF_pnlTestController.PTF_GetResultLogPath() ); | 
|       this.gt().Enabled( true ); | 
|      | 
|       //execute only valid testscript | 
|       ts := validtestscripts.Copy(); | 
|       dhSelectedScripts.Data( &ts ); | 
|      | 
|       str := ""; | 
|      | 
|       traverse( dhSelectedScripts.Data(), Elements, script ) | 
|       { | 
|         str := str + script.User() + columnDelimiter | 
|                    + [String]script.TotalNrOfSessions() + columnDelimiter | 
|                    + [String]script.NrOfSimultaneousSessions() + columnDelimiter | 
|                    + "0" + columnDelimiter | 
|                    + "0" + columnDelimiter | 
|                    + [String]script.TotalNrOfSessions() + columnDelimiter | 
|                    + "N/A" + columnDelimiter | 
|                    + "N/A" + columnDelimiter | 
|                    + "N/A" + columnDelimiter | 
|                    + [String]script.Offset() + rowDelimiter ; | 
|       } | 
|      | 
|       lstExecutionTestScript.Strings( str.SubString( 0, str.Length() - 1 ) ); | 
|      | 
|      | 
|        | 
|       // Set labels text in panel test controller (start,end,duration) | 
|       now := DateTime::Now(); | 
|       nowAsString := LibPTF_pnlTestController.PTF_ConvertDateTimeToString( now );     | 
|       lblStartTime.Text( nowAsString ); | 
|       lblEndTime.Text( "N/A" ); | 
|       lblDurationTime.Text( "N/A" ); | 
|        | 
|       LibPTF_pnlTestController.PTF_GenerateBatchFile();   | 
|      | 
|       // Assign LastTestStartTime attribute and current client timezone offset and timezone ID labels | 
|       // Purpose: For update datetime string value when client timezone is changed (ONLY for timezone mode) | 
|       LibPTF_pnlTestController.PTF_GetPTF().LastTestStartTime( now );  | 
|       lblClientTimezoneOffset.Text( LibPTF_pnlTestController.PTF_GetClientTimeZoneOffset() ); | 
|       lblLastClientTimeZone.Text( Application::SessionTimeZone().ID() ); | 
|     } | 
|   *] | 
| } |