diff --git a/crates/tor-netdoc/src/types/misc.rs b/crates/tor-netdoc/src/types/misc.rs index 99d44c3eb..809862338 100644 --- a/crates/tor-netdoc/src/types/misc.rs +++ b/crates/tor-netdoc/src/types/misc.rs @@ -511,6 +511,23 @@ mod test { assert!("Mi43MTgyOA==".parse::()?.check_len(7..8).is_ok()); assert_eq!("Mg==".parse::()?.as_bytes(), &b"2"[..]); assert!("Mg==".parse::()?.check_len(1..2).is_ok()); + + assert_eq!("".parse::()?.as_bytes(), b""); + assert!("=".parse::().is_err()); + assert!("==".parse::().is_err()); + assert!("B".parse::().is_err()); + assert!("B=".parse::().is_err()); + assert!("B==".parse::().is_err()); + assert_eq!("Bg".parse::()?.as_bytes(), b"\x06"); + assert_eq!("Bg=".parse::()?.as_bytes(), b"\x06"); + assert_eq!("Bg==".parse::()?.as_bytes(), b"\x06"); + assert_eq!("BCg".parse::()?.as_bytes(), b"\x04\x28"); + assert_eq!("BCg=".parse::()?.as_bytes(), b"\x04\x28"); + assert!("BCg==".parse::().is_err()); + assert_eq!("BCDE".parse::()?.as_bytes(), b"\x04\x20\xc4"); + assert!("BCDE=".parse::().is_err()); + assert!("BCDE==".parse::().is_err()); + // Test parsing failures: // Invalid character. assert!("Mi43!!!!!!".parse::().is_err());