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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | METHOD PUBLIC LogTestSuiteResults VAR CfUnitTestResults : REFERENCE TO ST_TestSuiteResults; StringToPrint : T_MaxString; CfUnitTestResults REF= TestResults.GetTestSuiteResults(); PrintingTestSuiteTrigger(CLK := GVL_CfUnit.TestSuiteAddresses[PrintingTestSuiteResultNumber]^.AreAllTestsFinished()); IF PrintingTestSuiteTrigger.Q THEN StringToPrint := CONCAT(STR1 := '| Test suite ID=', STR2 := ' $'%s$''); (* Print test suite name and ID *) MsgFmtStr := StringToPrint, (* Print number of tests/number of failed test in test suite *) StringToPrint := CONCAT(STR1 := '| ID=', STR2 := UINT_TO_STRING(CfUnitTestResults.TestSuiteResults[PrintingTestSuiteResultNumber].NumberOfTests)); STR2 := UINT_TO_STRING(CfUnitTestResults.TestSuiteResults[PrintingTestSuiteResultNumber].NumberOfFailedTests)); MsgFmtStr := StringToPrint, StrArg := ''); (* Iterate and print all tests in test suite *) WRITE_DEVICE_LOG(MsgCtrlMask := UDINT_TO_DWORD(CmpLog.LogClass.LOG_INFO), MsgFmtStr := '| Test name=%s', MsgFmtStr := '| Test class name=%s', (* Print test result/status (SUCCESS, FAILED, SKIPPED) + number of assertions made *) StringToPrint := CONCAT(STR1 := '| Test status=', STR2 := TEST_STATUS_FAIL); StringToPrint := CONCAT(STR1 := '| Test status=', STR2 := TEST_STATUS_SKIP); ELSE StringToPrint := CONCAT(STR1 := StringToPrint, STR2 := ', number of asserts='); UINT_TO_STRING(CfUnitTestResults.TestSuiteResults[PrintingTestSuiteResultNumber].TestCaseResults[TestsInTestSuiteCounter].NumberOfAsserts)); MsgFmtStr := StringToPrint, StrArg := ''); (* Print assertion/failure message (if existing) *) WRITE_DEVICE_LOG(MsgCtrlMask := UDINT_TO_DWORD(CmpLog.LogClass.LOG_INFO), StrArg := CfUnitTestResults.TestSuiteResults[PrintingTestSuiteResultNumber].TestCaseResults[TestsInTestSuiteCounter].FailureMessage); END_IF (* Print assertion/failure type (if existing) *) MsgFmtStr := '| Test assert type=%s', CfUnitTestResults.TestSuiteResults[PrintingTestSuiteResultNumber].TestCaseResults[TestsInTestSuiteCounter].FailureType)); END_FOR PrintingTestSuiteResultNumber := PrintingTestSuiteResultNumber + 1; END_IF (* Log end results once all test suites have finished running *) WRITE_DEVICE_LOG(MsgCtrlMask := UDINT_TO_DWORD(CmpLog.LogClass.LOG_ERROR), MsgFmtStr := '%s', StrArg := UINT_TO_STRING(CfUnitTestResults.NumberOfTestSuites)); MsgFmtStr := '| Tests: %s', StrArg := UINT_TO_STRING(CfUnitTestResults.NumberOfSuccessfulTestCases)); MsgFmtStr := '| Failed tests: %s', StrArg := '| ======================================'); PrintedFinalTestResults := TRUE; |