#include "test_support.h" #include #include "../../switch_input.h" namespace { bool switch_input_constants_match_legacy_values() { // Given/When: the shared input constants are compiled after extraction. // Then: every UART-visible legacy value remains unchanged. CHECK(SWITCH_PRO_HAT_UP == 0x00 && SWITCH_PRO_HAT_UPRIGHT == 0x01); CHECK(SWITCH_PRO_HAT_RIGHT == 0x02 && SWITCH_PRO_HAT_DOWNRIGHT == 0x03); CHECK(SWITCH_PRO_HAT_DOWN == 0x04 && SWITCH_PRO_HAT_DOWNLEFT == 0x05); CHECK(SWITCH_PRO_HAT_LEFT == 0x06 && SWITCH_PRO_HAT_UPLEFT == 0x07); CHECK(SWITCH_PRO_HAT_NOTHING == 0x08); CHECK(SWITCH_PRO_MASK_Y == (1U << 0) && SWITCH_PRO_MASK_B == (1U << 1)); CHECK(SWITCH_PRO_MASK_A == (1U << 2) && SWITCH_PRO_MASK_X == (1U << 3)); CHECK(SWITCH_PRO_MASK_L == (1U << 4) && SWITCH_PRO_MASK_R == (1U << 5)); CHECK(SWITCH_PRO_MASK_ZL == (1U << 6) && SWITCH_PRO_MASK_ZR == (1U << 7)); CHECK(SWITCH_PRO_MASK_MINUS == (1U << 8) && SWITCH_PRO_MASK_PLUS == (1U << 9)); CHECK(SWITCH_PRO_MASK_L3 == (1U << 10) && SWITCH_PRO_MASK_R3 == (1U << 11)); CHECK(SWITCH_PRO_MASK_HOME == (1U << 12) && SWITCH_PRO_MASK_CAPTURE == (1U << 13)); CHECK(SWITCH_PRO_JOYSTICK_MIN == 0x0000); CHECK(SWITCH_PRO_JOYSTICK_MID == 0x7FFF); CHECK(SWITCH_PRO_JOYSTICK_MAX == 0xFFFF); return true; } bool switch_input_layout_matches_legacy_layout() { // Given/When: the shared input types are compiled after extraction. // Then: field offsets and aggregate sizes match the former driver-owned layout. CHECK(sizeof(SwitchImuSample) == 12); CHECK(offsetof(SwitchImuSample, accel_x) == 0); CHECK(offsetof(SwitchImuSample, gyro_z) == 10); CHECK(offsetof(SwitchInputState, dpad_up) == 0); CHECK(offsetof(SwitchInputState, button_a) == 4); CHECK(offsetof(SwitchInputState, button_r3) == 17); CHECK(offsetof(SwitchInputState, lx) == 18); CHECK(offsetof(SwitchInputState, ry) == 24); CHECK(offsetof(SwitchInputState, imu_sample_count) == 26); CHECK(offsetof(SwitchInputState, imu_samples) == 28); CHECK(sizeof(SwitchInputState) == 64); return true; } } // namespace void run_switch_input_tests(TestRunner& runner) { runner.run("shared input constants preserve legacy values", switch_input_constants_match_legacy_values); runner.run("shared input types preserve legacy layout", switch_input_layout_matches_legacy_layout); }