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); | 
