grapple_utils 0.2.0

A collection of utilities for Rust development.
Documentation
use crate::b32x;

use super::Result;
use super::Scheme;

pub struct SchemeB32;

impl Scheme for SchemeB32 {
    #[inline]
    fn encode(&self, content: impl AsRef<[u8]>) -> String {
        b32x::encode(content)
    }

    #[inline]
    fn try_decode(&self, content: &str) -> Result<Vec<u8>> {
        Ok(b32x::decode(content)?)
    }
}

// region:    --- Tests

#[cfg(test)]
mod tests {
    use crate::cuuid::Result;

    use uuid::Uuid;

    use crate::cuuid::CUuid;

    const V4_ENCODED: &str = "3RH05RCGI11J3BO6O9GN2LFG98";
    const V7_ENCODED: &str = "06BG6S1E5LRE73397EQUIGTIK8";
    const C: CUuid = CUuid::B32;

    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(())
    }
}
// endregion: --- Tests