use super::super::*; use crate::input::plugin::*; use leafwing_input_manager::prelude::*; #[derive(Actionlike, Reflect, Clone, Debug, PartialEq, Eq, Hash, Default)] enum Action { #[default] #[actionlike(DualAxis)] DualAxis, #[actionlike(Axis)] SingleAxis, Button, } #[test] fn asset_from_map() { let mut input_map = InputMap::default(); input_map.insert(Action::Button, KeyCode::KeyE); input_map.insert(Action::Button, GamepadButton::East); input_map.insert_axis(Action::SingleAxis, GamepadAxis::LeftStickX); input_map.insert_axis(Action::SingleAxis, VirtualAxis::ad()); input_map.insert_dual_axis(Action::DualAxis, GamepadStick::RIGHT); input_map.insert_dual_axis(Action::DualAxis, VirtualDPad::wasd()); let mut expected_input_asset = InputAsset::default(); expected_input_asset.insert(Action::Button, MultiInput { keyboard: Some(vec![KeyCode::KeyE]), gamepad: Some(vec![GamepadButton::East]), mouse: None, }.into()); expected_input_asset.insert(Action::SingleAxis, InputKind::Axis(vec![ Box::new(GamepadAxis::LeftStickX), Box::new(VirtualAxis::ad()), ])); expected_input_asset.insert(Action::DualAxis, InputKind::DualAxis(vec![ Box::new(GamepadStick::RIGHT), Box::new(VirtualDPad::wasd()), ])); let input_asset = InputAsset::from(input_map); assert_eq!(input_asset, expected_input_asset); } #[test] fn map_from_asset() { let mut input_asset = InputAsset::default(); input_asset.insert(Action::Button, MultiInput { keyboard: Some(vec![KeyCode::KeyE]), gamepad: Some(vec![GamepadButton::East]), mouse: None, }.into()); input_asset.insert(Action::SingleAxis, InputKind::Axis(vec![ Box::new(GamepadAxis::LeftStickX), Box::new(VirtualAxis::ad()), ])); input_asset.insert(Action::DualAxis, InputKind::DualAxis(vec![ Box::new(GamepadStick::RIGHT), Box::new(VirtualDPad::wasd()), ])); let mut expected_input_map = InputMap::default(); expected_input_map.insert(Action::Button, KeyCode::KeyE); expected_input_map.insert(Action::Button, GamepadButton::East); expected_input_map.insert_axis(Action::SingleAxis, GamepadAxis::LeftStickX); expected_input_map.insert_axis(Action::SingleAxis, VirtualAxis::ad()); expected_input_map.insert_dual_axis(Action::DualAxis, GamepadStick::RIGHT); expected_input_map.insert_dual_axis(Action::DualAxis, VirtualDPad::wasd()); let input_map = InputMap::from(input_asset); assert_eq!(input_map, expected_input_map); }