use crate::action::Action;
use crate::event::{Event, KeyEvent, KeyValue};
use crate::tests::assert_actions;
use evdev::KeyCode as Key;
use indoc::indoc;
use std::time::Duration;
#[test]
fn test_default_start_mode() {
assert_actions(
indoc! {"
keymap:
- mode: default
remap:
A: B
"},
vec![Event::key_press(Key::KEY_A)],
vec![
Action::KeyEvent(KeyEvent::new(Key::KEY_B, KeyValue::Press)),
Action::KeyEvent(KeyEvent::new(Key::KEY_B, KeyValue::Release)),
Action::Delay(Duration::from_nanos(0)),
Action::Delay(Duration::from_nanos(0)),
],
)
}
#[test]
fn test_custom_start_mode() {
assert_actions(
indoc! {"
default_mode: start_mode
keymap:
- mode: start_mode
remap:
A: B
"},
vec![Event::key_press(Key::KEY_A)],
vec![
Action::KeyEvent(KeyEvent::new(Key::KEY_B, KeyValue::Press)),
Action::KeyEvent(KeyEvent::new(Key::KEY_B, KeyValue::Release)),
Action::Delay(Duration::from_nanos(0)),
Action::Delay(Duration::from_nanos(0)),
],
)
}
#[test]
fn test_unspecified_mode_matches_all_modes() {
assert_actions(
indoc! {"
default_mode: unused_mode
keymap:
- remap:
A: B
"},
vec![Event::key_press(Key::KEY_A)],
vec![
Action::KeyEvent(KeyEvent::new(Key::KEY_B, KeyValue::Press)),
Action::KeyEvent(KeyEvent::new(Key::KEY_B, KeyValue::Release)),
Action::Delay(Duration::from_nanos(0)),
Action::Delay(Duration::from_nanos(0)),
],
)
}