#[cfg(test)]
mod tests {
use crossterm::event::*;
use r3bl_rs_utils_core::*;
use crate::*;
#[test]
fn test_keypress_character_key() {
{
let macro_syntax = keypress! { @char 'a' };
let struct_syntax = KeyPress::Plain {
key: Key::Character('a'),
};
assert_eq2!(macro_syntax, struct_syntax);
}
{
let macro_syntax =
keypress! { @char ModifierKeysMask::new().with_shift().with_ctrl(), 'a' };
let struct_syntax = KeyPress::WithModifiers {
key: Key::Character('a'),
mask: ModifierKeysMask::new().with_shift().with_ctrl(),
};
assert_eq2!(macro_syntax, struct_syntax);
}
}
#[test]
fn test_keypress_special_key() {
{
let macro_syntax = keypress! { @special SpecialKey::Left };
let struct_syntax = KeyPress::Plain {
key: Key::SpecialKey(SpecialKey::Left),
};
assert_eq2!(macro_syntax, struct_syntax);
}
{
let macro_syntax = keypress! { @special ModifierKeysMask::new().with_alt().with_ctrl(), SpecialKey::Left };
let struct_syntax = KeyPress::WithModifiers {
key: Key::SpecialKey(SpecialKey::Left),
mask: ModifierKeysMask::new().with_alt().with_ctrl(),
};
assert_eq2!(macro_syntax, struct_syntax);
}
}
#[test]
fn test_keypress_function_key() {
{
let macro_syntax = keypress! { @fn FunctionKey::F1 };
let struct_syntax = KeyPress::Plain {
key: Key::FunctionKey(FunctionKey::F1),
};
assert_eq2!(macro_syntax, struct_syntax);
}
{
let macro_syntax =
keypress! { @fn ModifierKeysMask::new().with_shift(), FunctionKey::F1 };
let struct_syntax = KeyPress::WithModifiers {
key: Key::FunctionKey(FunctionKey::F1),
mask: ModifierKeysMask::new().with_shift(),
};
assert_eq2!(macro_syntax, struct_syntax);
}
}
#[test]
fn test_keypress() -> Result<(), ()> {
{
let key_event =
keyevent!(code: KeyCode::Char('x'), modifiers: KeyModifiers::NONE);
let keypress: KeyPress = key_event.try_into()?;
assert_eq2!(
keypress,
KeyPress::Plain {
key: Key::Character('x'),
}
);
}
{
let key_event =
keyevent!(code: KeyCode::Char('x'), modifiers: KeyModifiers::CONTROL);
let converted_keypress: KeyPress = key_event.try_into()?;
assert_eq2!(
converted_keypress,
KeyPress::WithModifiers {
mask: ModifierKeysMask::new().with_ctrl(),
key: Key::Character('x'),
}
);
}
{
let key_event = keyevent!(
code: KeyCode::Char('x'),
modifiers: KeyModifiers::CONTROL | KeyModifiers::ALT
);
let converted_keypress: KeyPress = key_event.try_into()?;
assert_eq2!(
converted_keypress,
KeyPress::WithModifiers {
mask: ModifierKeysMask::new().with_alt().with_ctrl(),
key: Key::Character('x'),
}
);
}
Ok(())
}
}