From a654057807593971e9b2ae12ba371549a1c8f3a0 Mon Sep 17 00:00:00 2001 From: Adrian Tombu <adrian@ystorian.com> Date: Wed, 10 Jul 2024 12:25:08 +0000 Subject: [PATCH] Move to a lowercase alphabet Signed-off-by: Adrian Tombu <adrian@ystorian.com> --- src/base32.rs | 53 ++++++++++++++++++++++++++++++--------------------- src/lib.rs | 40 +++++++++++++++++++------------------- src/uuid.rs | 2 +- 3 files changed, 52 insertions(+), 43 deletions(-) diff --git a/src/base32.rs b/src/base32.rs index d759e00..c65646e 100644 --- a/src/base32.rs +++ b/src/base32.rs @@ -3,23 +3,23 @@ use core::fmt; /// Length of a string-encoded Ulys pub const ULYS_LEN: usize = 26; -const ALPHABET: &[u8; 32] = b"0123456789ABCDEFGHJKMNPQRSTVWXYZ"; +const ALPHABET: &[u8; 32] = b"0123456789abcdefghjkmnpqrstvwxyz"; const NO_VALUE: u8 = 255; const LOOKUP: [u8; 256] = [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 255, 255, 255, - 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, 255, 18, 19, 255, 20, 21, 255, 22, 23, 24, - 25, 26, 255, 27, 28, 29, 30, 31, 255, 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, - 255, 18, 19, 255, 20, 21, 255, 22, 23, 24, 25, 26, 255, 27, 28, 29, 30, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 10, 11, + 12, 13, 14, 15, 16, 17, 255, 18, 19, 255, 20, 21, 255, 22, 23, 24, 25, 26, 255, 27, 28, 29, 30, + 31, 255, 255, 255, 255, 255, 255, 10, 11, 12, 13, 14, 15, 16, 17, 255, 18, 19, 255, 20, 21, + 255, 22, 23, 24, 25, 26, 255, 27, 28, 29, 30, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, ]; /// Generator code for `LOOKUP` @@ -148,12 +148,12 @@ mod tests { #[test] fn test_valid() { - let val = 0x41414141414141414141414141414141; - assert_eq!(decode("21850M2GA1850M2GA1850M2GA1").unwrap(), val); - assert_eq!(encode(val), "21850M2GA1850M2GA1850M2GA1"); + let val = 0x4141_4141_4141_4141_4141_4141_4141_4141; + assert_eq!(decode("21850m2ga1850m2ga1850m2ga1").unwrap(), val); + assert_eq!(encode(val), "21850m2ga1850m2ga1850m2ga1"); - let val = 0x4d4e385051444a59454234335a413756; - let enc = "2D9RW50MA499CMAGHM6DD42DTP"; + let val = 0x4d4e_3850_5144_4a59_4542_3433_5a41_3756; + let enc = "2d9rw50ma499cmaghm6dd42dtp"; let lower = enc.to_lowercase(); assert_eq!(encode(val), enc); assert_eq!(decode(enc).unwrap(), val); @@ -162,43 +162,52 @@ mod tests { #[test] fn test_length() { - assert_eq!(encode(0xffffffffffffffffffffffffffffffff).len(), ULYS_LEN); - assert_eq!(encode(0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f).len(), ULYS_LEN); - assert_eq!(encode(0x00000000000000000000000000000000).len(), ULYS_LEN); + assert_eq!( + encode(0xffff_ffff_ffff_ffff_ffff_ffff_ffff_ffff).len(), + ULYS_LEN + ); + assert_eq!( + encode(0x0f0f_0f0f_0f0f_0f0f_0f0f_0f0f_0f0f_0f0f).len(), + ULYS_LEN + ); + assert_eq!( + encode(0x0000_0000_0000_0000_0000_0000_0000_0000).len(), + ULYS_LEN + ); assert_eq!(decode(""), Err(DecodeError::InvalidLength)); assert_eq!( - decode("2D9RW50MA499CMAGHM6DD42DT"), + decode("2d9rw50ma499cmaghm6dd42dt"), Err(DecodeError::InvalidLength) ); assert_eq!( - decode("2D9RW50MA499CMAGHM6DD42DTPP"), + decode("2d9rw50ma499cmaghm6dd42dtpP"), Err(DecodeError::InvalidLength) ); } #[test] fn test_chars() { - for ref c in encode(0xffffffffffffffffffffffffffffffff).bytes() { + for ref c in encode(0xffff_ffff_ffff_ffff_ffff_ffff_ffff_ffff).bytes() { assert!(ALPHABET.contains(c)); } - for ref c in encode(0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f).bytes() { + for ref c in encode(0x0f0f_0f0f_0f0f_0f0f_0f0f_0f0f_0f0f_0f0f).bytes() { assert!(ALPHABET.contains(c)); } - for ref c in encode(0x00000000000000000000000000000000).bytes() { + for ref c in encode(0x0000_0000_0000_0000_0000_0000_0000_0000).bytes() { assert!(ALPHABET.contains(c)); } assert_eq!( - decode("2D9RW50[A499CMAGHM6DD42DTP"), + decode("2d9rw50[a499cmaghm6dd42dtp"), Err(DecodeError::InvalidChar) ); assert_eq!( - decode("2D9RW50LA499CMAGHM6DD42DTP"), + decode("2d9rw50la499cmaghm6dd42dtp"), Err(DecodeError::InvalidChar) ); assert_eq!( - decode("2D9RW50IA499CMAGHM6DD42DTP"), + decode("2d9rw50ia499cmaghm6dd42dtp"), Err(DecodeError::InvalidChar) ); } diff --git a/src/lib.rs b/src/lib.rs index e9cb1db..da20de6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -90,7 +90,7 @@ impl Ulys { /// ```rust /// use ulys::Ulys; /// - /// let ulys = Ulys::from_string("01D39ZY06FGSCTVN4T2V9PKHFZ").unwrap(); + /// let ulys = Ulys::from_string("01d39zy06fgsctvn4t2v9pkhfz").unwrap(); /// /// let ulys2 = Ulys::from_parts(ulys.timestamp_ms(), ulys.random()); /// @@ -104,14 +104,14 @@ impl Ulys { /// Creates a Ulys from a Crockford Base32 encoded string /// - /// An DecodeError will be returned when the given string is not formatted + /// An `DecodeError` will be returned when the given string is not formatted /// properly. /// /// # Example /// ```rust /// use ulys::Ulys; /// - /// let text = "01D39ZY06FGSCTVN4T2V9PKHFZ"; + /// let text = "01d39zy06fgsctvn4t2v9pkhfz"; /// let result = Ulys::from_string(text); /// /// assert!(result.is_ok()); @@ -168,7 +168,7 @@ impl Ulys { /// ```rust /// use ulys::Ulys; /// - /// let text = "01D39ZY06FGSCTVN4T2V9PKHFZ"; + /// let text = "01d39zy06fgsctvn4t2v9pkhfz"; /// let ulys = Ulys::from_string(text).unwrap(); /// let ulys_next = ulys.increment().unwrap(); /// @@ -184,11 +184,11 @@ impl Ulys { /// ```rust /// use ulys::Ulys; /// - /// let text = "01D39ZY06FGSCTVN4T2V9PKHFZ"; + /// let text = "01d39zy06fgsctvn4t2v9pkhfz"; /// let ulys = Ulys::from_string(text).unwrap(); /// /// let mut buf = [0; ulys::ULYS_LEN]; - /// let new_text = ulys.to_str(&mut buf).unwrap(); + /// let new_text = ulys.array_to_str(&mut buf); /// /// assert_eq!(new_text, text); /// ``` @@ -205,7 +205,7 @@ impl Ulys { /// ```rust /// use ulys::Ulys; /// - /// let text = "01D39ZY06FGSCTVN4T2V9PKHFZ"; + /// let text = "01d39zy06fgsctvn4t2v9pkhfz"; /// let ulys = Ulys::from_string(text).unwrap(); /// /// let mut buf = [0; ulys::ULYS_LEN]; @@ -224,7 +224,7 @@ impl Ulys { /// ```rust /// use ulys::Ulys; /// - /// let text = "01D39ZY06FGSCTVN4T2V9PKHFZ"; + /// let text = "01d39zy06fgsctvn4t2v9pkhfz"; /// let ulys = Ulys::from_string(text).unwrap(); /// /// assert_eq!(&ulys.to_string(), text); @@ -276,7 +276,7 @@ impl Ulys { /// /// assert_eq!( /// ulys.to_string(), - /// "7ZZZZZZZZZZZZZZZZZZZZZZZZZ" + /// "7zzzzzzzzzzzzzzzzzzzzzzzzz" /// ); /// ``` pub const fn from_bytes(bytes: [u8; 16]) -> Ulys { @@ -289,7 +289,7 @@ impl Ulys { /// ``` /// use ulys::Ulys; /// - /// let text = "7ZZZZZZZZZZZZZZZZZZZZZZZZZ"; + /// let text = "7zzzzzzzzzzzzzzzzzzzzzzzzz"; /// let ulys = Ulys::from_string(text).unwrap(); /// /// assert_eq!(ulys.to_bytes(), [0xFF; 16]); @@ -369,35 +369,35 @@ mod tests { #[test] fn test_static() { - let s = Ulys(0x41414141414141414141414141414141).to_string(); + let s = Ulys(0x4141_4141_4141_4141_4141_4141_4141_4141).to_string(); let u = Ulys::from_string(&s).unwrap(); - assert_eq!(&s, "21850M2GA1850M2GA1850M2GA1"); - assert_eq!(u.0, 0x41414141414141414141414141414141); + assert_eq!(&s, "21850m2ga1850m2ga1850m2ga1"); + assert_eq!(u.0, 0x4141_4141_4141_4141_4141_4141_4141_4141); } #[test] fn test_increment() { - let ulys = Ulys::from_string("01BX5ZZKBKAZZZZZZZZZZZZZZZ").unwrap(); + let ulys = Ulys::from_string("01bx5zzkbkazzzzzzzzzzzzzzz").unwrap(); let ulys = ulys.increment().unwrap(); - assert_eq!("01BX5ZZKBKB000000000000000", ulys.to_string()); + assert_eq!("01bx5zzkbkb000000000000000", ulys.to_string()); - let ulys = Ulys::from_string("01BX5ZZKBKZZZZZZZZZZZZZZZX").unwrap(); + let ulys = Ulys::from_string("01bx5zzkbkzzzzzzzzzzzzzzzx").unwrap(); let ulys = ulys.increment().unwrap(); - assert_eq!("01BX5ZZKBKZZZZZZZZZZZZZZZY", ulys.to_string()); + assert_eq!("01bx5zzkbkzzzzzzzzzzzzzzzy", ulys.to_string()); let ulys = ulys.increment().unwrap(); - assert_eq!("01BX5ZZKBKZZZZZZZZZZZZZZZZ", ulys.to_string()); + assert_eq!("01bx5zzkbkzzzzzzzzzzzzzzzz", ulys.to_string()); assert!(ulys.increment().is_none()); } #[test] fn test_increment_overflow() { - let ulys = Ulys(u128::max_value()); + let ulys = Ulys(u128::MAX); assert!(ulys.increment().is_none()); } #[test] fn can_into_thing() { - let ulys = Ulys::from_str("01FKMG6GAG0PJANMWFN84TNXCD").unwrap(); + let ulys = Ulys::from_str("01fkmg6gag0pjanmwfn84tnxcd").unwrap(); let s: String = ulys.into(); let u: u128 = ulys.into(); let uu: (u64, u64) = ulys.into(); diff --git a/src/uuid.rs b/src/uuid.rs index 4ef71df..039c98e 100644 --- a/src/uuid.rs +++ b/src/uuid.rs @@ -31,7 +31,7 @@ mod test { #[test] fn uuid_str_cycle() { let uuid_txt = "771a3bce-02e9-4428-a68e-b1e7e82b7f9f"; - let ulys_txt = "3Q38XWW0Q98GMAD3NHWZM2PZWZ"; + let ulys_txt = "3q38xww0q98gmad3nhwzm2pzwz"; let ulys: Ulys = Uuid::parse_str(uuid_txt).unwrap().into(); assert_eq!(ulys.to_string(), ulys_txt);