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);
}