⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 automated.c

📁 CUNIT
💻 C
📖 第 1 页 / 共 2 页
字号:
  CU_pFailureRecord pTempFailure = pFailure;  /* pSuite is not used except in assertion */  (void)pSuite;  assert(f_pTestResultFile);  if (pTempFailure) {    /* worst cast is a string of special chars */    char szTemp[CUNIT_MAX_ENTITY_LEN * CUNIT_MAX_STRING_LENGTH];    while (pTempFailure) {      assert(pTempFailure->pSuite && (pTempFailure->pSuite == pSuite));      assert(pTempFailure->pTest && (pTempFailure->pTest == pTest));      CU_translate_special_characters(pTempFailure->strCondition, szTemp, sizeof(szTemp));      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",              pTest->pName, 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",            pTest->pName);  }}/*------------------------------------------------------------------------*//** 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();  (void)pFailure;  /* not used - quiet compiler warning */  assert(pRegistry);  assert(pRunSummary);  assert(f_pTestResultFile);  if (f_pRunningSuite && 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"          "    <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"          "    <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"          "    <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",          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 when suite initialization fails. * @param pSuite The suite for which initialization failed. */static void automated_suite_init_failure_message_handler(const CU_pSuite pSuite){  assert(pSuite);  assert(f_pTestResultFile);  if (f_bWriting_CUNIT_RUN_SUITE) {    fprintf(f_pTestResultFile,            "      </CUNIT_RUN_SUITE_SUCCESS> \n"            "    </CUNIT_RUN_SUITE> \n");    f_bWriting_CUNIT_RUN_SUITE = FALSE;  }  fprintf(f_pTestResultFile,          "    <CUNIT_RUN_SUITE> \n"          "      <CUNIT_RUN_SUITE_FAILURE> \n"          "        <SUITE_NAME> %s </SUITE_NAME> \n"          "        <FAILURE_REASON> %s </FAILURE_REASON> \n"          "      </CUNIT_RUN_SUITE_FAILURE> \n"          "    </CUNIT_RUN_SUITE>  \n",          pSuite->pName, "Initialize Failed");}/*------------------------------------------------------------------------*//** Finalize and close the results output file generated * by the automated interface. */static CU_ErrorCode uninitialize_result_file(void){  char* szTime;  time_t tTime = 0;  assert(f_pTestResultFile);  CU_set_error(CUE_SUCCESS);  time(&tTime);  szTime = ctime(&tTime);  fprintf(f_pTestResultFile,          "  <CUNIT_FOOTER> File Generated By CUnit at %s </CUNIT_FOOTER> \n"          "</CUNIT_TEST_RUN_REPORT>",          szTime ? szTime : "");  if (fclose(f_pTestResultFile))    CU_set_error(CUE_FCLOSE_FAILED);  return CU_get_error();}/*------------------------------------------------------------------------*//** Generate an xml listing of all tests in all suites for the * specified test registry.  The output is directed to a file * having the specified name. * @param pRegistry   Test registry for which to generate list (non-NULL). * @param szFilename  Non-NULL, non-empty string containing name for *                    listing file. * @return  A CU_ErrorCode indicating the error status. */static CU_ErrorCode automated_list_all_tests(CU_pTestRegistry pRegistry, const char* szFilename){  CU_pSuite pSuite = NULL;  CU_pTest  pTest = NULL;  FILE* pTestListFile = NULL;  char* szTime;  time_t tTime = 0;                        CU_set_error(CUE_SUCCESS);  if (!pRegistry) {    CU_set_error(CUE_NOREGISTRY);  }  else if ((!szFilename) || (!strlen(szFilename))) {    CU_set_error(CUE_BAD_FILENAME);  }  else if (NULL == (pTestListFile = fopen(f_szTestListFileName, "w"))) {    CU_set_error(CUE_FOPEN_FAILED);  }  else {    setvbuf(pTestListFile, NULL, _IONBF, 0);    fprintf(pTestListFile,            "<?xml version=\"1.0\" ?> \n"            "<?xml-stylesheet type=\"text/xsl\" href=\"CUnit-List.xsl\" ?> \n"            "<!DOCTYPE CUNIT_TEST_LIST_REPORT SYSTEM \"CUnit-List.dtd\"> \n"            "<CUNIT_TEST_LIST_REPORT> \n"            "  <CUNIT_HEADER/> \n"            "  <CUNIT_LIST_TOTAL_SUMMARY> \n"            "    <CUNIT_LIST_TOTAL_SUMMARY_RECORD> \n"            "      <CUNIT_LIST_TOTAL_SUMMARY_RECORD_TEXT> Total Number of Suites </CUNIT_LIST_TOTAL_SUMMARY_RECORD_TEXT> \n"            "      <CUNIT_LIST_TOTAL_SUMMARY_RECORD_VALUE> %d </CUNIT_LIST_TOTAL_SUMMARY_RECORD_VALUE> \n"            "    </CUNIT_LIST_TOTAL_SUMMARY_RECORD> \n"            "    <CUNIT_LIST_TOTAL_SUMMARY_RECORD> \n"            "      <CUNIT_LIST_TOTAL_SUMMARY_RECORD_TEXT> Total Number of Test Cases </CUNIT_LIST_TOTAL_SUMMARY_RECORD_TEXT> \n"            "      <CUNIT_LIST_TOTAL_SUMMARY_RECORD_VALUE> %d </CUNIT_LIST_TOTAL_SUMMARY_RECORD_VALUE> \n"            "    </CUNIT_LIST_TOTAL_SUMMARY_RECORD> \n"            "  </CUNIT_LIST_TOTAL_SUMMARY> \n",            pRegistry->uiNumberOfSuites,            pRegistry->uiNumberOfTests);    fprintf(pTestListFile,            "  <CUNIT_ALL_TEST_LISTING> \n");    pSuite = pRegistry->pSuite;    while (pSuite) {      pTest = pSuite->pTest;      fprintf(pTestListFile,              "    <CUNIT_ALL_TEST_LISTING_SUITE> \n"              "      <CUNIT_ALL_TEST_LISTING_SUITE_DEFINITION> \n"              "        <SUITE_NAME> %s </SUITE_NAME> \n"              "        <INITIALIZE_VALUE> %s </INITIALIZE_VALUE> \n"              "        <CLEANUP_VALUE>  %s </CLEANUP_VALUE> \n"              "        <TEST_COUNT_VALUE> %d </TEST_COUNT_VALUE> \n"              "      </CUNIT_ALL_TEST_LISTING_SUITE_DEFINITION> \n",              pSuite->pName,              pSuite->pInitializeFunc ? "Yes" : "No",              pSuite->pCleanupFunc ? "Yes" : "No",              pSuite->uiNumberOfTests);      fprintf(pTestListFile,              "      <CUNIT_ALL_TEST_LISTING_SUITE_TESTS> \n");      while (pTest) {        fprintf(pTestListFile,                "        <TEST_CASE_NAME> %s </TEST_CASE_NAME> \n", pTest->pName);        pTest = pTest->pNext;      }      fprintf(pTestListFile,              "      </CUNIT_ALL_TEST_LISTING_SUITE_TESTS> \n"              "    </CUNIT_ALL_TEST_LISTING_SUITE> \n");      pSuite = pSuite->pNext;    }    fprintf(pTestListFile, "  </CUNIT_ALL_TEST_LISTING> \n");    time(&tTime);    szTime = ctime(&tTime);    fprintf(pTestListFile,            "  <CUNIT_FOOTER> File Generated By CUnit at %s </CUNIT_FOOTER> \n"            "</CUNIT_TEST_LIST_REPORT>",            szTime ? szTime : "");    if (0 != fclose(pTestListFile))      CU_set_error(CUE_FCLOSE_FAILED);  }  return CU_get_error();}/** @} */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -