use reaction::mapping::binding::InputBinding;
use reaction::prelude::*;
use reaction::trigger::evaluator::Triggerable;
use reaction::trigger::trigger::InputTrigger;
#[test]
fn test_held_trigger() {
let mut input = AdvancedInputState::new();
let binding = InputBinding::Key(KeyCode::KeyA);
let trigger = InputTrigger::Held {
min_duration: 100.0,
};
input.keyboard.press(KeyCode::KeyA, 0.0, 1);
input.end_frame(16.0);
assert!(!binding.evaluate(&trigger, &input, None));
input.end_frame(100.0);
assert!(binding.evaluate(&trigger, &input, None));
input.keyboard.release(KeyCode::KeyA, 2);
input.end_frame(16.0);
assert!(!binding.evaluate(&trigger, &input, None));
}
#[test]
fn test_edge_triggers() {
let mut input = AdvancedInputState::new();
let binding = InputBinding::Key(KeyCode::KeyB);
input.keyboard.press(KeyCode::KeyB, 0.0, 1);
assert!(binding.evaluate(&InputTrigger::Pressed, &input, None));
assert!(binding.evaluate(&InputTrigger::Down, &input, None));
input.end_frame(16.0);
assert!(!binding.evaluate(&InputTrigger::Pressed, &input, None)); assert!(binding.evaluate(&InputTrigger::Down, &input, None));
}