diff --git a/src/libextra/uuid.rs b/src/libextra/uuid.rs index c3b67ae0a0c..345cf64f128 100644 --- a/src/libextra/uuid.rs +++ b/src/libextra/uuid.rs @@ -488,14 +488,16 @@ impl TotalEq for Uuid { } } -// FIXME #9845: Test these +// FIXME #9845: Test these more thoroughly impl Encodable for Uuid { + /// Encode a UUID as a hypenated string fn encode(&self, e: &mut T) { e.emit_str(self.to_hyphenated_str()); } } impl Decodable for Uuid { + /// Decode a UUID from a string fn decode(d: &mut T) -> Uuid { from_str(d.read_str()).unwrap() } @@ -785,6 +787,20 @@ mod test { assert!(ub.len() == 16); assert!(! ub.iter().all(|&b| b == 0)); } + + #[test] + fn test_serialize_round_trip() { + use std; + use ebml; + use serialize::{Encodable, Decodable}; + + let u = Uuid::new_v4(); + let bytes = do std::io::with_bytes_writer |wr| { + u.encode(&mut ebml::writer::Encoder(wr)); + }; + let u2 = Decodable::decode(&mut ebml::reader::Decoder(ebml::reader::Doc(@bytes))); + assert_eq!(u, u2); + } } #[cfg(test)]