/** 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(); }
/* ** The main() function for setting up and running the tests. ** Returns a CUE_SUCCESS on successful running, another ** CUnit error code on failure. */ int main(int argc, char *argv[]) { int index; char *suite_name; CU_pSuite suite_to_run; char *test_name; CU_pTest test_to_run; CU_ErrorCode errCode = 0; CU_pTestRegistry registry; int num_run; int num_failed; PG_SuiteSetup *setupfunc = setupfuncs; /* Install the custom error handler */ lwgeom_set_handlers(0, 0, 0, cu_errorreporter, 0); /* Initialize the CUnit test registry */ if (CUE_SUCCESS != CU_initialize_registry()) { errCode = CU_get_error(); printf(" Error attempting to initialize registry: %d. See CUError.h for error code list.\n", errCode); return errCode; } /* Register all the test suites. */ while ( *setupfunc ) { (*setupfunc)(); setupfunc++; } /* Run all tests using the CUnit Basic interface */ CU_basic_set_mode(CU_BRM_VERBOSE); if (argc <= 1) { errCode = CU_basic_run_tests(); } else { /* NOTE: The cunit functions used here (CU_get_registry, CU_get_suite_by_name, and CU_get_test_by_name) are * listed with the following warning: "Internal CUnit system functions. Should not be routinely called by users." * However, there didn't seem to be any other way to get tests by name, so we're calling them. */ registry = CU_get_registry(); for (index = 1; index < argc; index++) { suite_name = argv[index]; test_name = NULL; suite_to_run = CU_get_suite_by_name(suite_name, registry); if (NULL == suite_to_run) { /* See if it's a test name instead of a suite name. */ suite_to_run = registry->pSuite; while (suite_to_run != NULL) { test_to_run = CU_get_test_by_name(suite_name, suite_to_run); if (test_to_run != NULL) { /* It was a test name. */ test_name = suite_name; suite_name = suite_to_run->pName; break; } suite_to_run = suite_to_run->pNext; } } if (suite_to_run == NULL) { printf("\n'%s' does not appear to be either a suite name or a test name.\n\n", suite_name); } else { if (test_name != NULL) { /* Run only this test. */ printf("\nRunning test '%s' in suite '%s'.\n", test_name, suite_name); /* This should be CU_basic_run_test, but that method is broken, see: * https://sourceforge.net/tracker/?func=detail&aid=2851925&group_id=32992&atid=407088 * This one doesn't output anything for success, so we have to do it manually. */ errCode = CU_run_test(suite_to_run, test_to_run); if (errCode != CUE_SUCCESS) { printf(" Error attempting to run tests: %d. See CUError.h for error code list.\n", errCode); } else { num_run = CU_get_number_of_asserts(); num_failed = CU_get_number_of_failures(); printf("\n %s - asserts - %3d passed, %3d failed, %3d total.\n\n", (0 == num_failed ? "PASSED" : "FAILED"), (num_run - num_failed), num_failed, num_run); } } else { /* Run all the tests in the suite. */ printf("\nRunning all tests in suite '%s'.\n", suite_name); /* This should be CU_basic_run_suite, but that method is broken, see: * https://sourceforge.net/tracker/?func=detail&aid=2851925&group_id=32992&atid=407088 * This one doesn't output anything for success, so we have to do it manually. */ errCode = CU_run_suite(suite_to_run); if (errCode != CUE_SUCCESS) { printf(" Error attempting to run tests: %d. See CUError.h for error code list.\n", errCode); } else { num_run = CU_get_number_of_tests_run(); num_failed = CU_get_number_of_tests_failed(); printf("\n %s - tests - %3d passed, %3d failed, %3d total.\n", (0 == num_failed ? "PASSED" : "FAILED"), (num_run - num_failed), num_failed, num_run); num_run = CU_get_number_of_asserts(); num_failed = CU_get_number_of_failures(); printf(" - asserts - %3d passed, %3d failed, %3d total.\n\n", (num_run - num_failed), num_failed, num_run); } } } } /* Presumably if the CU_basic_run_[test|suite] functions worked, we wouldn't have to do this. */ CU_basic_show_failures(CU_get_failure_list()); printf("\n\n"); /* basic_show_failures leaves off line breaks. */ } num_failed = CU_get_number_of_failures(); CU_cleanup_registry(); return num_failed; }
int main(int argc, char **argv) { CU_pSuite pSuite = NULL; if (CUE_SUCCESS != CU_initialize_registry()) return CU_get_error(); pSuite = CU_add_suite("suite_serverInit", NULL, NULL); if (NULL == pSuite) { CU_cleanup_registry(); return CU_get_error(); } if (NULL == CU_add_test(pSuite, "TEST: Server Initialization", test_serverInit)) { CU_cleanup_registry(); return CU_get_error(); } pSuite = CU_add_suite("suite_serverHandlers", NULL, NULL); if (NULL == pSuite) { CU_cleanup_registry(); return CU_get_error(); } if ((NULL == CU_add_test(pSuite, "TEST: Server Handlers - Add users", test_serverHandler_userAdd)) || (NULL == CU_add_test(pSuite, "TEST: Server Handlers - Add books", test_serverHandler_bookAdd)) || (NULL == CU_add_test(pSuite, "TEST: Server Handlers - Retrieve book properties", test_serverHandler_bookProp)) || (NULL == CU_add_test(pSuite, "TEST: Server Handlers - Create user activities and book history", test_serverHandler_createActy)) || (NULL == CU_add_test(pSuite, "TEST: Server Handlers - Send/receive messages", test_serverHandler_msgs)) || (NULL == CU_add_test(pSuite, "TEST: Server Handlers - Retrieve user activies and bok history", test_serverHandler_checkActies))) { CU_cleanup_registry(); return CU_get_error(); } pSuite = CU_add_suite("suite_serverTerm", NULL, NULL); if (NULL == pSuite) { CU_cleanup_registry(); return CU_get_error(); } if (NULL == CU_add_test(pSuite, "TEST: Server Termination", test_serverTerm)) { CU_cleanup_registry(); return CU_get_error(); } /* Run all tests using the CUnit Basic interface */ CU_basic_set_mode(CU_BRM_VERBOSE); /*CU_basic_run_tests();*/ CU_automated_run_tests(); CU_list_tests_to_file(); printf("\n\n"); printf("======================================\n"); printf(" number of suites run: %d\n", CU_get_number_of_suites_run()); printf(" number of suites failed: %d\n", CU_get_number_of_suites_failed()); printf(" number of tests run: %d\n", CU_get_number_of_tests_run()); printf(" number of tests failed: %d\n", CU_get_number_of_tests_failed()); printf(" number of asserts done: %d\n", CU_get_number_of_asserts()); printf(" number of asserts successful: %d\n", CU_get_number_of_successes()); printf(" number of asserts failed: %d\n", CU_get_number_of_failures()); printf("======================================\n"); CU_cleanup_registry(); return CU_get_error(); }