From 4d651343069d344b0af668f898db63de475463a1 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Thu, 9 Aug 2018 02:36:30 +0200 Subject: Parse a `Trigger`, or sequence of `HeadphoneButton`s So cool! I love parser combinators. --- src/lib.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 7269767..a8128c5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -61,6 +61,14 @@ where ) } +fn trigger() -> impl Parser +where + I: Stream, + I::Error: ParseError, +{ + many1(headphone_button()) +} + #[cfg(test)] mod tests { @@ -89,4 +97,16 @@ mod tests { assert_eq!(result, Ok(HeadphoneButton::Play)); } + + #[test] + fn trigger_parses_headphone_button_sequence() { + let text = ""; + let result = trigger().parse(text).map(|t| t.0); + + assert_eq!(result, Ok(vec![ + HeadphoneButton::Up, + HeadphoneButton::Down, + HeadphoneButton::Play, + ])); + } } -- cgit v1.2.3