6.3 Test Reporting
/* Print test results */
void d3tui_test_print_results(const d3tui_test_runner_t *runner) {
printf("\n");
printf("==================================================\n");
printf("Test Results\n");
printf("==================================================\n");
for (size_t i = 0; i < runner->suite_count; i++) {
d3tui_test_suite_t *suite = &runner->suites[i];
printf("\n%s:\n", suite->name);
for (size_t j = 0; j < suite->test_count; j++) {
d3tui_test_case_t *test = &suite->tests[j];
const char *status;
switch (test->result) {
case D3TUI_TEST_PASSED: status = "PASS"; break;
case D3TUI_TEST_FAILED: status = "FAIL"; break;
case D3TUI_TEST_SKIPPED: status = "SKIP"; break;
case D3TUI_TEST_ERROR: status = "ERROR"; break;
default: status = "UNKNOWN"; break;
}
printf(" [%s] %s (%ums)", status, test->name, test->duration_ms);
if (test->result == D3TUI_TEST_FAILED && test->failure_msg) {
printf(": %s", test->failure_msg);
}
printf("\n");
}
printf(" %zu passed, %zu failed, %zu skipped, %zu errors\n",
suite->passed, suite->failed, suite->skipped, suite->errors);
}
printf("\n==================================================\n");
printf("Total: %zu passed, %zu failed, %zu skipped, %zu errors\n",
runner->total_passed, runner->total_failed,
runner->total_skipped, runner->total_errors);
printf("==================================================\n");
}