diff --git a/src/commands/controlling_playback/seekcur.rs b/src/commands/controlling_playback/seekcur.rs index 470f75a1..7ebc6fda 100644 --- a/src/commands/controlling_playback/seekcur.rs +++ b/src/commands/controlling_playback/seekcur.rs @@ -31,9 +31,8 @@ impl CommandRequest<'_> for SeekCurRequest { fn serialize(&self) -> String { let time_str = match self.mode { SeekMode::Absolute => format!("{}", self.time), - SeekMode::Relative if self.time >= 0.0 => format!("+{}", self.time), - SeekMode::Relative => format!("-{}", -self.time), - SeekMode::RelativeReverse => unimplemented!(), // TODO: should this happen? + SeekMode::Relative => format!("+{}", self.time), + SeekMode::RelativeReverse => format!("-{}", self.time), }; format!("{} {}", Self::COMMAND, time_str) @@ -45,6 +44,8 @@ impl CommandRequest<'_> for SeekCurRequest { None => return Err(RequestParserError::UnexpectedEOF), }; + debug_assert!(parts.next().is_none()); + // TODO: DRY let (mode, time) = match time_raw { t if t.starts_with('+') => ( @@ -54,8 +55,8 @@ impl CommandRequest<'_> for SeekCurRequest { .map_err(|_| RequestParserError::SyntaxError(0, t.to_owned()))?, ), t if t.starts_with('-') => ( - SeekMode::Relative, - -t[1..] + SeekMode::RelativeReverse, + t[1..] .parse::() .map_err(|_| RequestParserError::SyntaxError(0, t.to_owned()))?, ), @@ -66,7 +67,7 @@ impl CommandRequest<'_> for SeekCurRequest { ), }; - debug_assert!(parts.next().is_none()); + debug_assert!(time >= 0.0); Ok(SeekCurRequest { mode, time }) }