/** Handler function called at start of each test. * The test result file must have been opened before this * function is called (i.e. f_pTestResultFile non-NULL). * @param pTest The test being run (non-NULL). * @param pSuite The suite containing the test (non-NULL). */ static void automated_test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite) { CU_UNREFERENCED_PARAMETER(pTest); /* not currently used */ assert(NULL != pTest); assert(NULL != pSuite); assert(NULL != f_pTestResultFile); /* write suite close/open tags if this is the 1st test for this szSuite */ if ((NULL == f_pRunningSuite) || (f_pRunningSuite != pSuite)) { if (CU_TRUE == f_bWriting_CUNIT_RUN_SUITE) { fprintf(f_pTestResultFile, " </CUNIT_RUN_SUITE_SUCCESS> \n" " </CUNIT_RUN_SUITE> \n"); } fprintf(f_pTestResultFile, " <CUNIT_RUN_SUITE> \n" " <CUNIT_RUN_SUITE_SUCCESS> \n" " <SUITE_NAME> %s </SUITE_NAME> \n", (NULL != pSuite->pName) ? pSuite->pName : ""); f_bWriting_CUNIT_RUN_SUITE = CU_TRUE; f_pRunningSuite = pSuite; } }
/** Handler function called at completion of all tests in a suite. * @param pFailure Pointer to the test failure record list. */ static void basic_all_tests_complete_message_handler(const CU_pFailureRecord pFailure) { CU_UNREFERENCED_PARAMETER(pFailure); /* not used in basic interface */ fprintf(stdout, "\n\n"); CU_print_run_results(stdout); fprintf(stdout, "\n"); }
/** Handler function called at completion of all tests in a suite. * @param pFailure Pointer to the test failure record list. */ static void basic_all_tests_complete_message_handler(const CU_pFailureRecord pFailure) { CU_pRunSummary pRunSummary = CU_get_run_summary(); CU_pTestRegistry pRegistry = CU_get_registry(); CU_UNREFERENCED_PARAMETER(pFailure); /* not used in basic interface */ assert(NULL != pRunSummary); assert(NULL != pRegistry); if (CU_BRM_SILENT != f_run_mode) fprintf(stdout,"\n\n--Run Summary: Type Total Ran Passed Failed" "\n suites %8u%8u n/a%8u" "\n tests %8u%8u%8u%8u" "\n asserts%8u%8u%8u%8u\n", pRegistry->uiNumberOfSuites, pRunSummary->nSuitesRun, pRunSummary->nSuitesFailed, pRegistry->uiNumberOfTests, pRunSummary->nTestsRun, pRunSummary->nTestsRun - pRunSummary->nTestsFailed, pRunSummary->nTestsFailed, pRunSummary->nAsserts, pRunSummary->nAsserts, pRunSummary->nAsserts - pRunSummary->nAssertsFailed, pRunSummary->nAssertsFailed); }
/** Handler function called at completion of all tests in a suite. * @param pFailure Pointer to the test failure record list. */ static void curses_all_tests_complete_message_handler(const CU_pFailureRecord pFailure) { /* Not used in curses implementation - quiet compiler warning */ CU_UNREFERENCED_PARAMETER(pFailure); f_pCurrentTest = NULL; f_pCurrentSuite = NULL; if (!create_pad(&details_pad, application_windows.pDetailsWin, 16 , 256)) { return; } mvwprintw(details_pad.pPad, 0, 0, "%s", "====== Suite Run Summary ======"); mvwprintw(details_pad.pPad, 1, 0, " TOTAL SUITES: %4u", f_uiTotalSuites); mvwprintw(details_pad.pPad, 2, 0, " Run: %4u", f_uiTotalSuites - f_uiSuitesSkipped); mvwprintw(details_pad.pPad, 3, 0, " Skipped: %4u", f_uiSuitesSkipped); mvwprintw(details_pad.pPad, 5, 0, "%s", "====== Test Run Summary ======="); mvwprintw(details_pad.pPad, 6, 0, " TOTAL TESTS: %4u", f_uiTotalTests); mvwprintw(details_pad.pPad, 7, 0, " Run: %4u", f_uiTestsRun); mvwprintw(details_pad.pPad, 8, 0, " Skipped: %4u", f_uiTestsSkipped); mvwprintw(details_pad.pPad, 9, 0, " Successful: %4u", f_uiTestsRunSuccessful); mvwprintw(details_pad.pPad, 10, 0, " Failed: %4u", f_uiTestsFailed); mvwprintw(details_pad.pPad, 12, 0, "%s", "====== Assertion Summary ======"); mvwprintw(details_pad.pPad, 13, 0, " TOTAL ASSERTS: %4u", CU_get_number_of_asserts()); mvwprintw(details_pad.pPad, 14, 0, " Passed: %4u", CU_get_number_of_successes()); mvwprintw(details_pad.pPad, 15, 0, " Failed: %4u", CU_get_number_of_failures()); refresh_details_window(); refresh_run_summary_window(); }
/** Handler function called at completion of each test. * @param pTest The test being run (non-NULL). * @param pSuite The suite containing the test (non-NULL). * @param pFailure Pointer to the 1st failure record for this test. */ static void automated_test_complete_message_handler(const CU_pTest pTest, const CU_pSuite pSuite, const CU_pFailureRecord pFailure) { CU_pFailureRecord pTempFailure = pFailure; CU_UNREFERENCED_PARAMETER(pSuite); /* pSuite is not used except in assertion */ assert(NULL != pTest); assert(NULL != pSuite); assert(NULL != f_pTestResultFile); if (NULL != pTempFailure) { /* worst cast is a string of special chars */ char szTemp[CUNIT_MAX_ENTITY_LEN * CUNIT_MAX_STRING_LENGTH]; while (NULL != pTempFailure) { assert((NULL != pTempFailure->pSuite) && (pTempFailure->pSuite == pSuite)); assert((NULL != pTempFailure->pTest) && (pTempFailure->pTest == pTest)); if (NULL != pTempFailure->strCondition) { CU_translate_special_characters(pTempFailure->strCondition, szTemp, sizeof(szTemp)); } else { szTemp[0] = '\0'; } fprintf(f_pTestResultFile, " <CUNIT_RUN_TEST_RECORD> \n" " <CUNIT_RUN_TEST_FAILURE> \n" " <TEST_NAME> %s </TEST_NAME> \n" " <FILE_NAME> %s </FILE_NAME> \n" " <LINE_NUMBER> %u </LINE_NUMBER> \n" " <CONDITION> %s </CONDITION> \n" " </CUNIT_RUN_TEST_FAILURE> \n" " </CUNIT_RUN_TEST_RECORD> \n", (NULL != pTest->pName) ? pTest->pName : "", (NULL != pTempFailure->strFileName) ? pTempFailure->strFileName : "", pTempFailure->uiLineNumber, szTemp); pTempFailure = pTempFailure->pNext; } } else { fprintf(f_pTestResultFile, " <CUNIT_RUN_TEST_RECORD> \n" " <CUNIT_RUN_TEST_SUCCESS> \n" " <TEST_NAME> %s </TEST_NAME> \n" " </CUNIT_RUN_TEST_SUCCESS> \n" " </CUNIT_RUN_TEST_RECORD> \n", (NULL != pTest->pName) ? pTest->pName : ""); } }
/** Handler function called at completion of each test. * @param pTest The test being run. * @param pSuite The suite containing the test. * @param pFailure Pointer to the 1st failure record for this test. */ static void curses_test_complete_message_handler(const CU_pTest pTest, const CU_pSuite pSuite, const CU_pFailureRecord pFailure) { /* Not used in curses implementation - quiet compiler warning */ CU_UNREFERENCED_PARAMETER(pTest); CU_UNREFERENCED_PARAMETER(pSuite); CU_UNREFERENCED_PARAMETER(pFailure); f_uiTestsRun++; if (CU_get_number_of_tests_failed() != f_uiTestsFailed) { f_uiTestsFailed++; } else { f_uiTestsRunSuccessful++; } refresh_summary_window(); refresh_progress_window(); }
/** Handler function called at completion of all tests in a suite. * @param pFailure Pointer to the test failure record list. */ static void automated_all_tests_complete_message_handler(const CU_pFailureRecord pFailure) { CU_pTestRegistry pRegistry = CU_get_registry(); CU_pRunSummary pRunSummary = CU_get_run_summary(); CU_UNREFERENCED_PARAMETER(pFailure); /* not used */ assert(NULL != pRegistry); assert(NULL != pRunSummary); assert(NULL != f_pTestResultFile); if ((NULL != f_pRunningSuite) && (CU_TRUE == f_bWriting_CUNIT_RUN_SUITE)) { fprintf(f_pTestResultFile, " </CUNIT_RUN_SUITE_SUCCESS> \n" " </CUNIT_RUN_SUITE> \n"); } fprintf(f_pTestResultFile, " </CUNIT_RESULT_LISTING>\n" " <CUNIT_RUN_SUMMARY> \n"); fprintf(f_pTestResultFile, " <CUNIT_RUN_SUMMARY_RECORD> \n" " <TYPE> Suites </TYPE> \n" " <TOTAL> %u </TOTAL> \n" " <RUN> %u </RUN> \n" " <SUCCEEDED> - NA - </SUCCEEDED> \n" " <FAILED> %u </FAILED> \n" " </CUNIT_RUN_SUMMARY_RECORD> \n", pRegistry->uiNumberOfSuites, pRunSummary->nSuitesRun, pRunSummary->nSuitesFailed ); fprintf(f_pTestResultFile, " <CUNIT_RUN_SUMMARY_RECORD> \n" " <TYPE> Test Cases </TYPE> \n" " <TOTAL> %u </TOTAL> \n" " <RUN> %u </RUN> \n" " <SUCCEEDED> %u </SUCCEEDED> \n" " <FAILED> %u </FAILED> \n" " </CUNIT_RUN_SUMMARY_RECORD> \n", pRegistry->uiNumberOfTests, pRunSummary->nTestsRun, pRunSummary->nTestsRun - pRunSummary->nTestsFailed, pRunSummary->nTestsFailed ); fprintf(f_pTestResultFile, " <CUNIT_RUN_SUMMARY_RECORD> \n" " <TYPE> Assertions </TYPE> \n" " <TOTAL> %u </TOTAL> \n" " <RUN> %u </RUN> \n" " <SUCCEEDED> %u </SUCCEEDED> \n" " <FAILED> %u </FAILED> \n" " </CUNIT_RUN_SUMMARY_RECORD> \n" " </CUNIT_RUN_SUMMARY> \n", pRunSummary->nAsserts, pRunSummary->nAsserts, pRunSummary->nAsserts - pRunSummary->nAssertsFailed, pRunSummary->nAssertsFailed ); }