| use base64::{ |
| alphabet::URL_SAFE, engine::general_purpose::PAD, engine::general_purpose::STANDARD, *, |
| }; |
| |
| fn compare_encode(expected: &str, target: &[u8]) { |
| assert_eq!(expected, STANDARD.encode(target)); |
| } |
| |
| #[test] |
| fn encode_all_ascii() { |
| let mut ascii = Vec::<u8>::with_capacity(128); |
| |
| for i in 0..128 { |
| ascii.push(i); |
| } |
| |
| compare_encode( |
| "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7P\ |
| D0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8\ |
| =", |
| &ascii, |
| ); |
| } |
| |
| #[test] |
| fn encode_all_bytes() { |
| let mut bytes = Vec::<u8>::with_capacity(256); |
| |
| for i in 0..255 { |
| bytes.push(i); |
| } |
| bytes.push(255); //bug with "overflowing" ranges? |
| |
| compare_encode( |
| "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7P\ |
| D0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn\ |
| +AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6\ |
| /wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==", |
| &bytes, |
| ); |
| } |
| |
| #[test] |
| fn encode_all_bytes_url() { |
| let mut bytes = Vec::<u8>::with_capacity(256); |
| |
| for i in 0..255 { |
| bytes.push(i); |
| } |
| bytes.push(255); //bug with "overflowing" ranges? |
| |
| assert_eq!( |
| "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0\ |
| -P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn\ |
| -AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq\ |
| -wsbKztLW2t7i5uru8vb6_wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t_g4eLj5OXm5-jp6uvs7e7v8PHy\ |
| 8_T19vf4-fr7_P3-_w==", |
| &engine::GeneralPurpose::new(&URL_SAFE, PAD).encode(&bytes) |
| ); |
| } |