1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | StoringTestSuiteResultNumber : UINT(1..GVL_Param_CfUnit.MaxNumberOfTestSuites); StoringTestSuiteTrigger : R_TRIG; StoredTestSuiteResults : BOOL; StoredGeneralTestResults : BOOL; END_VAR VAR_TEMP TestSuiteName : T_MaxString; TestName : T_MaxString; GeneralTestResultsTestSuitesCounter : UINT(1..GVL_Param_CfUnit.MaxNumberOfTestSuites); (* The body of the function block stores the test results *) StoringTestSuiteTrigger(CLK := GVL_CfUnit.TestSuiteAddresses[StoringTestSuiteResultNumber]^.AreAllTestsFinished()); IF StoringTestSuiteTrigger.Q THEN TestSuiteName := F_RemoveInstancePathAndProjectNameFromTestInstancePath(TestInstancePath := GVL_CfUnit.TestSuiteAddresses[StoringTestSuiteResultNumber]^.GetInstancePath()); (* Store test suite name and ID *) TestSuiteResults.TestSuiteResults[StoringTestSuiteResultNumber].Identity := StoringTestSuiteResultNumber - 1; (* Store number of tests in test suite *) GVL_CfUnit.TestSuiteAddresses[StoringTestSuiteResultNumber]^.GetNumberOfTests(); (* Store number of failed tests in test suite *) GVL_CfUnit.TestSuiteAddresses[StoringTestSuiteResultNumber]^.GetNumberOfFailedTests(); (* Iterate and print all tests in test suite *) TestToBeStored := GVL_CfUnit.TestSuiteAddresses[StoringTestSuiteResultNumber]^.GetTestByPosition(TestsInTestSuiteCounter); (* Store test name *) TestSuiteResults.TestSuiteResults[StoringTestSuiteResultNumber].TestCaseResults[TestsInTestSuiteCounter].TestClassName := TestSuiteResults.TestSuiteResults[StoringTestSuiteResultNumber].TestCaseResults[TestsInTestSuiteCounter].TestIsFailed := TestToBeStored.IsFailed(); (* Store whether the test was skipped *) TestSuiteResults.TestSuiteResults[StoringTestSuiteResultNumber].TestCaseResults[TestsInTestSuiteCounter].FailureMessage := TestToBeStored.GetAssertionMessage(); (* Store the (first failed) assertion type *) IF StoringTestSuiteResultNumber = GVL_CfUnit.NumberOfInitializedTestSuites THEN StoredTestSuiteResults := TRUE; ELSE (* If all test suites have finished storing their results, store the general test results *) IF StoredTestSuiteResults AND NOT StoredGeneralTestResults THEN //IF StoringTestSuiteResultNumber = GVL_CfUnit.NumberOfInitializedTestSuites AND TestSuiteResults.NumberOfTestSuites := GVL_CfUnit.NumberOfInitializedTestSuites; |