91 lines
2.2 KiB
Rust
91 lines
2.2 KiB
Rust
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::<S>(expect).unwrap();
|
|
assert_eq!(de_s1, s1);
|
|
}
|
|
}
|