diff options
Diffstat (limited to 'src/parser.rs')
| -rw-r--r-- | src/parser.rs | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/parser.rs b/src/parser.rs index e198ee3..3f3d7b9 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1495,6 +1495,106 @@ cmd <play> /usr/bin/say hello } #[test] + fn map_group_allows_initial_whitespace() { + let text = " +map <play> x +"; + let result = map_group().easy_parse(text).map(|t| t.0); + + let mut maps: MapCollection = HashMap::new(); + maps.insert( + vec![HeadphoneButton::Up], + MapAction { + action: Action::Map( + vec![KeyboardKeyWithModifiers::new( + KeyboardKey::NXKey(key_code::NX_KEYTYPE_SOUND_UP), + vec![], + )] + ), + kind: MapKind::Map, + }, + ); + maps.insert( + vec![HeadphoneButton::Play], + MapAction { + action: Action::Map( + vec![KeyboardKeyWithModifiers::new( + KeyboardKey::Character(Character::new('x')), + vec![], + )] + ), + kind: MapKind::Map, + }, + ); + maps.insert( + vec![HeadphoneButton::Down], + MapAction { + action: Action::Map( + vec![KeyboardKeyWithModifiers::new( + KeyboardKey::NXKey(key_code::NX_KEYTYPE_SOUND_DOWN), + vec![], + )] + ), + kind: MapKind::Map, + }, + ); + let expected = MapGroup { + maps: maps, + modes: HashMap::new(), + }; + + assert_eq!(result, Ok(expected)); + } + + #[test] + fn map_group_allows_initial_comment_lines() { + let text = "# A comment + +cmd <down> echo test +"; + let result = map_group().easy_parse(text).map(|t| t.0); + + let mut maps: MapCollection = HashMap::new(); + maps.insert( + vec![HeadphoneButton::Up], + MapAction { + action: Action::Map( + vec![KeyboardKeyWithModifiers::new( + KeyboardKey::NXKey(key_code::NX_KEYTYPE_SOUND_UP), + vec![], + )] + ), + kind: MapKind::Map, + }, + ); + maps.insert( + vec![HeadphoneButton::Play], + MapAction { + action: Action::Map( + vec![KeyboardKeyWithModifiers::new( + KeyboardKey::NXKey(key_code::NX_KEYTYPE_PLAY), + vec![], + )] + ), + kind: MapKind::Map, + }, + ); + maps.insert( + vec![HeadphoneButton::Down], + MapAction { + action: Action::String("echo test".to_owned()), + kind: MapKind::Command, + }, + ); + let expected = MapGroup { + maps: maps, + modes: HashMap::new(), + }; + + assert_eq!(result, Ok(expected)); + } + + #[test] fn map_group_empty_input_does_not_fail() { let text = ""; let result = map_group().easy_parse(text).map(|t| t.0); |
