#[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::SHIFT | ModifierKeysMask::CTRL, 'a' };
let struct_syntax = KeyPress::WithModifiers {
key: Key::Character('a'),
mask: ModifierKeysMask::SHIFT | ModifierKeysMask::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::CTRL | ModifierKeysMask::ALT, SpecialKey::Left };
let struct_syntax = KeyPress::WithModifiers {
key: Key::SpecialKey(SpecialKey::Left),
mask: ModifierKeysMask::CTRL | ModifierKeysMask::ALT,
};
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::SHIFT, FunctionKey::F1 };
let struct_syntax = KeyPress::WithModifiers {
key: Key::FunctionKey(FunctionKey::F1),
mask: ModifierKeysMask::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::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::CTRL | ModifierKeysMask::ALT,
key: Key::Character('x'),
}
);
}
Ok(())
}
}