use super::action::{Action, VertDirection};
use super::{KeyCombos, ModifiedKey};
use crate::opts::Config;
use crate::test_utils::init_test_log;
use winit::event::{ModifiersState, VirtualKeyCode as VirtKey};
#[test]
fn sanity() {
init_test_log();
let config = r#"
[keybindings]
base = [
["ToTop", ["g", "g"]],
["ToBottom", { key = "g", mod = ["Shift"] }],
["ScrollDown", ["g", "j"]],
["ScrollDown", "j"],
]
"#;
let Config { keybindings, .. } = Config::load_from_str(config).unwrap();
let mut key_combos = KeyCombos::new(keybindings).unwrap();
let g: ModifiedKey = VirtKey::G.into();
let l_shift = VirtKey::LShift.into();
let cap_g = ModifiedKey(g.0, ModifiersState::SHIFT);
let j = VirtKey::J.into();
let test_vectors = [
(g, None),
(l_shift, None),
(cap_g, Some(Action::ToEdge(VertDirection::Down))),
(g, None),
(g, Some(Action::ToEdge(VertDirection::Up))),
(j, Some(Action::Scroll(VertDirection::Down))),
];
for (key, maybe_action) in test_vectors {
assert_eq!(key_combos.munch(key), maybe_action);
}
}