3.2 Data Structures

/* Test result */
typedef enum {
    D3TUI_TEST_PASSED,
    D3TUI_TEST_FAILED,
    D3TUI_TEST_SKIPPED,
    D3TUI_TEST_ERROR
} d3tui_test_result_t;

/* Test case */
typedef struct {
    const char *name;             /* Test name */
    const char *suite;            /* Test suite */
    void (*func)(void);          /* Test function */
    d3tui_test_result_t result; /* Test result */
    const char *failure_msg;     /* Failure message */
    uint32_t duration_ms;       /* Test duration */
    bool enabled;               /* Test enabled */
} d3tui_test_case_t;

/* Test suite */
typedef struct {
    const char *name;             /* Suite name */
    d3tui_test_case_t *tests;    /* Array of tests */
    size_t test_count;           /* Number of tests */
    size_t passed;               /* Passed count */
    size_t failed;               /* Failed count */
    size_t skipped;              /* Skipped count */
    size_t errors;               /* Error count */
} d3tui_test_suite_t;

/* Test runner */
typedef struct {
    d3tui_test_suite_t *suites;  /* Array of suites */
    size_t suite_count;          /* Number of suites */
    size_t total_passed;         /* Total passed */
    size_t total_failed;         /* Total failed */
    size_t total_skipped;        /* Total skipped */
    size_t total_errors;         /* Total errors */
    bool verbose;                /* Verbose output */
    bool stop_on_failure;        /* Stop on first failure */
} d3tui_test_runner_t;