void test_cunit_CUError(void) { CU_ErrorCode old_err = CU_get_error(); CU_ErrorAction old_action = CU_get_error_action(); test_cunit_start_tests("CUError.c"); /* CU_set_error() & CU_get_error() */ CU_set_error(CUE_NOMEMORY); TEST(CU_get_error() != CUE_SUCCESS); TEST(CU_get_error() == CUE_NOMEMORY); CU_set_error(CUE_NOREGISTRY); TEST(CU_get_error() != CUE_SUCCESS); TEST(CU_get_error() == CUE_NOREGISTRY); /* CU_get_error_msg() */ CU_set_error(CUE_SUCCESS); TEST(!strcmp(CU_get_error_msg(), get_error_desc(CUE_SUCCESS))); CU_set_error(CUE_NOTEST); TEST(!strcmp(CU_get_error_msg(), get_error_desc(CUE_NOTEST))); CU_set_error(CUE_NOMEMORY); TEST(!strcmp(CU_get_error_msg(), get_error_desc(CUE_NOMEMORY))); TEST(strcmp(CU_get_error_msg(), get_error_desc(CUE_SCLEAN_FAILED))); TEST(!strcmp(get_error_desc(100), "Undefined Error")); /* CU_set_error_action() & CU_get_error_action() */ CU_set_error_action(CUEA_FAIL); TEST(CU_get_error_action() != CUEA_IGNORE); TEST(CU_get_error_action() == CUEA_FAIL); TEST(CU_get_error_action() != CUEA_ABORT); CU_set_error_action(CUEA_ABORT); TEST(CU_get_error_action() != CUEA_IGNORE); TEST(CU_get_error_action() != CUEA_FAIL); TEST(CU_get_error_action() == CUEA_ABORT); /* reset values */ CU_set_error(old_err); CU_set_error_action(old_action); test_cunit_end_tests(); }
/** 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 (NULL == pRegistry) { CU_set_error(CUE_NOREGISTRY); } else if ((NULL == szFilename) || (0 == 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"); fprintf(pTestListFile, " <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> %u </CUNIT_LIST_TOTAL_SUMMARY_RECORD_VALUE> \n" " </CUNIT_LIST_TOTAL_SUMMARY_RECORD> \n", pRegistry->uiNumberOfSuites); fprintf(pTestListFile, " <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> %u </CUNIT_LIST_TOTAL_SUMMARY_RECORD_VALUE> \n" " </CUNIT_LIST_TOTAL_SUMMARY_RECORD> \n" " </CUNIT_LIST_TOTAL_SUMMARY> \n", pRegistry->uiNumberOfTests); fprintf(pTestListFile, " <CUNIT_ALL_TEST_LISTING> \n"); pSuite = pRegistry->pSuite; while (NULL != 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> %u </TEST_COUNT_VALUE> \n" " </CUNIT_ALL_TEST_LISTING_SUITE_DEFINITION> \n", (NULL != pSuite->pName) ? pSuite->pName : "", (NULL != pSuite->pInitializeFunc) ? "Yes" : "No", (NULL != pSuite->pCleanupFunc) ? "Yes" : "No", pSuite->uiNumberOfTests); fprintf(pTestListFile, " <CUNIT_ALL_TEST_LISTING_SUITE_TESTS> \n"); while (NULL != pTest) { fprintf(pTestListFile, " <TEST_CASE_NAME> %s </TEST_CASE_NAME> \n", (NULL != pTest->pName) ? 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); // grace del //szTime = ctime(&tTime); szTime = NULL; // grace add fprintf(pTestListFile, " <CUNIT_FOOTER> File Generated By CUnit v" CU_VERSION " at %s </CUNIT_FOOTER> \n" "</CUNIT_TEST_LIST_REPORT>", (NULL != szTime) ? szTime : ""); if (0 != fclose(pTestListFile)) { CU_set_error(CUE_FCLOSE_FAILED); } } return CU_get_error(); }