use uuid::Uuid; use short_uuid::{Base58, Base58Flickr, Base62, Base64, Base64Url, Base90Cookie}; const TEST_BTS: [u8; 16] = [ 0xa1, 0xa2, 0xa3, 0xa4, 0xb1, 0xb2, 0xc1, 0xc2, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, ]; #[test] fn encode() { let id = Uuid::from_bytes(TEST_BTS); assert_eq!(id.encode_base58(), "LxeUnqNwLWQUv2JDtUgQij", "base58"); assert_eq!( id.encode_base58_flickr(), "kXDtMQnWkvptV2idTtFpHJ", "base58_flickr" ); assert_eq!(id.encode_base62(), "E5AFntbcXX94NUWEAnyKso", "base62"); assert_eq!(id.encode_base64(), "ChoqOksbLBwtHS09TV1tfY", "base64"); assert_eq!( id.encode_base64_url(), "ChoqOksbLBwtHS09TV1tfY", "base64_url" ); assert_eq!( id.encode_base90_cookie(), "f[C/Q&zL=$&/`K7o~DT!", "base90_cookie" ); } #[test] fn decode() { let id = Uuid::from_bytes(TEST_BTS); assert_eq!( Uuid::decode_base58("LxeUnqNwLWQUv2JDtUgQij").unwrap(), id, "base58" ); assert_eq!( Uuid::decode_base58_flickr("kXDtMQnWkvptV2idTtFpHJ").unwrap(), id, "base58_flickr" ); assert_eq!( Uuid::decode_base62("E5AFntbcXX94NUWEAnyKso").unwrap(), id, "base62" ); assert_eq!( Uuid::decode_base64("ChoqOksbLBwtHS09TV1tfY").unwrap(), id, "base64" ); assert_eq!( Uuid::decode_base64_url("ChoqOksbLBwtHS09TV1tfY").unwrap(), id, "base64_url" ); assert_eq!( Uuid::decode_base90_cookie("f[C/Q&zL=$&/`K7o~DT!").unwrap(), id, "base90_cookie" ); } #[cfg(feature = "serde")] mod serialization { use super::*; use serde::{Deserialize, Serialize}; #[test] fn serialization() { #[derive(Debug, Serialize, Deserialize, PartialEq, Eq)] struct S { #[serde(with = "short_uuid::serde::base58")] id: Uuid, } let s1 = S { id: Uuid::from_bytes(TEST_BTS), }; let expect = r#"{"id":"LxeUnqNwLWQUv2JDtUgQij"}"#; let json = serde_json::to_string(&s1).unwrap(); assert_eq!(json, expect); let de_s1 = serde_json::from_str::(expect).unwrap(); assert_eq!(de_s1, s1); } }