From 447f666ff784a7812d5b834f92368f6160a1a207 Mon Sep 17 00:00:00 2001 From: Ziyang Hu Date: Wed, 9 Nov 2022 18:26:01 +0800 Subject: [PATCH] fixes #7: UUID in keys --- src/data/memcmp.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/data/memcmp.rs b/src/data/memcmp.rs index 7e78f081..ad0ba0d6 100644 --- a/src/data/memcmp.rs +++ b/src/data/memcmp.rs @@ -54,7 +54,7 @@ pub(crate) trait MemCmpEncoder: Write { self.write_u16::(s_h).unwrap(); self.write_u16::(s_m).unwrap(); self.write_u32::(s_l).unwrap(); - self.encode_bytes(s_rest) + self.write_all(s_rest.as_ref()).unwrap(); } DataValue::Regex(rx) => { self.write_u8(REGEX_TAG).unwrap(); @@ -279,9 +279,10 @@ impl MemCmpEncoder for T {} #[cfg(test)] mod tests { use smartstring::SmartString; + use uuid::Uuid; use crate::data::memcmp::{decode_bytes, MemCmpEncoder}; - use crate::data::value::{DataValue, Num}; + use crate::data::value::{DataValue, Num, UuidWrapper}; #[test] fn encode_decode_num() { @@ -320,6 +321,18 @@ mod tests { assert_eq!(collected, collected_copy); } + #[test] + fn test_encode_decode_uuid() { + let uuid = DataValue::Uuid(UuidWrapper( + Uuid::parse_str("dd85b19a-5fde-11ed-a88e-1774a7698039").unwrap(), + )); + let mut encoder = vec![]; + encoder.encode_datavalue(&uuid); + let (decoded, remaining) = DataValue::decode_from_key(&encoder); + assert_eq!(decoded, uuid); + assert!(remaining.is_empty()); + } + #[test] fn encode_decode_bytes() { let target = b"Lorem ipsum dolor sit amet, consectetur adipiscing elit...";