use tui_orchestrator::input::{Key, KeyCode, KeyModifiers}; #[test] fn test_key_char() { let key = Key::char('a'); assert_eq!(key.code, KeyCode::Char('a')); assert!(key.modifiers.is_empty()); } #[test] fn test_key_ctrl() { let key = Key::ctrl('s'); assert_eq!(key.code, KeyCode::Char('s')); assert!(key.modifiers.control); assert!(!key.modifiers.alt); assert!(!key.modifiers.shift); } #[test] fn test_key_new() { let key = Key::new(KeyCode::Enter, KeyModifiers::new().with_alt()); assert_eq!(key.code, KeyCode::Enter); assert!(key.modifiers.alt); } #[test] fn test_key_from_keycode() { let key = Key::from(KeyCode::Esc); assert_eq!(key.code, KeyCode::Esc); assert!(key.modifiers.is_empty()); } #[test] fn test_key_display_char() { let key = Key::char('x'); let display = key.display_string(); assert!(display.contains('x')); } #[test] fn test_key_display_ctrl() { let key = Key::ctrl('c'); let display = key.display_string(); assert!(display.contains("Ctrl+")); assert!(display.contains('c')); } #[test] fn test_key_display_all_modifiers() { let key = Key::new( KeyCode::Char('a'), KeyModifiers::new().with_control().with_alt().with_shift(), ); let display = key.display_string(); assert!(display.contains("Ctrl+")); assert!(display.contains("Alt+")); assert!(display.contains("Shift+")); } #[test] fn test_key_display_special() { let key = Key::new(KeyCode::F(5), KeyModifiers::new()); let display = key.display_string(); assert!(display.contains("F5")); } #[test] fn test_key_modifiers_new() { let mods = KeyModifiers::new(); assert!(!mods.control); assert!(!mods.alt); assert!(!mods.shift); } #[test] fn test_key_modifiers_builders() { let mods = KeyModifiers::new().with_control().with_shift(); assert!(mods.control); assert!(!mods.alt); assert!(mods.shift); } #[test] fn test_key_modifiers_is_empty() { assert!(KeyModifiers::new().is_empty()); assert!(!KeyModifiers::new().with_control().is_empty()); } #[test] fn test_key_equality() { let k1 = Key::char('a'); let k2 = Key::char('a'); let k3 = Key::ctrl('a'); assert_eq!(k1, k2); assert_ne!(k1, k3); }