use super::Result;
use super::Scheme;
use crate::b64u;
pub struct SchemeB64;
impl Scheme for SchemeB64 {
#[inline]
fn encode(&self, content: impl AsRef<[u8]>) -> String {
b64u::encode(content)
}
#[inline]
fn try_decode(&self, content: &str) -> Result<Vec<u8>> {
Ok(b64u::decode(content)?)
}
}
#[cfg(test)]
mod tests {
use crate::cuuid::Result;
use uuid::Uuid;
use crate::cuuid::CUuid;
const V4_ENCODED: &str = "HuIC7ZCQQzGvBsJhcVXwSg";
const V7_ENCODED: &str = "AZcDcC4tduOMaTu16UOyog";
const C: CUuid = CUuid::B64;
fn get_v7() -> Uuid {
Uuid::parse_str("01970370-2e2d-76e3-8c69-3bb5e943b2a2").unwrap()
}
fn get_v4() -> Uuid {
Uuid::parse_str("1ee202ed-9090-4331-af06-c2617155f04a").unwrap()
}
#[test]
fn test_uuid_v7_encode() -> Result<()> {
let fx_id = get_v7();
let encoded = C.encode(fx_id);
assert_eq!(encoded, V7_ENCODED);
Ok(())
}
#[test]
fn test_uuid_v7_decode() -> Result<()> {
let fx_id = get_v7();
let decoded = C.decode(V7_ENCODED);
assert_eq!(decoded, fx_id);
Ok(())
}
#[test]
fn test_uuid_v4_encode() -> Result<()> {
let fx_id = get_v4();
let encoded = C.encode(fx_id);
assert_eq!(encoded, V4_ENCODED);
Ok(())
}
#[test]
fn test_uuid_v4_decode() -> Result<()> {
let fx_id = get_v4();
let decoded = C.decode(V4_ENCODED);
assert_eq!(decoded, fx_id);
Ok(())
}
}