From cd43352e0d286064d9bbb3c307485d2a6ad371ae Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Thu, 7 May 2026 11:40:19 -0500 Subject: [PATCH] Add response deserialization test helper --- src/command/macros.rs | 17 ++++++----------- src/command/mod.rs | 10 ++++++++++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/command/macros.rs b/src/command/macros.rs index f21dd9d..e847e5d 100644 --- a/src/command/macros.rs +++ b/src/command/macros.rs @@ -102,7 +102,7 @@ pub(crate) use range_response; #[cfg(test)] mod tests { - use claims::{assert_none, assert_some_eq}; + use claims::{assert_matches, assert_none, assert_some_eq}; use tokio_util::bytes::BytesMut; use crate::{ @@ -198,8 +198,7 @@ mod tests { } mod range_response { - use claims::assert_matches; - use tokio_util::bytes::Bytes; + use crate::command::test::deserialize; use super::*; @@ -223,30 +222,26 @@ mod tests { #[test] fn deserializes_valid_response() { - let response = deserialize(b"0").unwrap(); + let response = deserialize::(b"0").unwrap(); assert_eq!(response, U8RangeParam(0)); } #[test] fn invalid_utf8() { - let err = deserialize(&[0, 159]).unwrap_err(); + let err = deserialize::(&[0, 159]).unwrap_err(); assert_matches!(err, ParamError::Utf8Error(_)); } #[test] fn invalid_integer() { - let err = deserialize(b"a").unwrap_err(); + let err = deserialize::(b"a").unwrap_err(); assert_matches!(err, ParamError::Parse(_)); } #[test] fn out_of_range() { - let err = deserialize(b"20").unwrap_err(); + let err = deserialize::(b"20").unwrap_err(); assert_matches!(err, ParamError::Invalid(20)); } - - fn deserialize>(val: &'static T) -> Result { - U8RangeParam::deserialize(&[Bytes::from(val.as_ref())]) - } } } diff --git a/src/command/mod.rs b/src/command/mod.rs index b5d06bf..ce30109 100644 --- a/src/command/mod.rs +++ b/src/command/mod.rs @@ -78,3 +78,13 @@ impl<'a> ParamBuffer<'a> { self.0.extend_from_slice(bytes); } } + +#[cfg(test)] +pub mod test { + use super::*; + + /// Shorthand for commands to deserialize a response from raw bytes + pub fn deserialize>(val: &'static T) -> Result { + R::deserialize(&[Bytes::from(val.as_ref())]) + } +} -- 2.51.2