This repository has been archived on 2026-10-10. You can view files and clone it, but cannot push or open issues or pull requests.
molotov/crates/molotov-core/tests/input_haptics_test.rs

29 lines
1.1 KiB
Rust

// SPDX-License-Identifier: GPL-3.0-or-later
use molotov_core::input::gamepad::{translate_button_to_android, AndroidKeyCode, GamepadButton, GamepadType};
use molotov_core::input::ime::Rect;
use molotov_core::input::manager::InputManager;
#[test]
fn test_end_to_end_ime_and_gamepad_rumble() {
let mut manager = InputManager::new();
// 1. Text Chat IME Preedit flow
manager.ime.start_text_input(Rect { x: 50, y: 100, width: 300, height: 30 });
manager.ime.update_preedit("nihao", 5);
assert_eq!(manager.ime.preedit_text(), "nihao");
let committed = manager.ime.commit_text("你好");
assert_eq!(committed, "你好");
assert_eq!(manager.ime.preedit_text(), "");
// 2. Controller Input Translation
let key = translate_button_to_android(GamepadButton::South, GamepadType::Xbox);
assert_eq!(key, AndroidKeyCode::ButtonA);
// 3. Controller Haptic Actuation
manager.haptics.rumble(0, 0.75, 0.25, 150);
let state = manager.haptics.get_state(0).unwrap();
assert_eq!(state.low_freq_motor, (0.75 * 65535.0) as u16);
assert_eq!(state.high_freq_motor, (0.25 * 65535.0) as u16);
assert_eq!(state.duration_ms, 150);
}