mirror of
https://github.com/inzerosight/ZWUS-rs.git
synced 2026-09-18 08:05:46 +00:00
Add ZWUS-7 support and default encoding
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1,11 +1,11 @@
|
||||
use zwus::Zwus;
|
||||
|
||||
#[test]
|
||||
fn default_base_is_6() {
|
||||
fn default_base_is_7() {
|
||||
let text = "secret 🦀";
|
||||
let numbers = [0, 72, 101];
|
||||
let encoded_text = Zwus::encode_string_with_base(text, 6);
|
||||
let encoded_numbers = Zwus::encode_number_array_with_base(&numbers, 6);
|
||||
let encoded_text = Zwus::encode_string_with_base(text, 7);
|
||||
let encoded_numbers = Zwus::encode_number_array_with_base(&numbers, 7);
|
||||
|
||||
assert_eq!(Zwus::encode_string(text), encoded_text);
|
||||
assert_eq!(Zwus::decode_to_string(&encoded_text), text);
|
||||
@@ -14,9 +14,9 @@ fn default_base_is_6() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn roundtrip_string_base_3_6_8() {
|
||||
fn roundtrip_string_base_3_6_7() {
|
||||
let text = "secret 🦀 unicode";
|
||||
for base in [3u8, 6, 8] {
|
||||
for base in [3u8, 6, 7] {
|
||||
let encoded = Zwus::encode_string_with_base(text, base);
|
||||
let decoded = Zwus::decode_to_string_with_base(&encoded, base);
|
||||
assert_eq!(decoded, text);
|
||||
@@ -24,9 +24,9 @@ fn roundtrip_string_base_3_6_8() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn roundtrip_number_array_base_3_6_8() {
|
||||
fn roundtrip_number_array_base_3_6_7() {
|
||||
let nums = [0u32, 72, 101, 108, 108, 111, 0x10FFFF];
|
||||
for base in [3u8, 6, 8] {
|
||||
for base in [3u8, 6, 7] {
|
||||
let encoded = Zwus::encode_number_array_with_base(&nums, base);
|
||||
let decoded = Zwus::decode_to_number_array_with_base(&encoded, base);
|
||||
assert_eq!(decoded, nums);
|
||||
@@ -38,6 +38,11 @@ fn decode_ignores_non_zwus_characters() {
|
||||
let hidden = Zwus::encode_string_with_base("secret", 6);
|
||||
let mixed = format!("te{hidden}xt");
|
||||
assert_eq!(Zwus::decode_to_string_with_base(&mixed, 6), "secret");
|
||||
let hidden = Zwus::encode_string_with_base("secret", 7);
|
||||
assert_eq!(
|
||||
Zwus::decode_to_string_with_base(&format!("te{hidden}xt"), 7),
|
||||
"secret"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -45,12 +50,12 @@ fn npm_vectors_decode_to_test123_checkmark() {
|
||||
// Paste encoded outputs from your npm package here:
|
||||
// zwus.encodeString("Test123!✅", 3)
|
||||
// zwus.encodeString("Test123!✅", 6)
|
||||
// zwus.encodeString("Test123!✅", 8)
|
||||
// zwus.encodeString("Test123!✅", 7)
|
||||
//
|
||||
// Keep these as raw strings to preserve invisible chars exactly.
|
||||
let npm_base_3 = r#""#;
|
||||
let npm_base_6 = r#""#;
|
||||
let npm_base_8 = r#""#;
|
||||
let npm_base_7 = "\u{feff}\u{feff}\u{200c}\u{200f}\u{200c}\u{200f}\u{200d}\u{200c}\u{200d}\u{200c}\u{200e}\u{2060}\u{200c}\u{200e}\u{200b}\u{200c}\u{200e}\u{200e}\u{200c}\u{200b}\u{200f}\u{200c}\u{200b}\u{200f}\u{200d}\u{feff}\u{200d}";
|
||||
|
||||
let expected = "Test123!✅";
|
||||
|
||||
@@ -63,11 +68,12 @@ fn npm_vectors_decode_to_test123_checkmark() {
|
||||
"Paste base-6 encoded payload into npm_base_6"
|
||||
);
|
||||
assert!(
|
||||
!npm_base_8.is_empty(),
|
||||
"Paste base-8 encoded payload into npm_base_8"
|
||||
!npm_base_7.is_empty(),
|
||||
"Paste base-7 encoded payload into npm_base_7"
|
||||
);
|
||||
|
||||
assert_eq!(Zwus::decode_to_string_with_base(npm_base_3, 3), expected);
|
||||
assert_eq!(Zwus::decode_to_string_with_base(npm_base_6, 6), expected);
|
||||
assert_eq!(Zwus::decode_to_string_with_base(npm_base_8, 8), expected);
|
||||
assert_eq!(Zwus::decode_to_string_with_base(npm_base_7, 7), expected);
|
||||
assert_eq!(Zwus::encode_string_with_base(expected, 7), npm_base_7);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user