5.3 Hardware Test Example

/* tests/test_hardware.c */
#include "d3tui.h"
#include "d3tui_test.h"

void test_vmu_integration(void) {
    d3tui_vmu_manager_t *mgr = d3tui_vmu_create(4);

    // Detect VMUs
    size_t count = d3tui_vmu_detect(mgr);

    d3tui_log_info("Detected %zu VMUs", count);

    if (count == 0) {
        d3tui_test_skip("No VMUs detected");
        return;
    }

    // Test first VMU
    d3tui_vmu_addr_t addr = {0, 0}; // Port A, slot 1
    if (!d3tui_vmu_exists(mgr, addr)) {
        d3tui_test_skip("No VMU at port A, slot 1");
        return;
    }

    // Enable VMU
    d3tui_vmu_enable(mgr, addr, true);

    // Test rendering
    d3tui_vmu_clear(mgr, addr);
    d3tui_vmu_render_text(mgr, addr, 0, 0, "Hello VMU!");
    d3tui_vmu_update(mgr);

    // Verify (visual inspection required)
    d3tui_assert_true(true, "VMU test completed");

    d3tui_vmu_destroy(mgr);
}

void test_controller_input(void) {
    d3tui_input_handler_t *input = d3tui_input_create();

    // Update input
    d3tui_input_update(input);

    // Check if controller is connected
    const d3tui_controller_state_t *state = d3tui_input_get_controller(input);

    if (state == NULL) {
        d3tui_test_skip("No controller detected");
        return;
    }

    // Test button states
    bool a_pressed = d3tui_input_button_pressed(input, D3TUI_BUTTON_A);
    bool b_pressed = d3tui_input_button_pressed(input, D3TUI_BUTTON_B);

    d3tui_log_info("A pressed: %d, B pressed: %d", a_pressed, b_pressed);

    // Test analog sticks
    int16_t lx = state->left_stick_x;
    int16_t ly = state->left_stick_y;

    d3tui_log_info("Left stick: (%d, %d)", lx, ly);

    d3tui_assert_true(true, "Controller test completed");

    d3tui_input_destroy(input);
}